川财证券 费率股票万一,转债百万分之二 费率最低 开户

券商万一免五李魔佛 发表了文章 • 0 个评论 • 415 次浏览 • 2021-04-25 10:18 • 来自相关话题

支持同花顺,支持条件单。
 
因为是小券商,所以平时挂单速度的通道要比网红券商的营业部要快得多。
 
至于费率,也是目前市场最低。
 
费率:股票万一,转债 沪:百万分之二,深:十万分之四。
 
两融利率:默认5.99%,最低5.4%
 
基金ETF费率万0.5。
 












感兴趣的读者朋友可以稍微下方二维码开户。备注:开户 查看全部
支持同花顺,支持条件单。
 
因为是小券商,所以平时挂单速度的通道要比网红券商的营业部要快得多。
 
至于费率,也是目前市场最低。
 
费率:股票万一,转债 沪:百万分之二,深:十万分之四。
 
两融利率:默认5.99%,最低5.4%
 
基金ETF费率万0.5。
 

vVh2BGoVPr.png



qAF2Py9qxD.png


感兴趣的读者朋友可以稍微下方二维码开户。备注:开户

基金常见误区

股票李魔佛 发表了文章 • 0 个评论 • 214 次浏览 • 2021-04-23 22:27 • 来自相关话题

1. C类规模一定比A大吗:
错,只能说明大部分情况下是这样,不过实际上查了下相关的基金数据,C类也会比A类的规模大。
比如这两只:


 










 
1. C类规模一定比A大吗:
错,只能说明大部分情况下是这样,不过实际上查了下相关的基金数据,C类也会比A类的规模大。
比如这两只:


 
FxeWy3R0Pf.png



MixQus0VrL.png

 

直接买入 红利增强与易基综债 【2021-04-22】

量化交易李魔佛 发表了文章 • 0 个评论 • 226 次浏览 • 2021-04-22 13:58 • 来自相关话题

试验一下策略的灵敏度。
收盘再来更新一波。
 
### 盘后更新 ##### 
当天两个都埋伏失败。。。看看明天的情况。如果没拉升,平盘卖出,如果暴跌,则7天后选择赎回。
 
试验一下策略的灵敏度。
收盘再来更新一波。
 
### 盘后更新 ##### 
当天两个都埋伏失败。。。看看明天的情况。如果没拉升,平盘卖出,如果暴跌,则7天后选择赎回。
 

pymongo update_one/update_many 返回更新数据的数目

python爬虫李魔佛 发表了文章 • 0 个评论 • 357 次浏览 • 2021-04-21 18:54 • 来自相关话题

比如有以下的python语句
ret = self.doc.update_one({'announcementId':announcementId},{'$setOnInsert':item},upsert=True)

作用是如果某个id不存在时,则把数据插入文档,如果存在,则不进行任何操作。
 
那么ret是操作的返回结果。
我们可以对返回数据进行核对
 
ret.matched_count, ret.modified_count前者是匹配到文档的数目,而后者是修改了文档的个数。
 
  查看全部
比如有以下的python语句
ret = self.doc.update_one({'announcementId':announcementId},{'$setOnInsert':item},upsert=True)

作用是如果某个id不存在时,则把数据插入文档,如果存在,则不进行任何操作。
 
那么ret是操作的返回结果。
我们可以对返回数据进行核对
 
ret.matched_count, ret.modified_count
前者是匹配到文档的数目,而后者是修改了文档的个数。
 
 

南方聚利160131 开放申购 2021年5月14日

股票李魔佛 发表了文章 • 0 个评论 • 366 次浏览 • 2021-04-21 00:27 • 来自相关话题

当前的溢价率其高,当前溢价率是150%。 
 
大概率是基金公司在做局,让你们进去套利的啦。
 
不过目前该基金的规模在5千万,看起来规模不算特别大,并且是一只债基。
 
跟520弘盈差不多的套路。
当前的溢价率其高,当前溢价率是150%。 
 
大概率是基金公司在做局,让你们进去套利的啦。
 
不过目前该基金的规模在5千万,看起来规模不算特别大,并且是一只债基。
 
跟520弘盈差不多的套路。

轻报APP --骗子请注意点

闲聊李魔佛 发表了文章 • 0 个评论 • 218 次浏览 • 2021-04-15 19:34 • 来自相关话题

所谓的垃圾创业公司,什么业务都不想出钱,能省就剩,抠到极致,能骗的绝对不花钱。
 
第一次见这种公司。
 
事情缘由:
 
该公司在拉勾上以招聘兼职为由,加你微信,然后借口说已测试一下应聘者的的水平,要求对方写一个爬取一个他们想要爬的网站,而且是用一个第三方的网站 神箭手 的平台代码来写的。 意味着,他可以拿着你的代码直接在上面运行,爬取他们想要的数据。
 
因为他们要的网站我曾经爬过,我直接把数据接了图给他们。 他们就急着要我用神箭手重新写一次。这时我就妥妥地确定他们就是想要空手白狼的人。 然后就拉黑了哦。
 
注意,那个负责人叫王锦锋。 查看全部
所谓的垃圾创业公司,什么业务都不想出钱,能省就剩,抠到极致,能骗的绝对不花钱。
 
第一次见这种公司。
 
事情缘由:
 
该公司在拉勾上以招聘兼职为由,加你微信,然后借口说已测试一下应聘者的的水平,要求对方写一个爬取一个他们想要爬的网站,而且是用一个第三方的网站 神箭手 的平台代码来写的。 意味着,他可以拿着你的代码直接在上面运行,爬取他们想要的数据。
 
因为他们要的网站我曾经爬过,我直接把数据接了图给他们。 他们就急着要我用神箭手重新写一次。这时我就妥妥地确定他们就是想要空手白狼的人。 然后就拉黑了哦。
 
注意,那个负责人叫王锦锋。

本地代码 搜索脚本 python实现

python李魔佛 发表了文章 • 0 个评论 • 230 次浏览 • 2021-04-14 19:34 • 来自相关话题

本来用find+grep可以搞定的,不过如果搜索多个路径和多个规则,写正则可能写过不来
find . -type f -name "*.py" | xargs grep "redis"
上面语句是在py文件中查找redis的字符。
 
 不过如果要在指定多个位置查找,可能要拼接几个管道,并且如果我要几个字符的关系是并集,就是多个关键字要在文本中同时出现,而且不一定在同一行,所以也不好写。
 
所以写了个python脚本,也方便在centos下运行
# -*- coding: utf-8 -*-
# @Time : 2021/4/14 1:46
# @File : search_string_in_folder.py
# @Author : Rocky C@www.30daydo.com

'''
搜索代码脚本
'''
import fire
import glob
import re

# TODO 用PYQT重写一个

PATH_LIST = [r'C:\git\\',r'C:\OtherGit\\',r'C:\OneDrive\viewed_code\\']
POST_FIX = 'py' # 后缀文件
# 关键词
WORDS=[]

EXCLUDE_PATH=[r'C:\OtherGit\cpython']

DEBUG = True

class FileSearcher:

def __init__(self,kw):
self.root_path_list = PATH_LIST
self.default_coding ='utf-8'
self.exception_handle_coding='gbk'
self.kw=[]
if not isinstance(kw,tuple):
kw=(kw,)

for k in kw:
k=k.strip()
self.kw.append(k)

def search(self,file,encoding):
match_dict = dict()

for w in self.kw:
match_dict.setdefault(w, False)

line_number = 0
line_list=list()
with open(file, 'r', encoding=encoding) as fp:

while 1:
try:
line = fp.readline()

except UnicodeDecodeError as e:

if DEBUG:
print(f'Error coding in file {file}')
print(e)

return None,None,None

except Exception as e:
if DEBUG:
print(f'Error in file {file}')
print(e)
break

if not line:
break

line = line.strip()
if not line:
continue

for w in self.kw:
m=re.search(w,line,re.IGNORECASE)
if m:
match_dict.update({w:True})
line_list.append(line_number)

line_number+=1

return True,match_dict.copy(),line_list.copy()

def print_match_result(self,file,line_list,encoding):

with open(file, 'r', encoding=encoding) as fp:
line_number = 0
while 1:
try:
line = fp.readline()
except Exception as e:
if DEBUG:
print(f'Error in file {file}')
print(e)
break

if not line:
break
line=line.strip()

if not line:
continue

if line_number in line_list:
print(f'{file} :: {line_number} ====>\n {line[:50]}\n')

line_number += 1

def run(self):
for path in self.root_path_list:

search_path=path+'**/*.'+POST_FIX

for file in glob.iglob(search_path,recursive=True):

for ex_path in EXCLUDE_PATH:
ex_path=ex_path.replace('\\','')
temp_file=file.replace('\\','')
if ex_path in temp_file:
continue

use_encoding=self.default_coding
encode_proper,match_dict,line_list=self.search(file,use_encoding)

if not encode_proper:
use_encoding = self.exception_handle_coding
encode_proper,match_dict,line_list=self.search(file, use_encoding)

if match_dict is not None and len(match_dict)>0 and all(match_dict.values()):
# print(match_dict.values())
self.print_match_result(file,line_list,use_encoding)
# print(line_list)


def test_error_file():
path=r'C:\git\CodePool\example-code\19-dyn-attr-prop\oscon\schedule2.py'
with open(path,'r',encoding='utf8') as fp:
while 1:
x=fp.readline()
if not x:
break
print(x)

def main(kw):
app = FileSearcher(kw)
app.run()

if __name__ == '__main__':
fire.Fire(main)

运行: python main.py --kw=asyncio,gather
 





  查看全部
本来用find+grep可以搞定的,不过如果搜索多个路径和多个规则,写正则可能写过不来
find . -type f -name "*.py" | xargs grep "redis"

上面语句是在py文件中查找redis的字符。
 
 不过如果要在指定多个位置查找,可能要拼接几个管道,并且如果我要几个字符的关系是并集,就是多个关键字要在文本中同时出现,而且不一定在同一行,所以也不好写。
 
所以写了个python脚本,也方便在centos下运行
# -*- coding: utf-8 -*-
# @Time : 2021/4/14 1:46
# @File : search_string_in_folder.py
# @Author : Rocky C@www.30daydo.com

'''
搜索代码脚本
'''
import fire
import glob
import re

# TODO 用PYQT重写一个

PATH_LIST = [r'C:\git\\',r'C:\OtherGit\\',r'C:\OneDrive\viewed_code\\']
POST_FIX = 'py' # 后缀文件
# 关键词
WORDS=[]

EXCLUDE_PATH=[r'C:\OtherGit\cpython']

DEBUG = True

class FileSearcher:

def __init__(self,kw):
self.root_path_list = PATH_LIST
self.default_coding ='utf-8'
self.exception_handle_coding='gbk'
self.kw=[]
if not isinstance(kw,tuple):
kw=(kw,)

for k in kw:
k=k.strip()
self.kw.append(k)

def search(self,file,encoding):
match_dict = dict()

for w in self.kw:
match_dict.setdefault(w, False)

line_number = 0
line_list=list()
with open(file, 'r', encoding=encoding) as fp:

while 1:
try:
line = fp.readline()

except UnicodeDecodeError as e:

if DEBUG:
print(f'Error coding in file {file}')
print(e)

return None,None,None

except Exception as e:
if DEBUG:
print(f'Error in file {file}')
print(e)
break

if not line:
break

line = line.strip()
if not line:
continue

for w in self.kw:
m=re.search(w,line,re.IGNORECASE)
if m:
match_dict.update({w:True})
line_list.append(line_number)

line_number+=1

return True,match_dict.copy(),line_list.copy()

def print_match_result(self,file,line_list,encoding):

with open(file, 'r', encoding=encoding) as fp:
line_number = 0
while 1:
try:
line = fp.readline()
except Exception as e:
if DEBUG:
print(f'Error in file {file}')
print(e)
break

if not line:
break
line=line.strip()

if not line:
continue

if line_number in line_list:
print(f'{file} :: {line_number} ====>\n {line[:50]}\n')

line_number += 1

def run(self):
for path in self.root_path_list:

search_path=path+'**/*.'+POST_FIX

for file in glob.iglob(search_path,recursive=True):

for ex_path in EXCLUDE_PATH:
ex_path=ex_path.replace('\\','')
temp_file=file.replace('\\','')
if ex_path in temp_file:
continue

use_encoding=self.default_coding
encode_proper,match_dict,line_list=self.search(file,use_encoding)

if not encode_proper:
use_encoding = self.exception_handle_coding
encode_proper,match_dict,line_list=self.search(file, use_encoding)

if match_dict is not None and len(match_dict)>0 and all(match_dict.values()):
# print(match_dict.values())
self.print_match_result(file,line_list,use_encoding)
# print(line_list)


def test_error_file():
path=r'C:\git\CodePool\example-code\19-dyn-attr-prop\oscon\schedule2.py'
with open(path,'r',encoding='utf8') as fp:
while 1:
x=fp.readline()
if not x:
break
print(x)

def main(kw):
app = FileSearcher(kw)
app.run()

if __name__ == '__main__':
fire.Fire(main)

运行: python main.py --kw=asyncio,gather
 

mQm5aIvTh1.png

 

*蓝 灯 * 在目录 AppData\Local\Lantern\replica 下生成的一个巨大数据文件

闲聊李魔佛 发表了文章 • 0 个评论 • 207 次浏览 • 2021-04-13 23:12 • 来自相关话题

在清理磁盘的过程中,发现在C的 AppData下的lantern目录下有个1G多的数据库文件。
AppData\Local\Lantern\replica
storage-cache.db
具体内容不知道是什么。
然后好奇了一下,用进程监控软件监控了一下。
 
发现*蓝*灯*是用golang写的。
 
然后后台不断地跟ask.com 进行通信,估计这个是他们托管的服务器。





 
后台不断地写日志,还有获取某个代理服务器的状态。 查看全部
在清理磁盘的过程中,发现在C的 AppData下的lantern目录下有个1G多的数据库文件。
AppData\Local\Lantern\replica
storage-cache.db
具体内容不知道是什么。
然后好奇了一下,用进程监控软件监控了一下。
 
发现*蓝*灯*是用golang写的。
 
然后后台不断地跟ask.com 进行通信,估计这个是他们托管的服务器。

Procmon64_CaFy6OtMxD.png

 
后台不断地写日志,还有获取某个代理服务器的状态。

万一免五 银河证券 非网红营业部 转债免五低佣金 百万分之五

券商万一免五李魔佛 发表了文章 • 0 个评论 • 2175 次浏览 • 2021-04-13 00:51 • 来自相关话题

目前市面上的银河默认不是免五的,需要找到特定的营业部才能开通。
本营业部非网红营业部,可以一加六拖拉机。以防为了套利时出不去哈。
 
费率万一免五,可转债也是免五,沪市费率百万分之五,深市十万分之五。
 
因为经常会被同行举报,所以优惠会不定期关闭,需要的朋友要抓紧时间开,开了以后即使后面银河关闭了免五的通道,后面的费率还是以你现在开的费率来计算,也是免五的。 
 
需要的朋友可以扫描关注: 备注 : 开户,非诚勿扰。 查看全部
目前市面上的银河默认不是免五的,需要找到特定的营业部才能开通。
本营业部非网红营业部,可以一加六拖拉机。以防为了套利时出不去哈。
 
费率万一免五,可转债也是免五,沪市费率百万分之五,深市十万分之五。
 
因为经常会被同行举报,所以优惠会不定期关闭,需要的朋友要抓紧时间开,开了以后即使后面银河关闭了免五的通道,后面的费率还是以你现在开的费率来计算,也是免五的。 
 
需要的朋友可以扫描关注: 备注 : 开户,非诚勿扰。

绿盟下载官网被黑了?

闲聊李魔佛 发表了文章 • 0 个评论 • 198 次浏览 • 2021-04-10 11:47 • 来自相关话题

以前一个不错的绿色软件下载网站。
现在这样子了。





 
不知道是网站换人了还是被黑了?
以前一个不错的绿色软件下载网站。
现在这样子了。

chrome_8aX2qxmeS9.png

 
不知道是网站换人了还是被黑了?

判读一个函数是不是协程

python李魔佛 发表了文章 • 0 个评论 • 182 次浏览 • 2021-04-09 20:27 • 来自相关话题

传入的是函数名,不需要加入括号:
def check_coroutine(fun):
if iscoroutinefunction(fun):
print('是协程')
else:
print('不是协程')

async def visit_web():
browser = await pyppeteer.launch(
{'headless': False,
'userDataDir': UserDataDir,
'defaultViewport': {'width': 1800, 'height': 1000},
'ignoreDefaultArgs':True,
}
)
page = await browser.newPage()

# 可以在launch下配置
# await page.setViewport({
# "width": 1900,
# "height": 1020
# })


# 先执行下面的JS 再去goto
await page.evaluate(
'''() =>{ Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) }''')
# await page.screenshot({'path': 'test.png', 'fullPage': True})
# await page.pdf({'path': 'test.pdf'})
# await asyncio.sleep(5)

await page.goto(url=URL)

# 这里的js是异步的写法
dimensions = await page.evaluate(
'''
()=>{
return {
width:document.documentElement.clientWidth,
height:document.documentElement.clientHeight,
deviceScaleFactor_:window.devicePixelRatio,
}
}
'''
)

result = await page.evaluate(
'''
()=>{
var title = document.title;
return {title:title};
}
'''

)


await browser.close()

调用:
check_coroutine(visit_web)注意,上面不能用visit_web()

  查看全部
传入的是函数名,不需要加入括号:
def check_coroutine(fun):
if iscoroutinefunction(fun):
print('是协程')
else:
print('不是协程')

async def visit_web():
browser = await pyppeteer.launch(
{'headless': False,
'userDataDir': UserDataDir,
'defaultViewport': {'width': 1800, 'height': 1000},
'ignoreDefaultArgs':True,
}
)
page = await browser.newPage()

# 可以在launch下配置
# await page.setViewport({
# "width": 1900,
# "height": 1020
# })


# 先执行下面的JS 再去goto
await page.evaluate(
'''() =>{ Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) }''')
# await page.screenshot({'path': 'test.png', 'fullPage': True})
# await page.pdf({'path': 'test.pdf'})
# await asyncio.sleep(5)

await page.goto(url=URL)

# 这里的js是异步的写法
dimensions = await page.evaluate(
'''
()=>{
return {
width:document.documentElement.clientWidth,
height:document.documentElement.clientHeight,
deviceScaleFactor_:window.devicePixelRatio,
}
}
'''
)

result = await page.evaluate(
'''
()=>{
var title = document.title;
return {title:title};
}
'''

)


await browser.close()

调用:
check_coroutine(visit_web)
注意,上面不能用visit_web()

 

可转债T+0 零手续费 零费率 免佣金

券商万一免五李魔佛 发表了文章 • 0 个评论 • 311 次浏览 • 2021-04-06 18:26 • 来自相关话题

一般而言,可转债的手续费都会比股票低
 
佣金最低的可以达到沪市百万分之二,也就是买入1百万的可转债,全部费用才2元钱,如果买入1万块,那么手续费才1分钱。 
那么如果你是很抠的人,这里并不是贬义词,在菜市场,你会比较价格,而在证券市场上,为什么不挑选便宜的佣金的券商呢? 而且还有个方法使你下单不用一分钱。
 
看交割单
 

 
券商交割单只是统计到分,也就是一分钱以下是不会收取的,那么买入转债的时候,如果你的交易金额较大,那么可以使用拆单功能,就是把一个大单拆分为多个小单,如果你每个小单小于5千元,那么券商的交割费用系统就会舍弃分钱后面的金额,也就是交易费用原来是 0.003元,但只能取到分钱位置,也就是0.00,后面的3就被舍弃了,这样手续费就是为0了。
 
所以你要做的就是找一个可转债低佣的券商,越低越好,最低的可以到百万分之二,并且没有资金要求,不需要你存个十万八万的。开通即可。
 
需要可以扫描开户:

备注:开户
非诚勿扰。
  查看全部
一般而言,可转债的手续费都会比股票低
 
佣金最低的可以达到沪市百万分之二,也就是买入1百万的可转债,全部费用才2元钱,如果买入1万块,那么手续费才1分钱。 
那么如果你是很抠的人,这里并不是贬义词,在菜市场,你会比较价格,而在证券市场上,为什么不挑选便宜的佣金的券商呢? 而且还有个方法使你下单不用一分钱。
 
看交割单
 

 
券商交割单只是统计到分,也就是一分钱以下是不会收取的,那么买入转债的时候,如果你的交易金额较大,那么可以使用拆单功能,就是把一个大单拆分为多个小单,如果你每个小单小于5千元,那么券商的交割费用系统就会舍弃分钱后面的金额,也就是交易费用原来是 0.003元,但只能取到分钱位置,也就是0.00,后面的3就被舍弃了,这样手续费就是为0了。
 
所以你要做的就是找一个可转债低佣的券商,越低越好,最低的可以到百万分之二,并且没有资金要求,不需要你存个十万八万的。开通即可。
 
需要可以扫描开户:

备注:开户
非诚勿扰。
 

pyppeteer-pdf not support latest version of pypeteer

python爬虫李魔佛 发表了文章 • 0 个评论 • 209 次浏览 • 2021-04-04 18:23 • 来自相关话题

只能用0.0.25版本的pypeteer。
只好下载一个低版本的chrouium放到本地。

或者使用另一个库
https://github.com/shivanshs9/pdfgen-python
 
只能用0.0.25版本的pypeteer。
只好下载一个低版本的chrouium放到本地。

或者使用另一个库
https://github.com/shivanshs9/pdfgen-python
 

pyppeteer禁用自动化提示栏 --enable-automation参数关闭

python爬虫李魔佛 发表了文章 • 0 个评论 • 363 次浏览 • 2021-04-04 14:49 • 来自相关话题

在启动的时候加入一个参数即可: browser = await pyppeteer.launch(
{'headless': False,
'userDataDir': UserDataDir,
'defaultViewport': {'width': 1800, 'height': 1000},
# 'enable-automation':False,
'ignoreDefaultArgs':['--enable-automation'],
}
)
忽略默认参数:
'ignoreDefaultArgs':['--enable-automation'],
即可,
如果需要去除更多的特征,在列表里面加入更多即可。
如果全部不要,那么 就把它设置为True即可。

  查看全部
在启动的时候加入一个参数即可:
    browser = await pyppeteer.launch(
{'headless': False,
'userDataDir': UserDataDir,
'defaultViewport': {'width': 1800, 'height': 1000},
# 'enable-automation':False,
'ignoreDefaultArgs':['--enable-automation'],
}
)

忽略默认参数:
'ignoreDefaultArgs':['--enable-automation'],
即可,
如果需要去除更多的特征,在列表里面加入更多即可。
如果全部不要,那么 就把它设置为True即可。

 

pyppeteer设置浏览器大小

python爬虫李魔佛 发表了文章 • 0 个评论 • 247 次浏览 • 2021-04-04 12:06 • 来自相关话题

在初始化时加入 defaultViewport字典值即可:
browser = await pyppeteer.launch(
{'headless': False,
'userDataDir': UserDataDir,
'defaultViewport': {'width': 1800, 'height': 1000}
}
)
更多参数可以查看pyppeteer的源码。
self.handleSIGINT = options.get('handleSIGINT', True)
self.handleSIGTERM = options.get('handleSIGTERM', True)
self.handleSIGHUP = options.get('handleSIGHUP', True)
self.ignoreHTTPSErrors = options.get('ignoreHTTPSErrors', False)
self.defaultViewport = options.get('defaultViewport', {'width': 800, 'height': 600}) # noqa: E501
self.slowMo = options.get('slowMo', 0)
self.timeout = options.get('timeout', 30000)
self.autoClose = options.get('autoClose', True)

  查看全部
在初始化时加入 defaultViewport字典值即可:
    browser = await pyppeteer.launch(
{'headless': False,
'userDataDir': UserDataDir,
'defaultViewport': {'width': 1800, 'height': 1000}
}
)

更多参数可以查看pyppeteer的源码。
        self.handleSIGINT = options.get('handleSIGINT', True)
self.handleSIGTERM = options.get('handleSIGTERM', True)
self.handleSIGHUP = options.get('handleSIGHUP', True)
self.ignoreHTTPSErrors = options.get('ignoreHTTPSErrors', False)
self.defaultViewport = options.get('defaultViewport', {'width': 800, 'height': 600}) # noqa: E501
self.slowMo = options.get('slowMo', 0)
self.timeout = options.get('timeout', 30000)
self.autoClose = options.get('autoClose', True)