python 上传文件夹内图片到七牛,同时加入批量删除,单个删除

python李魔佛 发表了文章 • 0 个评论 • 1872 次浏览 • 2021-08-07 17:08 • 来自相关话题

先注册好七牛的账户,那都AK和SK两个key
 
然后把key写入到环境变量或者写到下面的python文件里面from qiniu import Auth, put_file,BucketManager,build_batch_delete
import os
import fire

access_key = os.getenv('qiniu_access_key')
secret_key = os.getenv('qiniu_secret_key')

bucket_name = '' # 你的空间名称

HOST ='[url]http://xximg.xxx.com/{}'[/url] # 可以不用填

TEMPLATE = '\n![{}]({})\n\n\n'

def upload(file,category=''):

    #构建鉴权对象
    q = Auth(access_key, secret_key)
    #要上传的空间

    #上传后保存的文件名
    key = category +'/' + os.path.split(file)[1]
    #生成上传 Token,可以指定过期时间等
    token = q.upload_token(bucket_name, key) # 永不过期

    #要上传文件的本地路径
    ret, info = put_file(token, key, file, version='v1') 
    print(ret)
    print(info)
    return HOST.format(ret['key'])

def bulk_upload(path,category=''):
    with open('qiniu_image.md','a+') as fp:
        for file in os.listdir(path):
            full_path = os.path.join(path,file)
            if os.path.isfile(full_path):

                host_url = upload(full_path,category)
                fp.write(TEMPLATE.format(host_url,host_url))


def get_file_info(prefix,limit = 10):
    q = Auth(access_key, secret_key)
    bucket = BucketManager(q)

    delimiter = None
    marker = None
    ret, eof, info = bucket.list(bucket_name, prefix, marker, limit, delimiter)

    # assert len(ret.get('items')) is not None
    url_list=[]
    for item in ret.get('items',):
        url_list.append(item['key'])
    # print(url_list)
    # print(len(url_list))
    return url_list,len(url_list)

def bulk_delete(prefix,limit=None):
    url_list,lens = get_file_info(prefix,limit=limit)
    q = Auth(access_key, secret_key)
    bucket = BucketManager(q)
    ops = build_batch_delete(bucket_name, url_list)
    ret, info = bucket.batch(ops)
    print(info)
    print(ret)

def delete_one(key):
    q = Auth(access_key, secret_key)
    #初始化BucketManager
    bucket = BucketManager(q)
    #你要测试的空间, 并且这个key在你空间中存在
    # key = 'python-logo.png'
    #删除bucket_name 中的文件 key
    ret, info = bucket.delete(bucket_name, key)
    print(info)
    print(ret)
    # assert ret == {}


def bulk_delete_ones(prefix):
    url_list,lens = get_file_info(prefix,limit=10)
    for url in url_list:
        delete_one(url)
        # print(url)

def main(path,category):

    if os.path.isdir(path):

         bulk_upload(path,category)
    elif os.path.isfile(path):
         upload(path,category)
    else:
         raise ValueError('文件不存在')

    get_file_info()
    bulk_delete('resource')
    bulk_delete_ones('resource')
    delete_one('resource/data_beauty.png')

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



然后运行:
python main.py --path='C:\Photo' --category='person'
运行后会上传到七牛的虚拟目录 person目录下
 
如果要删除,bulk_delete批量删除某个前缀或者文件夹的  查看全部
先注册好七牛的账户,那都AK和SK两个key
 
然后把key写入到环境变量或者写到下面的python文件里面
from qiniu import Auth, put_file,BucketManager,build_batch_delete
import os
import fire

access_key = os.getenv('qiniu_access_key')
secret_key = os.getenv('qiniu_secret_key')

bucket_name = '' # 你的空间名称

HOST ='[url]http://xximg.xxx.com/{}'[/url] # 可以不用填

TEMPLATE = '\n![{}]({})\n\n\n'

def upload(file,category=''):

    #构建鉴权对象
    q = Auth(access_key, secret_key)
    #要上传的空间

    #上传后保存的文件名
    key = category +'/' + os.path.split(file)[1]
    #生成上传 Token,可以指定过期时间等
    token = q.upload_token(bucket_name, key) # 永不过期

    #要上传文件的本地路径
    ret, info = put_file(token, key, file, version='v1') 
    print(ret)
    print(info)
    return HOST.format(ret['key'])

def bulk_upload(path,category=''):
    with open('qiniu_image.md','a+') as fp:
        for file in os.listdir(path):
            full_path = os.path.join(path,file)
            if os.path.isfile(full_path):

                host_url = upload(full_path,category)
                fp.write(TEMPLATE.format(host_url,host_url))


def get_file_info(prefix,limit = 10):
    q = Auth(access_key, secret_key)
    bucket = BucketManager(q)

    delimiter = None
    marker = None
    ret, eof, info = bucket.list(bucket_name, prefix, marker, limit, delimiter)

    # assert len(ret.get('items')) is not None
    url_list=[]
    for item in ret.get('items',):
        url_list.append(item['key'])
    # print(url_list)
    # print(len(url_list))
    return url_list,len(url_list)

def bulk_delete(prefix,limit=None):
    url_list,lens = get_file_info(prefix,limit=limit)
    q = Auth(access_key, secret_key)
    bucket = BucketManager(q)
    ops = build_batch_delete(bucket_name, url_list)
    ret, info = bucket.batch(ops)
    print(info)
    print(ret)

def delete_one(key):
    q = Auth(access_key, secret_key)
    #初始化BucketManager
    bucket = BucketManager(q)
    #你要测试的空间, 并且这个key在你空间中存在
    # key = 'python-logo.png'
    #删除bucket_name 中的文件 key
    ret, info = bucket.delete(bucket_name, key)
    print(info)
    print(ret)
    # assert ret == {}


def bulk_delete_ones(prefix):
    url_list,lens = get_file_info(prefix,limit=10)
    for url in url_list:
        delete_one(url)
        # print(url)

def main(path,category):

    if os.path.isdir(path):

         bulk_upload(path,category)
    elif os.path.isfile(path):
         upload(path,category)
    else:
         raise ValueError('文件不存在')

    get_file_info()
    bulk_delete('resource')
    bulk_delete_ones('resource')
    delete_one('resource/data_beauty.png')

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



然后运行:
python main.py --path='C:\Photo' --category='person'
运行后会上传到七牛的虚拟目录 person目录下
 
如果要删除,bulk_delete批量删除某个前缀或者文件夹的 

通达信无法导入或者监控到可转债的代码

股票绫波丽 发表了文章 • 0 个评论 • 1880 次浏览 • 2021-08-06 13:02 • 来自相关话题

第一次用, 以为那里出问题了。
原来本身就不支持导入可转债代码
只能导入正股代码
第一次用, 以为那里出问题了。
原来本身就不支持导入可转债代码
只能导入正股代码

为什么登录成功但是爬取不到其他数据

python爬虫低调的哥哥 回复了问题 • 2 人关注 • 1 个回复 • 1968 次浏览 • 2021-08-04 01:17 • 来自相关话题

30天掌握Golang 教程系列 第一课 基础知识

量化交易-Ptrade-QMT量化大师 发表了文章 • 0 个评论 • 1958 次浏览 • 2021-08-04 01:15 • 来自相关话题

基础练习:
这里有一个Golang的练习库,输入基础入门的资料。 大家可以先练习练习:
https://github.com/Rockyzsu/GolangLearning/tree/master/Go-Notes
 

基础语法是没办法绕过的,如果前期不打扎实,后期也会不断来回折腾。除非你做的项目只是一次性的,否则,磨刀不误砍柴工,还是打扎实。 把上面的github的例子弄懂,这个Go-notes的好处是,如果遇到你不懂的,可以马上查找相关的资料。如果全部都懂的话,可以进阶到第二阶段。
个人觉得还是得要多看看别人的代码,看多了,其实你写代码也会有灵感。(虽然有些人写的代码很烂,但是也可以自己做过标号,避免自己以后写出同样的代码。) 

PS: 本来我想从0开始写教程,不过网上其实也有很多教程,很多视频。 也有不少的书籍可以学。所以就没有必要重复造轮子了。
 
而实际的情况是,入门的人数需求是100个人,而进阶的需求是只有60个人,而深入理解并需要对应的教程的,可能只有20人不到。
 
所以想着写golang教程,最受欢迎的其实是hello world教程。
 
实际写起来也很容易,无法就是if - else,for, 切片,数组,通道,goroutine,结构体等。
不过对于笔者的能力提升是没有一点点用处的,当日提升知名度除外。
 
所以入门系列的基础课,我这里就一比带过。可以留一些比较容易踩到的坑。
 
当然这个基础知识不可能 第一天就全部搞定。 可以多花几天甚至一周的时间。
  查看全部
基础练习:
这里有一个Golang的练习库,输入基础入门的资料。 大家可以先练习练习:
https://github.com/Rockyzsu/GolangLearning/tree/master/Go-Notes
 

基础语法是没办法绕过的,如果前期不打扎实,后期也会不断来回折腾。除非你做的项目只是一次性的,否则,磨刀不误砍柴工,还是打扎实。 把上面的github的例子弄懂,这个Go-notes的好处是,如果遇到你不懂的,可以马上查找相关的资料。如果全部都懂的话,可以进阶到第二阶段。
个人觉得还是得要多看看别人的代码,看多了,其实你写代码也会有灵感。(虽然有些人写的代码很烂,但是也可以自己做过标号,避免自己以后写出同样的代码。) 

PS: 本来我想从0开始写教程,不过网上其实也有很多教程,很多视频。 也有不少的书籍可以学。所以就没有必要重复造轮子了。
 
而实际的情况是,入门的人数需求是100个人,而进阶的需求是只有60个人,而深入理解并需要对应的教程的,可能只有20人不到。
 
所以想着写golang教程,最受欢迎的其实是hello world教程。
 
实际写起来也很容易,无法就是if - else,for, 切片,数组,通道,goroutine,结构体等。
不过对于笔者的能力提升是没有一点点用处的,当日提升知名度除外。
 
所以入门系列的基础课,我这里就一比带过。可以留一些比较容易踩到的坑。
 
当然这个基础知识不可能 第一天就全部搞定。 可以多花几天甚至一周的时间。
 

Ptrade开户门槛

股票绫波丽 发表了文章 • 0 个评论 • 2109 次浏览 • 2021-08-01 01:27 • 来自相关话题

Ptrade目前的开通门槛。 开通国金证券, 然后入金50W左右,存放1天时间。 然后就可以开通Ptrade的交易权限, 开通权限后,资金可以取出不再限制。
 
使用ptrade不收取任何费用,属于券商提供的接口服务。 可以使用ptrade回测历史数据,模拟盘下单, 实盘下单。
使用python语言开发。 使用模式和优矿这一些平台类似。
 
目前交易费率也是很低的,股票万1,转债是沪市百万分之二,深市十万分之五,没有最低收费。 etf基金费率 万0.6,没有最低起步。
 
需要开通的联系:


 
备注:开户
非诚勿扰,费率固定,要讲价什么的一律拉黑。
本身市面上能提供的接口券商很少,并且费率还这么低的。
  查看全部
Ptrade目前的开通门槛。 开通国金证券, 然后入金50W左右,存放1天时间。 然后就可以开通Ptrade的交易权限, 开通权限后,资金可以取出不再限制。
 
使用ptrade不收取任何费用,属于券商提供的接口服务。 可以使用ptrade回测历史数据,模拟盘下单, 实盘下单。
使用python语言开发。 使用模式和优矿这一些平台类似。
 
目前交易费率也是很低的,股票万1,转债是沪市百万分之二,深市十万分之五,没有最低收费。 etf基金费率 万0.6,没有最低起步
 
需要开通的联系:


 
备注:开户
非诚勿扰,费率固定,要讲价什么的一律拉黑。
本身市面上能提供的接口券商很少,并且费率还这么低的。
 

绫波丽 发表了文章 • %s 个评论 • %s 次浏览 • 1970-01-01 08:00 • 来自相关话题

他人 中概互联 被深套 却以套利为由 捡回一点颜面

闲聊绫波丽 发表了文章 • 0 个评论 • 1713 次浏览 • 2021-07-30 00:28 • 来自相关话题

 
看到的一篇文章: 
 

中国互联,两天套利收益3712元,我却很难过
最近一段时间,网络科技股遭遇了大幅调整。
三只主流互联网基金中(中概互联513050,中国互联164906,恒生互联513330),中国互联164906,跌幅超大,半年左右时间,从高点2.6元,跌到当前的1.36元,跌幅为48.8%。(21.7.28)
现在没必要讨论是否应该抄底的问题,想抄底的人,早就买在半山腰了。现在更应该想的是,已经持有这些基金的人,怎么尽快摆脱困境。
相比另外两只ETF基金,中国互联是LOF基金,可以通过套利减少亏损。2021年7月23日,1.598元,卖出15500股,申购成本1.5元,去除手续费,收益1472元。
2021年7月26日,1.504元,卖出17500股,申购成本1.374元,去除手续费,收益2240元。
两天套利收益3712元,我却难过的想哭
为什么这样说?因为申购套利份额三天到账,每天只能使用1/3的仓位参与。1/3仓位,参与套利,这两天少亏了3712元,另外2/3的仓位,实实在在的下跌,至少亏了 3712x2=7424元。
事实上就是如此,7万多元的底仓,已经亏损了8000多元,如果没做套利,真实的亏损,是12000元。
从这件事情上,我们可以得到如下启示:
1,三天跌去20%,6个月跌掉将近50%,这是普通投资者不能接受的。尽量少参与QDII基金,外围市场更加不稳定,风险偏大。如果想投资QDII基金,首选有套利机制的LOF
2,QDII基金要严格控制仓位占比,不要超过总仓位的20%,并且,不要在同一个价格大笔买入,最好用定投,或者越跌越买的方法,分批建仓。
3,在这几天的大跌中,可转债的跌幅相对较小,不足指数跌幅的1/4。作为稳健的投资者,今后应该提高可转债的配置比例。这里也顺便说一下,对三只中概互联网基金,后市的看法。
最悲观的时刻也许已经过去,反弹之后,将迎来二次探底,重新进入上升通道,需要三个月或者更长的时间。
站在当前的角度,已经跌去了这么多,相信这些互联网龙头企业,未来会有不错的业绩表现,此时的投资价值,已经大大提高。
没有仓位的投资者,远离风险,不去抄底买入,是正确的,但已经有持仓的投资者,更不应该在如此低的位置卖出。切记!
本文仅供参考,并非投资建议
 

原文:





 
看完觉得这个人还在骄傲, 我的操作让我少亏了3千大洋. 洋洋洒洒说自己的套利操作. 其实无非就是割自己大腿肉而已.
相信他还会有下一次为了套利而被套的操作.
 
就如我的标题而言. 查看全部
 
看到的一篇文章: 
 


中国互联,两天套利收益3712元,我却很难过
最近一段时间,网络科技股遭遇了大幅调整。
三只主流互联网基金中(中概互联513050,中国互联164906,恒生互联513330),中国互联164906,跌幅超大,半年左右时间,从高点2.6元,跌到当前的1.36元,跌幅为48.8%。(21.7.28)
现在没必要讨论是否应该抄底的问题,想抄底的人,早就买在半山腰了。现在更应该想的是,已经持有这些基金的人,怎么尽快摆脱困境。
相比另外两只ETF基金,中国互联是LOF基金,可以通过套利减少亏损。2021年7月23日,1.598元,卖出15500股,申购成本1.5元,去除手续费,收益1472元。
2021年7月26日,1.504元,卖出17500股,申购成本1.374元,去除手续费,收益2240元。
两天套利收益3712元,我却难过的想哭
为什么这样说?因为申购套利份额三天到账,每天只能使用1/3的仓位参与。1/3仓位,参与套利,这两天少亏了3712元,另外2/3的仓位,实实在在的下跌,至少亏了 3712x2=7424元。
事实上就是如此,7万多元的底仓,已经亏损了8000多元,如果没做套利,真实的亏损,是12000元。
从这件事情上,我们可以得到如下启示:
1,三天跌去20%,6个月跌掉将近50%,这是普通投资者不能接受的。尽量少参与QDII基金,外围市场更加不稳定,风险偏大。如果想投资QDII基金,首选有套利机制的LOF
2,QDII基金要严格控制仓位占比,不要超过总仓位的20%,并且,不要在同一个价格大笔买入,最好用定投,或者越跌越买的方法,分批建仓。
3,在这几天的大跌中,可转债的跌幅相对较小,不足指数跌幅的1/4。作为稳健的投资者,今后应该提高可转债的配置比例。这里也顺便说一下,对三只中概互联网基金,后市的看法。
最悲观的时刻也许已经过去,反弹之后,将迎来二次探底,重新进入上升通道,需要三个月或者更长的时间。
站在当前的角度,已经跌去了这么多,相信这些互联网龙头企业,未来会有不错的业绩表现,此时的投资价值,已经大大提高。
没有仓位的投资者,远离风险,不去抄底买入,是正确的,但已经有持仓的投资者,更不应该在如此低的位置卖出。切记!
本文仅供参考,并非投资建议
 


原文:

Selection_073.png

 
看完觉得这个人还在骄傲, 我的操作让我少亏了3千大洋. 洋洋洒洒说自己的套利操作. 其实无非就是割自己大腿肉而已.
相信他还会有下一次为了套利而被套的操作.
 
就如我的标题而言.

穷人思维

闲聊绫波丽 发表了文章 • 0 个评论 • 1482 次浏览 • 2021-07-29 05:24 • 来自相关话题

夜 04:59
喝了太多茶叶, 难以入睡.
失眠
 
让你帮忙推广一些开户的事情, 完全也是当做是耳边风.
让你帮忙做一个推广的链接, 写成一个腾讯文档类似的, 合集. 以后就不用每句话 每句话这样的回复. 没做
写一些文章, 大一些主流论坛博客上推广, 或者在本网站推广. 也是完全没做. 甚至不会问, 要怎么发,发哪些内容.
 
永远想不清对方, 是怎样的人生经历, 才会造就这样的做事方式. 完全是一个不讲理的状态. 
 
一件事情做的不对, 也不会主动承认. 第一反应永远就是反驳我. 拿做了其他事情来说: 我做到了.
为什么没做我分配的任务 ? 答: 家里我做了很多家务, 没有我, 家里就很乱
 
一直不会聆听别人的话语, 急着说自己的想法. 哪怕完整听完别人一句话. 正面回复一句别人, 比如, "哦 你说的事情是因为xxxxx" , 也让人好受很多. 而不是, "哎呀, 我下班回来, 又要卖菜做饭, 很累." 永远急于表达你很累, 要照顾小孩,你怎样怎样.
 
事情这样永远不会有好转. 
 
如果你觉得生活需要改变,就需要行动, 而不是找借口.
 
当一个人习惯了总是找借口. 似乎已经找不到任何理由让他完成一件简单的事情了.  无论多么简单一件事情. 总能有一万个不完成的理由. 并且这些理由都是外部原因. 她自身是完全满分, 不是她的问题.
嗯, 因为早上老板老是开会.
嗯, 早上帮客户解决xxx问题
嗯, 早上想呕吐.
嗯,昨晚没睡好
嗯, 不知道你要推广什么内容
嗯, 不知道怎么发贴
嗯,不知道要发在那里
嗯,担心这个手机号公司会回收. 
 
书借给你,让你看. 你翻几番就说看完.
手把手教你如何做xxx. 最后就是浪费我的时间教你, 这时间同样的事情还不如我自己做,可以完成10次.
你给我的答复也是, "哦 我能力不如你xxxx"
 
可是真的原因不是不会. 如果你去背一个单词, 背了100次, 还不会, 那的确是你笨, 不会了.
可是你根本不去背, 然后就说不会. 这个是态度的问题了. 做都没去做, 然后就一直在借口,理由中徘徊.

试问, 任何一个小事情, 让你去做, 得到的都是没有去做, 然后原因就是上面的借口中的一个. 生活真的让人很绝望.
我也很累, 带不动了.
我不会的, 至少我会到网上找答案.
而不是心安理得的拿来做借口.
一个人找一次借口还能过得去, 可是总是找借口,你当被人是傻子吗? 说多了,别人都烦了. 怎么这人老有这样,那样的理由.
 
 实在想不出来人与人的区别会那么大.
 
我也很累. 我也想改变现状. 不想蜗居在这样的环境里.
这种真是低级的问题, 谁不想big house ? 谁不想吃喝有保姆照顾 ?
天天挂着嘴边有用吗? 天天说,而不去做, 改变, change , 行动, 给人觉得你只是在发白日梦.
像这个网站的文章.






有50多页, 每页十多篇文章. 是谁坚持写着堆积下来的? 
 
装睡的人是叫不醒的. 查看全部
夜 04:59
喝了太多茶叶, 难以入睡.
失眠
 
让你帮忙推广一些开户的事情, 完全也是当做是耳边风.
让你帮忙做一个推广的链接, 写成一个腾讯文档类似的, 合集. 以后就不用每句话 每句话这样的回复. 没做
写一些文章, 大一些主流论坛博客上推广, 或者在本网站推广. 也是完全没做. 甚至不会问, 要怎么发,发哪些内容.
 
永远想不清对方, 是怎样的人生经历, 才会造就这样的做事方式. 完全是一个不讲理的状态. 
 
一件事情做的不对, 也不会主动承认. 第一反应永远就是反驳我. 拿做了其他事情来说: 我做到了.
为什么没做我分配的任务 ? 答: 家里我做了很多家务, 没有我, 家里就很乱
 
一直不会聆听别人的话语, 急着说自己的想法. 哪怕完整听完别人一句话. 正面回复一句别人, 比如, "哦 你说的事情是因为xxxxx" , 也让人好受很多. 而不是, "哎呀, 我下班回来, 又要卖菜做饭, 很累." 永远急于表达你很累, 要照顾小孩,你怎样怎样.
 
事情这样永远不会有好转. 
 
如果你觉得生活需要改变,就需要行动, 而不是找借口.
 
当一个人习惯了总是找借口. 似乎已经找不到任何理由让他完成一件简单的事情了.  无论多么简单一件事情. 总能有一万个不完成的理由. 并且这些理由都是外部原因. 她自身是完全满分, 不是她的问题.
嗯, 因为早上老板老是开会.
嗯, 早上帮客户解决xxx问题
嗯, 早上想呕吐.
嗯,昨晚没睡好
嗯, 不知道你要推广什么内容
嗯, 不知道怎么发贴
嗯,不知道要发在那里
嗯,担心这个手机号公司会回收. 
 
书借给你,让你看. 你翻几番就说看完.
手把手教你如何做xxx. 最后就是浪费我的时间教你, 这时间同样的事情还不如我自己做,可以完成10次.
你给我的答复也是, "哦 我能力不如你xxxx"
 
可是真的原因不是不会. 如果你去背一个单词, 背了100次, 还不会, 那的确是你笨, 不会了.
可是你根本不去背, 然后就说不会. 这个是态度的问题了. 做都没去做, 然后就一直在借口,理由中徘徊.

试问, 任何一个小事情, 让你去做, 得到的都是没有去做, 然后原因就是上面的借口中的一个. 生活真的让人很绝望.
我也很累, 带不动了.
我不会的, 至少我会到网上找答案.
而不是心安理得的拿来做借口.
一个人找一次借口还能过得去, 可是总是找借口,你当被人是傻子吗? 说多了,别人都烦了. 怎么这人老有这样,那样的理由.
 
 实在想不出来人与人的区别会那么大.
 
我也很累. 我也想改变现状. 不想蜗居在这样的环境里.
这种真是低级的问题, 谁不想big house ? 谁不想吃喝有保姆照顾 ?
天天挂着嘴边有用吗? 天天说,而不去做, 改变, change , 行动, 给人觉得你只是在发白日梦.
像这个网站的文章.

Selection_072.png


有50多页, 每页十多篇文章. 是谁坚持写着堆积下来的? 
 
装睡的人是叫不醒的.

vim定义快捷键 运行go程序

Linux李魔佛 发表了文章 • 0 个评论 • 1849 次浏览 • 2021-07-23 16:27 • 来自相关话题

您也可以~/.vimrc像这样映射一个键
 
nnoremap gr :!go run %<CR>
 
所以你可以很容易地输入gr你的vim,它就会执行。
您也可以~/.vimrc像这样映射一个键
 
nnoremap gr :!go run %<CR>
 
所以你可以很容易地输入gr你的vim,它就会执行。

chrome 屏蔽网址插件 Site Blocker 下载

闲聊李魔佛 发表了文章 • 0 个评论 • 1847 次浏览 • 2021-07-21 11:52 • 来自相关话题

亲测,好用,而且免费!!!
(本来还有一个Block Site 也挺好用的,可是要收费,所以只好白嫖了)
不过这个site blocker会有个问题,就是如果你装了它后,如果在地址栏搜索,他会重定向到bing的搜索引擎。
刚开始以为被什么东东持劫了。不过一般用的谷歌搜索引擎,所以多一个步骤,先点一下收藏栏里面的google,再去搜索。

私信获取百度网盘的下载地址
 
或者关注公众号后台回复: 
屏蔽网址
  查看全部
Selection_051.png

亲测,好用,而且免费!!!
(本来还有一个Block Site 也挺好用的,可是要收费,所以只好白嫖了)
不过这个site blocker会有个问题,就是如果你装了它后,如果在地址栏搜索,他会重定向到bing的搜索引擎。
刚开始以为被什么东东持劫了。不过一般用的谷歌搜索引擎,所以多一个步骤,先点一下收藏栏里面的google,再去搜索。

私信获取百度网盘的下载地址
 
或者关注公众号后台回复: 
屏蔽网址
 

橙沙之味 -- 没有成为伟大的人,人生还有什么意义?来看看这部电影的答案

闲聊李魔佛 发表了文章 • 0 个评论 • 1572 次浏览 • 2021-07-20 13:29 • 来自相关话题

看哭的一个影评

Selection_047.png

看哭的一个影评

港股打新行话合集

股票绫波丽 发表了文章 • 0 个评论 • 1671 次浏览 • 2021-07-19 22:55 • 来自相关话题

港股打新:是指申购香港上市的新股,由于全世界的新股市场基本都是首日上涨居多,所以存在套利空间。

暗盘:上市前一天16:15分开始的交易,有些券商没有,富途辉立耀才股票价格有时不同,可高卖低买,上市再卖的持有底仓的套利

入金:钱从银行存入券商

出金:钱从券商转到银行

银证:有些券商绑定银行后实现资金秒到

孖赞:就是融资申购的意思

免费餐,38餐,100餐:免费指1w以内,38餐指的是辉立借5w融资申购以内只需要手续费38,20w以内只需要手续费100

认购倍数:比如募资1亿,结果有10亿去申购,这就是10倍认购

回拨:指国配和公开发行之间拿货比例。一般的票,是15倍认购以下,不回拨。公开占10%,国配90% 15-50倍,公开30%,50-100倍,公开40%,超购100倍以上,回拨50%,国配与公开各一半,类似康方

一手融:部分券商不满一手资金也可以融资申购

甲组:申购资金单户500w以下小散

甲尾:500w以下最高一档

乙组:申购资金单户500w以上大散

乙头:500w以上最低一档

顶头锤:有钱大老板单户顶格申购了

破发:跌破发行价

一手党:单户申购一手

国配:国际配售。一般是大户和机构,区别于散户申购,他们是“拿货”,但分配却要看和保荐人承销团关系,比较暗箱。

百户侯:港股账户超过一百

海底捞:暗盘买进

抽飞:申购了以后最后几天撤单

卖飞:卖了以后股价又涨了

绿鞋:稳定价格机制,时灵时不灵

捷利交易宝:最常用看孖赞和新股情况的APP 查看全部
港股打新:是指申购香港上市的新股,由于全世界的新股市场基本都是首日上涨居多,所以存在套利空间。

暗盘:上市前一天16:15分开始的交易,有些券商没有,富途辉立耀才股票价格有时不同,可高卖低买,上市再卖的持有底仓的套利

入金:钱从银行存入券商

出金:钱从券商转到银行

银证:有些券商绑定银行后实现资金秒到

孖赞:就是融资申购的意思

免费餐,38餐,100餐:免费指1w以内,38餐指的是辉立借5w融资申购以内只需要手续费38,20w以内只需要手续费100

认购倍数:比如募资1亿,结果有10亿去申购,这就是10倍认购

回拨:指国配和公开发行之间拿货比例。一般的票,是15倍认购以下,不回拨。公开占10%,国配90% 15-50倍,公开30%,50-100倍,公开40%,超购100倍以上,回拨50%,国配与公开各一半,类似康方

一手融:部分券商不满一手资金也可以融资申购

甲组:申购资金单户500w以下小散

甲尾:500w以下最高一档

乙组:申购资金单户500w以上大散

乙头:500w以上最低一档

顶头锤:有钱大老板单户顶格申购了

破发:跌破发行价

一手党:单户申购一手

国配:国际配售。一般是大户和机构,区别于散户申购,他们是“拿货”,但分配却要看和保荐人承销团关系,比较暗箱。

百户侯:港股账户超过一百

海底捞:暗盘买进

抽飞:申购了以后最后几天撤单

卖飞:卖了以后股价又涨了

绿鞋:稳定价格机制,时灵时不灵

捷利交易宝:最常用看孖赞和新股情况的APP

小英雄托托 越哥解说得真棒

闲聊李魔佛 发表了文章 • 0 个评论 • 1714 次浏览 • 2021-07-19 22:00 • 来自相关话题

每个人都会有一个幻想, 有两条路. 自己没走的那条是更好的路.

Selection_039.png

每个人都会有一个幻想, 有两条路. 自己没走的那条是更好的路.

可转债转股套利 收益率统计 只做大于-5%折价率以上

股票李魔佛 发表了文章 • 0 个评论 • 1566 次浏览 • 2021-07-19 00:11 • 来自相关话题

结果如上:
平均收益是 0.014%

总收益率是0.225%

Selection_038.png

结果如上:
平均收益是 0.014%

总收益率是0.225%

优矿接口的日期定义真让人蛋疼

股票李魔佛 发表了文章 • 0 个评论 • 1500 次浏览 • 2021-07-17 20:24 • 来自相关话题

日期查询格式是 YYYYMMDD的.
然后接口查询结果返回的是YYYY-MM-DD
难道统一一下这么难吗?
日期查询格式是 YYYYMMDD的.
然后接口查询结果返回的是YYYY-MM-DD
难道统一一下这么难吗?

国盛证券开户 Ptrade QMT 量化开户

券商万一免五绫波丽 发表了文章 • 2 个评论 • 4908 次浏览 • 2021-07-16 21:42 • 来自相关话题

国盛金融控股集团股份有限公司全资子公司. A股上市公司
 
不少人觉得小券商不安全. 
小券商当然有倒闭的可能,03年到06年时国内的券商完蛋了至少十几家!

但是证券账户里的证券基金和现金都不用担心,因为07年之后三方存管的存在,证券和基金是托管在中国证券登记结算公司的,现金是托管在银行里的,证券公司就是个通道而已,倒闭就倒闭,没什么大不了。
 
国盛证券的费率:
 
股票: 万一免5
 
基金, ETF: 万0.5 
 
可转债: 沪市 百万分之二, 深市: 十万分之五, 
 
特色支持量化接口: 支持python的自动下单, 需要资金30W, 放1周左右就可以开通,开通后, 佣金同时也可以免五 !



 
需要开通的话或者了解细节可以联系:
 

备注: 量化
下面是ptrade接口API地址:  可以参考参考。
http://121.41.137.161:9091/hub/help/api
开户后可以先试用,再开通量化权限

  查看全部
国盛金融控股集团股份有限公司全资子公司. A股上市公司
 
不少人觉得小券商不安全. 
小券商当然有倒闭的可能,03年到06年时国内的券商完蛋了至少十几家!

但是证券账户里的证券基金和现金都不用担心,因为07年之后三方存管的存在,证券和基金是托管在中国证券登记结算公司的,现金是托管在银行里的,证券公司就是个通道而已,倒闭就倒闭,没什么大不了。
 
国盛证券的费率:
 
股票: 万一免5
 
基金, ETF: 万0.5 
 
可转债: 沪市 百万分之二, 深市: 十万分之五, 
 
特色支持量化接口: 支持python的自动下单, 需要资金30W, 放1周左右就可以开通,开通后, 佣金同时也可以免五 !



 
需要开通的话或者了解细节可以联系:
 

备注: 量化
下面是ptrade接口API地址:  可以参考参考。
http://121.41.137.161:9091/hub/help/api
开户后可以先试用,再开通量化权限

 

绫波丽 发表了文章 • %s 个评论 • %s 次浏览 • 1970-01-01 08:00 • 来自相关话题

python pyecharts 多图叠加 bar和line叠加在一张图上

python李魔佛 发表了文章 • 0 个评论 • 4505 次浏览 • 2021-07-10 12:21 • 来自相关话题

 
先准备一个bar图
import pyecharts.options as opts
from pyecharts.charts import Bar, Line

x_data = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]

bar = (
Bar(init_opts=opts.InitOpts(width="1600px", height="800px"))
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="蒸发量",
y_axis=[
2.0,
4.9,
7.0,
23.2,
25.6,
76.7,
135.6,
162.2,
32.6,
20.0,
6.4,
3.3,
],
label_opts=opts.LabelOpts(is_show=False),
)
.add_yaxis(
series_name="降水量",
y_axis=[
2.6,
5.9,
9.0,
26.4,
28.7,
70.7,
175.6,
182.2,
48.7,
18.8,
6.0,
2.3,
],
label_opts=opts.LabelOpts(is_show=False),
)
.extend_axis(
yaxis=opts.AxisOpts(
name="温度",
type_="value",
min_=0,
max_=25,
interval=5,
axislabel_opts=opts.LabelOpts(formatter="{value} °C"),
)
)
.set_global_opts(
tooltip_opts=opts.TooltipOpts(
is_show=True, trigger="axis", axis_pointer_type="cross"
),
xaxis_opts=opts.AxisOpts(
type_="category",
axispointer_opts=opts.AxisPointerOpts(is_show=True, type_="shadow"),
),
yaxis_opts=opts.AxisOpts(
name="水量",
type_="value",
min_=0,
max_=250,
interval=50,
axislabel_opts=opts.LabelOpts(formatter="{value} ml"),
axistick_opts=opts.AxisTickOpts(is_show=True),
splitline_opts=opts.SplitLineOpts(is_show=True),
),
)
)
再加一个折线图
line = (
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="平均温度",
yaxis_index=1,
y_axis=[2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2],
label_opts=opts.LabelOpts(is_show=False),
)
)
然后使用overlap 函数叠加在一起
 
bar.overlap(line).render_notebook()





  查看全部
 
先准备一个bar图
import pyecharts.options as opts
from pyecharts.charts import Bar, Line

x_data = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]

bar = (
Bar(init_opts=opts.InitOpts(width="1600px", height="800px"))
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="蒸发量",
y_axis=[
2.0,
4.9,
7.0,
23.2,
25.6,
76.7,
135.6,
162.2,
32.6,
20.0,
6.4,
3.3,
],
label_opts=opts.LabelOpts(is_show=False),
)
.add_yaxis(
series_name="降水量",
y_axis=[
2.6,
5.9,
9.0,
26.4,
28.7,
70.7,
175.6,
182.2,
48.7,
18.8,
6.0,
2.3,
],
label_opts=opts.LabelOpts(is_show=False),
)
.extend_axis(
yaxis=opts.AxisOpts(
name="温度",
type_="value",
min_=0,
max_=25,
interval=5,
axislabel_opts=opts.LabelOpts(formatter="{value} °C"),
)
)
.set_global_opts(
tooltip_opts=opts.TooltipOpts(
is_show=True, trigger="axis", axis_pointer_type="cross"
),
xaxis_opts=opts.AxisOpts(
type_="category",
axispointer_opts=opts.AxisPointerOpts(is_show=True, type_="shadow"),
),
yaxis_opts=opts.AxisOpts(
name="水量",
type_="value",
min_=0,
max_=250,
interval=50,
axislabel_opts=opts.LabelOpts(formatter="{value} ml"),
axistick_opts=opts.AxisTickOpts(is_show=True),
splitline_opts=opts.SplitLineOpts(is_show=True),
),
)
)

再加一个折线图
line = (
Line()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(
series_name="平均温度",
yaxis_index=1,
y_axis=[2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2],
label_opts=opts.LabelOpts(is_show=False),
)
)

然后使用overlap 函数叠加在一起
 
bar.overlap(line).render_notebook()


Selection_008.png

 

无论如何, 你都不能嘲笑那些努力的人

闲聊李魔佛 发表了文章 • 0 个评论 • 1184 次浏览 • 2021-07-10 01:27 • 来自相关话题

至少, 我会给予他们尊重.
 
至少, 我会给予他们尊重.
 

ubuntu软件中心 正在安装的软件如何中断

Linux李魔佛 发表了文章 • 0 个评论 • 1718 次浏览 • 2021-07-08 08:52 • 来自相关话题

缘由是不小心点了个升级按钮, 如果安装普通软件倒是没关系.
但是看到它里面有个系统版本升级, 丫的要帮我升级ubuntu呀. 要果断阻止呀.
 
可惜找不到种植的按钮, 不得不吐槽下这个垃圾设计.
 
无奈只好ps -aux | grep soft
找到了那个软件升级中心的进程pid
再 kill -9 pid
粗暴地把软件升级中心停掉. 查看全部
缘由是不小心点了个升级按钮, 如果安装普通软件倒是没关系.
但是看到它里面有个系统版本升级, 丫的要帮我升级ubuntu呀. 要果断阻止呀.
 
可惜找不到种植的按钮, 不得不吐槽下这个垃圾设计.
 
无奈只好ps -aux | grep soft
找到了那个软件升级中心的进程pid
再 kill -9 pid
粗暴地把软件升级中心停掉.

宏信证券万一免五 开户 全市场费率最低

闲聊绫波丽 发表了文章 • 0 个评论 • 2193 次浏览 • 2021-07-07 23:42 • 来自相关话题

其费率在市面上看 市面上是最低的了。




券商 同花顺登录 股票 股票是否免5 转债免五 转债最低
宏信 不支持 万1 免5,最低0.1元 沪:百万分之2,深:十万分之4 0.01


基金免五 基金最低 两融利率
万1 0.1 6.8%起 
需要的可以加微信: 备注 宏信 查看全部
其费率在市面上看 市面上是最低的了。

Selection_007.png
券商   同花顺登录   股票    股票是否免5          转债免五 转债最低                     
宏信 不支持 万1 免5,最低0.1元 沪:百万分之2,深:十万分之4 0.01


基金免五 基金最低 两融利率
万1 0.1 6.8%起
 
需要的可以加微信: 备注 宏信

黑夜之睛

闲聊绫波丽 发表了文章 • 0 个评论 • 2992 次浏览 • 2021-07-07 02:12 • 来自相关话题

一名在毕业后就做写手的愣头青。
公众号都是水粉,托。
 
知乎上的问题出一个封杀一个,都是去抽热点,并且抄袭他人的语句。

更新:原来雪球上已经有人举报他了。。。
 
这个大骗子黑夜之睛,真名叫王荍(qiao二声),祖籍江苏泰州。本科毕业于哈工大,生命科学专业。现在上海浦东的一家叫做“华尔街见闻”的公司工作

https://xueqiu.com/5569190200/75773143
  查看全部
bpQTETMdkV.png

一名在毕业后就做写手的愣头青。
公众号都是水粉,托。
 
知乎上的问题出一个封杀一个,都是去抽热点,并且抄袭他人的语句。

更新:原来雪球上已经有人举报他了。。。
 
这个大骗子黑夜之睛,真名叫王荍(qiao二声),祖籍江苏泰州。本科毕业于哈工大,生命科学专业。现在上海浦东的一家叫做“华尔街见闻”的公司工作

https://xueqiu.com/5569190200/75773143
 

开通Ptrade Python量化接口 国金证券/国盛证券

股票绫波丽 发表了文章 • 0 个评论 • 17829 次浏览 • 2021-07-06 08:40 • 来自相关话题

目前不少在A股做量化的大部分使用tushare,优矿,米筐,聚宽等等,无论教程,还是实际操作,基本没见有教怎么用程序下单,实盘交易的。

而退而求其次使用按键精灵,模拟点击交易软件进行点击下单,非常不稳定,无法判断下单后是否成交,也无法实时获取行情数据。如果使用tushare或者新浪接口数据,扫描一次全市场的行情用时很久且不稳定,等扫描结束,再下单,此时价格可能已经是几分钟前的了,且此类接口调用次数多是会被封IP的。

笔者使用的是券商提供的量化软件:Ptrade。是恒生电子研发的提供给机构使用的程序化交易软件。提供策略回测,下单API接口,实时行情获取,并且使用的开发语言python,易于上手。

策略回测与实盘交易




研究页面

研究页面,熟悉python jupyter notebook的朋友对这个界面肯定很熟悉。

研究的页面实际就运行你逐行输出调试程序,了解每个函数的具体使用,或者你策略的中途结果调试。





 
回测策略

实际代码需要在回测策略里面写,写完后确定无误,就可以放在仿真环境下真实运行。如果你运行得到的结果很满意,那么就可以直接部署到实盘服务器上。实盘服务器是在券商那边,不需要个人购买服务器,也不需要本地开着这个Ptrade,就是说不需要在个人电脑上一直开着跑,你的最终代码和程序是在券商服务器上部署与运行,除非有报错异常停止,不然在你不暂停或者停止的前提下,可以一直运行下去。












条件满足后下单

可视化量化

同时也提供一些常见的现成的量化策略,选中后只要鼠标点点点也能够自动化跑这些策略了,当然里面很多参数都可以用鼠标点点点修改。





 
接口文档也非常详细:




 
一些常见策略代码:

集合竞价追涨停策略def initialize(context):
# 初始化此策略
# 设置我们要操作的股票池, 这里我们只操作一支股票
g.security = '600570.SS'
set_universe(g.security)
#每天9:23分运行集合竞价处理函数
run_daily(context, aggregate_auction_func, time='9:23')

def aggregate_auction_func(context):
stock = g.security
#最新价
snapshot = get_snapshot(stock)
price = snapshot[stock]['last_px']
#涨停价
up_limit = snapshot[stock]['up_px']
#如果最新价不小于涨停价,买入
if float(price) >= float(up_limit):
order(g.security, 100, limit_price=up_limit)

def handle_data(context, data):
pass
双均线策略def initialize(context):
# 初始化此策略
# 设置我们要操作的股票池, 这里我们只操作一支股票
g.security = '600570.SS'
set_universe(g.security)
pass

#当五日均线高于十日均线时买入,当五日均线低于十日均线时卖出
def handle_data(context, data):
security = g.security

#得到十日历史价格
df = get_history(10, '1d', 'close', security, fq=None, include=False)

# 得到五日均线价格
ma5 = round(df['close'][-5:].mean(), 3)

# 得到十日均线价格
ma10 = round(df['close'][-10:].mean(), 3)

# 取得昨天收盘价
price = data[security]['close']

# 得到当前资金余额
cash = context.portfolio.cash

# 如果当前有余额,并且五日均线大于十日均线
if ma5 > ma10:
# 用所有 cash 买入股票
order_value(security, cash)
# 记录这次买入
log.info("Buying %s" % (security))

# 如果五日均线小于十日均线,并且目前有头寸
elif ma5 < ma10 and get_position(security).amount > 0:
# 全部卖出
order_target(security, 0)
# 记录这次卖出
log.info("Selling %s" % (security))
 
tick级别均线策略

通俗点就是按照秒级别进行操作。def initialize(context):
# 初始化此策略
# 设置我们要操作的股票池, 这里我们只操作一支股票
g.security = '600570.SS'
set_universe(g.security)
#每3秒运行一次主函数
run_interval(context, func, seconds=3)

#盘前准备历史数据
def before_trading_start(context, data):
history = get_history(10, '1d', 'close', g.security, fq='pre', include=False)
g.close_array = history['close'].values

#当五日均线高于十日均线时买入,当五日均线低于十日均线时卖出
def func(context):

stock = g.security

#获取最新价
snapshot = get_snapshot(stock)
price = snapshot[stock]['last_px']

# 得到五日均线价格
days = 5
ma5 = get_MA_day(stock, days, g.close_array[-4:], price)
# 得到十日均线价格
days = 10
ma10 = get_MA_day(stock, days, g.close_array[-9:], price)

# 得到当前资金余额
cash = context.portfolio.cash

# 如果当前有余额,并且五日均线大于十日均线
if ma5 > ma10:
# 用所有 cash 买入股票
order_value(stock, cash)
# 记录这次买入
log.info("Buying %s" % (stock))

# 如果五日均线小于十日均线,并且目前有头寸
elif ma5 < ma10 and get_position(stock).amount > 0:
# 全部卖出
order_target(stock, 0)
# 记录这次卖出
log.info("Selling %s" % (stock))

#计算实时均线函数
def get_MA_day(stock,days,close_array,current_price):
close_sum = close_array[-(days-1):].sum()
MA = (current_price + close_sum)/days
return MA

def handle_data(context, data):
pass
 
macd策略def f_expma(N,m,EXPMA1,price):
a = m/(N+1)
EXPMA2 = a * price + (1 - a)*EXPMA1
return EXPMA2 #2为后一天值

#定义macd函数,输入平滑系数参数、前一日值,输出当日值
def macd(N1,N2,N3,m,EXPMA12_1,EXPMA26_1,DEA1,price):
EXPMA12_2 = f_expma(N1,m,EXPMA12_1,price)
EXPMA26_2 = f_expma(N2,m,EXPMA26_1,price)
DIF2 = EXPMA12_2 - EXPMA26_2
a = m/(N3+1)
DEA2 = a * DIF2 + (1 - a)*DEA1
BAR2=2*(DIF2-DEA2)
return EXPMA12_2,EXPMA26_2,DIF2,DEA2,BAR2

def initialize(context):
global init_price
init_price = None
# 获取沪深300股票
g.security = get_index_stocks('000300.SS')
#g.security = ['600570.SS']
# 设置我们要操作的股票池, 这里我们只操作一支股票
set_universe(g.security)

def handle_data(context, data):
# 获取历史数据,这里只获取了2天的数据,如果希望最终MACD指标结果更准确最好是获取
# 从股票上市至今的所有历史数据,即增加获取的天数
close_price = get_history(2, '1d', field='close', security_list=g.security)
#如果是停牌不进行计算
for security in g.security:
if data[security].is_open >0:
global init_price,EXPMA12_1,EXPMA26_1,EXPMA12_2,EXPMA26_2,DIF1,DIF2,DEA1,DEA2
if init_price is None:
init_price = close_price[security].mean()#nan和N-1个数,mean为N-1个数的均值
EXPMA12_1 = init_price
EXPMA26_1 = init_price
DIF1 = init_price
DEA1 = init_price
# m用于计算平滑系数a=m/(N+1)
m = 2.0
#设定指数平滑基期数
N1 = 12
N2 = 26
N3 = 9
EXPMA12_2,EXPMA26_2,DIF2,DEA2,BAR2 = macd(N1,N2,N3,m,EXPMA12_1,EXPMA26_1,DEA1,close_price[security][-1])
# 取得当前价格
current_price = data[security].price
# 取得当前的现金
cash = context.portfolio.cash
# DIF、DEA均为正,DIF向上突破DEA,买入信号参考
if DIF2 > 0 and DEA2 > 0 and DIF1 < DEA1 and DIF2 > DEA2:
# 计算可以买多少只股票
number_of_shares = int(cash/current_price)
# 购买量大于0时,下单
if number_of_shares > 0:
# 以市单价买入股票,日回测时即是开盘价
order(security, +number_of_shares)
# 记录这次买入
log.info("Buying %s" % (security))
# DIF、DEA均为负,DIF向下突破DEA,卖出信号参考
elif DIF2 < 0 and DEA2 < 0 and DIF1 > DEA1 and DIF2 < DEA2 and get_position(security).amount > 0:
# 卖出所有股票,使这只股票的最终持有量为0
order_target(security, 0)
# 记录这次卖出
log.info("Selling %s" % (security))
# 将今日的值赋给全局变量作为下一次前一日的值
DEA1 = DEA2
DIF1 = DIF2
EXPMA12_1 = EXPMA12_2
EXPMA26_1 = EXPMA26_2
 
软件与交易接口开通条件:

开通该券商后,存入资金指定资金即可开通。开通后股票交易费率万一

本身券商的交易费率为股票万一,可转债沪百万分之五,深十万分之五,基金万0.5,非常厚道。
 
不太了解量化行业的可以了解下,不少面向机构的量化交易软件的佣金是万2.5的,且开户门槛高,基本是500W以上,比如华泰的matic量化的门槛是1千万元起步。

所以笔者还是很推荐目前该券商的量化交易接口。

需要开通咨询了解的朋友可以扫码联系:


开通券商账户后可以 可以先试用,再考虑是否开通量化接口权限 查看全部
目前不少在A股做量化的大部分使用tushare,优矿,米筐,聚宽等等,无论教程,还是实际操作,基本没见有教怎么用程序下单,实盘交易的。

而退而求其次使用按键精灵,模拟点击交易软件进行点击下单,非常不稳定,无法判断下单后是否成交,也无法实时获取行情数据。如果使用tushare或者新浪接口数据,扫描一次全市场的行情用时很久且不稳定,等扫描结束,再下单,此时价格可能已经是几分钟前的了,且此类接口调用次数多是会被封IP的。

笔者使用的是券商提供的量化软件:Ptrade。是恒生电子研发的提供给机构使用的程序化交易软件。提供策略回测,下单API接口,实时行情获取,并且使用的开发语言python,易于上手。

策略回测与实盘交易
UrD5TUnxZD.png

研究页面

研究页面,熟悉python jupyter notebook的朋友对这个界面肯定很熟悉。

研究的页面实际就运行你逐行输出调试程序,了解每个函数的具体使用,或者你策略的中途结果调试。

Hc8f4UtMfW.png

 
回测策略

实际代码需要在回测策略里面写,写完后确定无误,就可以放在仿真环境下真实运行。如果你运行得到的结果很满意,那么就可以直接部署到实盘服务器上。实盘服务器是在券商那边,不需要个人购买服务器,也不需要本地开着这个Ptrade,就是说不需要在个人电脑上一直开着跑,你的最终代码和程序是在券商服务器上部署与运行,除非有报错异常停止,不然在你不暂停或者停止的前提下,可以一直运行下去。

Pig1iRRQnP.png



25YjBEdOqa.png


条件满足后下单

可视化量化

同时也提供一些常见的现成的量化策略,选中后只要鼠标点点点也能够自动化跑这些策略了,当然里面很多参数都可以用鼠标点点点修改。

kTmn9iOXaS.png

 
接口文档也非常详细:
v4QFDpHNpd.png

 
一些常见策略代码:

集合竞价追涨停策略
def initialize(context):
# 初始化此策略
# 设置我们要操作的股票池, 这里我们只操作一支股票
g.security = '600570.SS'
set_universe(g.security)
#每天9:23分运行集合竞价处理函数
run_daily(context, aggregate_auction_func, time='9:23')

def aggregate_auction_func(context):
stock = g.security
#最新价
snapshot = get_snapshot(stock)
price = snapshot[stock]['last_px']
#涨停价
up_limit = snapshot[stock]['up_px']
#如果最新价不小于涨停价,买入
if float(price) >= float(up_limit):
order(g.security, 100, limit_price=up_limit)

def handle_data(context, data):
pass

双均线策略
def initialize(context):
# 初始化此策略
# 设置我们要操作的股票池, 这里我们只操作一支股票
g.security = '600570.SS'
set_universe(g.security)
pass

#当五日均线高于十日均线时买入,当五日均线低于十日均线时卖出
def handle_data(context, data):
security = g.security

#得到十日历史价格
df = get_history(10, '1d', 'close', security, fq=None, include=False)

# 得到五日均线价格
ma5 = round(df['close'][-5:].mean(), 3)

# 得到十日均线价格
ma10 = round(df['close'][-10:].mean(), 3)

# 取得昨天收盘价
price = data[security]['close']

# 得到当前资金余额
cash = context.portfolio.cash

# 如果当前有余额,并且五日均线大于十日均线
if ma5 > ma10:
# 用所有 cash 买入股票
order_value(security, cash)
# 记录这次买入
log.info("Buying %s" % (security))

# 如果五日均线小于十日均线,并且目前有头寸
elif ma5 < ma10 and get_position(security).amount > 0:
# 全部卖出
order_target(security, 0)
# 记录这次卖出
log.info("Selling %s" % (security))

 
tick级别均线策略

通俗点就是按照秒级别进行操作。
def initialize(context):
# 初始化此策略
# 设置我们要操作的股票池, 这里我们只操作一支股票
g.security = '600570.SS'
set_universe(g.security)
#每3秒运行一次主函数
run_interval(context, func, seconds=3)

#盘前准备历史数据
def before_trading_start(context, data):
history = get_history(10, '1d', 'close', g.security, fq='pre', include=False)
g.close_array = history['close'].values

#当五日均线高于十日均线时买入,当五日均线低于十日均线时卖出
def func(context):

stock = g.security

#获取最新价
snapshot = get_snapshot(stock)
price = snapshot[stock]['last_px']

# 得到五日均线价格
days = 5
ma5 = get_MA_day(stock, days, g.close_array[-4:], price)
# 得到十日均线价格
days = 10
ma10 = get_MA_day(stock, days, g.close_array[-9:], price)

# 得到当前资金余额
cash = context.portfolio.cash

# 如果当前有余额,并且五日均线大于十日均线
if ma5 > ma10:
# 用所有 cash 买入股票
order_value(stock, cash)
# 记录这次买入
log.info("Buying %s" % (stock))

# 如果五日均线小于十日均线,并且目前有头寸
elif ma5 < ma10 and get_position(stock).amount > 0:
# 全部卖出
order_target(stock, 0)
# 记录这次卖出
log.info("Selling %s" % (stock))

#计算实时均线函数
def get_MA_day(stock,days,close_array,current_price):
close_sum = close_array[-(days-1):].sum()
MA = (current_price + close_sum)/days
return MA

def handle_data(context, data):
pass

 
macd策略
def f_expma(N,m,EXPMA1,price):
a = m/(N+1)
EXPMA2 = a * price + (1 - a)*EXPMA1
return EXPMA2 #2为后一天值

#定义macd函数,输入平滑系数参数、前一日值,输出当日值
def macd(N1,N2,N3,m,EXPMA12_1,EXPMA26_1,DEA1,price):
EXPMA12_2 = f_expma(N1,m,EXPMA12_1,price)
EXPMA26_2 = f_expma(N2,m,EXPMA26_1,price)
DIF2 = EXPMA12_2 - EXPMA26_2
a = m/(N3+1)
DEA2 = a * DIF2 + (1 - a)*DEA1
BAR2=2*(DIF2-DEA2)
return EXPMA12_2,EXPMA26_2,DIF2,DEA2,BAR2

def initialize(context):
global init_price
init_price = None
# 获取沪深300股票
g.security = get_index_stocks('000300.SS')
#g.security = ['600570.SS']
# 设置我们要操作的股票池, 这里我们只操作一支股票
set_universe(g.security)

def handle_data(context, data):
# 获取历史数据,这里只获取了2天的数据,如果希望最终MACD指标结果更准确最好是获取
# 从股票上市至今的所有历史数据,即增加获取的天数
close_price = get_history(2, '1d', field='close', security_list=g.security)
#如果是停牌不进行计算
for security in g.security:
if data[security].is_open >0:
global init_price,EXPMA12_1,EXPMA26_1,EXPMA12_2,EXPMA26_2,DIF1,DIF2,DEA1,DEA2
if init_price is None:
init_price = close_price[security].mean()#nan和N-1个数,mean为N-1个数的均值
EXPMA12_1 = init_price
EXPMA26_1 = init_price
DIF1 = init_price
DEA1 = init_price
# m用于计算平滑系数a=m/(N+1)
m = 2.0
#设定指数平滑基期数
N1 = 12
N2 = 26
N3 = 9
EXPMA12_2,EXPMA26_2,DIF2,DEA2,BAR2 = macd(N1,N2,N3,m,EXPMA12_1,EXPMA26_1,DEA1,close_price[security][-1])
# 取得当前价格
current_price = data[security].price
# 取得当前的现金
cash = context.portfolio.cash
# DIF、DEA均为正,DIF向上突破DEA,买入信号参考
if DIF2 > 0 and DEA2 > 0 and DIF1 < DEA1 and DIF2 > DEA2:
# 计算可以买多少只股票
number_of_shares = int(cash/current_price)
# 购买量大于0时,下单
if number_of_shares > 0:
# 以市单价买入股票,日回测时即是开盘价
order(security, +number_of_shares)
# 记录这次买入
log.info("Buying %s" % (security))
# DIF、DEA均为负,DIF向下突破DEA,卖出信号参考
elif DIF2 < 0 and DEA2 < 0 and DIF1 > DEA1 and DIF2 < DEA2 and get_position(security).amount > 0:
# 卖出所有股票,使这只股票的最终持有量为0
order_target(security, 0)
# 记录这次卖出
log.info("Selling %s" % (security))
# 将今日的值赋给全局变量作为下一次前一日的值
DEA1 = DEA2
DIF1 = DIF2
EXPMA12_1 = EXPMA12_2
EXPMA26_1 = EXPMA26_2

 
软件与交易接口开通条件:

开通该券商后,存入资金指定资金即可开通。开通后股票交易费率万一

本身券商的交易费率为股票万一,可转债沪百万分之五,深十万分之五,基金万0.5,非常厚道。
 
不太了解量化行业的可以了解下,不少面向机构的量化交易软件的佣金是万2.5的,且开户门槛高,基本是500W以上,比如华泰的matic量化的门槛是1千万元起步。

所以笔者还是很推荐目前该券商的量化交易接口。

需要开通咨询了解的朋友可以扫码联系:


开通券商账户后可以 可以先试用,再考虑是否开通量化接口权限

雪球大v 港股打新王开 据说是骗子,入群收益千万,睡粉丝,睡券商经理

股票绫波丽 发表了文章 • 0 个评论 • 3499 次浏览 • 2021-07-05 23:42 • 来自相关话题

不得不说,雪球上被邀请上去演讲的,都差不多是这样割韭菜的,螺丝钉走穴,卖星球,卖课,走穴,卖基金。
现在这个王开貌似也是荐股收费,还睡人了。
 
 
网络转载文字,网友意见。如有侵权,请联系删除。
Selection_001.png

不得不说,雪球上被邀请上去演讲的,都差不多是这样割韭菜的,螺丝钉走穴,卖星球,卖课,走穴,卖基金。
现在这个王开貌似也是荐股收费,还睡人了。
 
 
网络转载文字,网友意见。如有侵权,请联系删除。

pycharm 2021.1 ubuntu 激活方法

闲聊绫波丽 发表了文章 • 0 个评论 • 4268 次浏览 • 2021-07-05 18:07 • 来自相关话题

最新的版本是pycharm2021.1 , 在ubuntu16.04 上可以使用软件中心下载,很方便,不需要自己编译啥的。下载完成就直接而已使用了。 直接下载pycharm pro版本。
 
然后使用 ide-eval-resetter zip这个插件,每到30天的时候可以reset一下使用日期,就可以无限使用。
 
插件获取:
关注公众号:

后台回复:
pycharm插件
 
即可获取最新的pycharm激活插件。 
 
下载后不需要解压,直接拖入到pycharm中,然后按照插件。然后会在About里面多了一个设置
每次点一下reset,满血复活

 
并且建议勾上,每次重启时重置时间的选项。 这样每次pycharm重启时都可以把时间延长30天。
  查看全部
最新的版本是pycharm2021.1 , 在ubuntu16.04 上可以使用软件中心下载,很方便,不需要自己编译啥的。下载完成就直接而已使用了。 直接下载pycharm pro版本。
 
然后使用 ide-eval-resetter zip这个插件,每到30天的时候可以reset一下使用日期,就可以无限使用。
 
插件获取:
关注公众号:

后台回复:
pycharm插件
 
即可获取最新的pycharm激活插件。 
 
下载后不需要解压,直接拖入到pycharm中,然后按照插件。然后会在About里面多了一个设置
每次点一下reset,满血复活

 
并且建议勾上,每次重启时重置时间的选项。 这样每次pycharm重启时都可以把时间延长30天。
 

ubuntu16.04 无法访问github

Linux李魔佛 发表了文章 • 0 个评论 • 1825 次浏览 • 2021-07-05 15:26 • 来自相关话题

ubuntu 无法访问github
也无法拉去代码。
网上搜了一通,没有一个能够解决问题的。
最终自己折腾了下,把 /etc/hosts 文件里的ipv6的地址注释掉了,就可以访问了。

ubuntu 无法访问github
也无法拉去代码。
网上搜了一通,没有一个能够解决问题的。
最终自己折腾了下,把 /etc/hosts 文件里的ipv6的地址注释掉了,就可以访问了。

python自然语言处理与开发 勘误

深度学习李魔佛 发表了文章 • 0 个评论 • 1658 次浏览 • 2021-07-01 16:44 • 来自相关话题

看书中,定期更新。 2021-06-30
【心情不好,一开始代码就错了】
 P42:
代码:root = Node(word[0])
改为self.root
 
代码无语了,用的关键字作为参数,变量名,比如input
 
然后第一个程序就是错的,上机时无法运行。  查看全部
看书中,定期更新。 2021-06-30
【心情不好,一开始代码就错了】
 P42:
代码:root = Node(word[0])
改为self.root
 
代码无语了,用的关键字作为参数,变量名,比如input
 
然后第一个程序就是错的,上机时无法运行。 

量化交易接口python A股

股票绫波丽 发表了文章 • 0 个评论 • 6542 次浏览 • 2021-07-01 11:22 • 来自相关话题

不少在A股做量化的基本千篇一律tushare,优矿,米筐,聚宽等等,无论教程也好。
 
实际操作也好,几乎没见几个人教你怎么用程序下单,实盘交易。


稍微好点的easytrader使用的是模拟点击交易软件进行点击下单,基本无法判断下单后是否成交,也无法实时获取行情数据。别跟我说用tushare或者新浪这些接口数据,除非你做的是低频交易。
 
试试扫描一次全市场的行情看看用时多少?等得到满足条件了,再下单,此时价格可能已经在涨停板上封住了。


笔者使用的是券商提供的量化软件:Ptrade。
 
是恒生电子研发的提供给券商机构使用的程序化交易软件。提供策略回测,自动下单功能,使用的开发语言python。


策略回测与实盘交易






研究页面


研究页面,熟悉python jupyter notebook的朋友对这个界面肯定很熟悉。

研究的页面实际就运行你逐行输出调试程序,了解每个函数的具体使用,或者你策略的中途结果调试。








回测策略

实际代码需要在回测策略里面写,写完后确定无误,就可以放在仿真环境下真实运行。
 
如果你运行得到的结果很满意,那么就可以直接部署到实盘服务器上。
 
实盘服务器是在券商那边,不需要个人购买服务器,也不需要本地开着这个Ptrade,就是说不需要在个人电脑上一直开着跑,你的最终代码和程序是在券商服务器上部署与运行,除非有报错异常停止,不然在你不暂停或者停止的前提下,可以一直运行下去。












条件满足后下单

可视化量化

同时也提供一些常见的现成的量化策略,选中后只要鼠标点点点也能够自动化跑这些策略了,当然里面很多参数都可以用鼠标点点点修改。






接口文档也非常详细:








一些常见策略代码:

双均线策略 def initialize(context):
2 # 初始化此策略
3 # 设置我们要操作的股票池, 这里我们只操作一支股票
4 g.security = '600570.SS'
5 set_universe(g.security)
6 pass
7
8 #当五日均线高于十日均线时买入,当五日均线低于十日均线时卖出
9 def handle_data(context, data):
10 security = g.security
11
12 #得到十日历史价格
13 df = get_history(10, '1d', 'close', security, fq=None, include=False)
14
15 # 得到五日均线价格
16 ma5 = round(df['close'][-5:].mean(), 3)
17
18 # 得到十日均线价格
19 ma10 = round(df['close'][-10:].mean(), 3)
20
21 # 取得昨天收盘价
22 price = data[security]['close']
23
24 # 得到当前资金余额
25 cash = context.portfolio.cash
26
27 # 如果当前有余额,并且五日均线大于十日均线
28 if ma5 > ma10:
29 # 用所有 cash 买入股票
30 order_value(security, cash)
31 # 记录这次买入
32 log.info("Buying %s" % (security))
33
34 # 如果五日均线小于十日均线,并且目前有头寸
35 elif ma5 < ma10 and get_position(security).amount > 0:
36 # 全部卖出
37 order_target(security, 0)
38 # 记录这次卖出
39 log.info("Selling %s" % (security))
 macd策略
指数平滑均线函数,以price计算,可以选择收盘、开盘价等价格,N为时间周期,m用于计算平滑系数a=m/(N+1),EXPMA1为前一日值 def f_expma(N,m,EXPMA1,price):
2 a = m/(N+1)
3 EXPMA2 = a * price + (1 - a)*EXPMA1
4 return EXPMA2 #2为后一天值
5
6 #定义macd函数,输入平滑系数参数、前一日值,输出当日值
7 def macd(N1,N2,N3,m,EXPMA12_1,EXPMA26_1,DEA1,price):
8 EXPMA12_2 = f_expma(N1,m,EXPMA12_1,price)
9 EXPMA26_2 = f_expma(N2,m,EXPMA26_1,price)
10 DIF2 = EXPMA12_2 - EXPMA26_2
11 a = m/(N3+1)
12 DEA2 = a * DIF2 + (1 - a)*DEA1
13 BAR2=2*(DIF2-DEA2)
14 return EXPMA12_2,EXPMA26_2,DIF2,DEA2,BAR2
15
16 def initialize(context):
17 global init_price
18 init_price = None
19 # 获取沪深300股票
20 g.security = get_index_stocks('000300.SS')
21 #g.security = ['600570.SS']
22 # 设置我们要操作的股票池, 这里我们只操作一支股票
23 set_universe(g.security)
24
25 def handle_data(context, data):
26 # 获取历史数据,这里只获取了2天的数据,如果希望最终MACD指标结果更准确最好是获取
27 # 从股票上市至今的所有历史数据,即增加获取的天数
28 close_price = get_history(2, '1d', field='close', security_list=g.security)
29 #如果是停牌不进行计算
30 for security in g.security:
31 if data[security].is_open >0:
32 global init_price,EXPMA12_1,EXPMA26_1,EXPMA12_2,EXPMA26_2,DIF1,DIF2,DEA1,DEA2
33 if init_price is None:
34 init_price = close_price[security].mean()#nan和N-1个数,mean为N-1个数的均值
35 EXPMA12_1 = init_price
36 EXPMA26_1 = init_price
37 DIF1 = init_price
38 DEA1 = init_price
39 # m用于计算平滑系数a=m/(N+1)
40 m = 2.0
41 #设定指数平滑基期数
42 N1 = 12
43 N2 = 26
44 N3 = 9
45 EXPMA12_2,EXPMA26_2,DIF2,DEA2,BAR2 = macd(N1,N2,N3,m,EXPMA12_1,EXPMA26_1,DEA1,close_price[security][-1])
46 # 取得当前价格
47 current_price = data[security].price
48 # 取得当前的现金
49 cash = context.portfolio.cash
50 # DIF、DEA均为正,DIF向上突破DEA,买入信号参考
51 if DIF2 > 0 and DEA2 > 0 and DIF1 < DEA1 and DIF2 > DEA2:
52 # 计算可以买多少只股票
53 number_of_shares = int(cash/current_price)
54 # 购买量大于0时,下单
55 if number_of_shares > 0:
56 # 以市单价买入股票,日回测时即是开盘价
57 order(security, +number_of_shares)
58 # 记录这次买入
59 log.info("Buying %s" % (security))
60 # DIF、DEA均为负,DIF向下突破DEA,卖出信号参考
61 elif DIF2 < 0 and DEA2 < 0 and DIF1 > DEA1 and DIF2 < DEA2 and get_position(security).amount > 0:
62 # 卖出所有股票,使这只股票的最终持有量为0
63 order_target(security, 0)
64 # 记录这次卖出
65 log.info("Selling %s" % (security))
66 # 将今日的值赋给全局变量作为下一次前一日的值
67 DEA1 = DEA2
68 DIF1 = DIF2
69 EXPMA12_1 = EXPMA12_2
70 EXPMA26_1 = EXPMA26_2
 
同时也支持可转债T+0交易,笔者平时也主要是进行的可转债的交易。
 
软件与交易接口开通条件,

开通改券商后,存入资金50W放2周即可开通,开通后可取出。

本身券商的交易费率为股票万一免五,可转债百万分之二,非常厚道,因为不少面向机构的量化交易软件的佣金是万2.5的,笔者之前在国金渠道开的就是,坑的一比。所以笔者还是很推荐目前该券商的量化交易接口。
 
需要可以关注公众号获取开通链接: 查看全部
不少在A股做量化的基本千篇一律tushare,优矿,米筐,聚宽等等,无论教程也好。
 
实际操作也好,几乎没见几个人教你怎么用程序下单,实盘交易。


稍微好点的easytrader使用的是模拟点击交易软件进行点击下单,基本无法判断下单后是否成交,也无法实时获取行情数据。别跟我说用tushare或者新浪这些接口数据,除非你做的是低频交易。
 
试试扫描一次全市场的行情看看用时多少?等得到满足条件了,再下单,此时价格可能已经在涨停板上封住了。


笔者使用的是券商提供的量化软件:Ptrade
 
是恒生电子研发的提供给券商机构使用的程序化交易软件。提供策略回测,自动下单功能,使用的开发语言python。


策略回测与实盘交易

UrD5TUnxZD.png


研究页面


研究页面,熟悉python jupyter notebook的朋友对这个界面肯定很熟悉。

研究的页面实际就运行你逐行输出调试程序,了解每个函数的具体使用,或者你策略的中途结果调试。


Hc8f4UtMfW.png



回测策略

实际代码需要在回测策略里面写,写完后确定无误,就可以放在仿真环境下真实运行。
 
如果你运行得到的结果很满意,那么就可以直接部署到实盘服务器上。
 
实盘服务器是在券商那边,不需要个人购买服务器,也不需要本地开着这个Ptrade,就是说不需要在个人电脑上一直开着跑,你的最终代码和程序是在券商服务器上部署与运行,除非有报错异常停止,不然在你不暂停或者停止的前提下,可以一直运行下去。

Pig1iRRQnP.png



25YjBEdOqa.png


条件满足后下单

可视化量化

同时也提供一些常见的现成的量化策略,选中后只要鼠标点点点也能够自动化跑这些策略了,当然里面很多参数都可以用鼠标点点点修改。

kTmn9iOXaS.png


接口文档也非常详细:


v4QFDpHNpd.png



一些常见策略代码:

双均线策略
    def initialize(context):
2 # 初始化此策略
3 # 设置我们要操作的股票池, 这里我们只操作一支股票
4 g.security = '600570.SS'
5 set_universe(g.security)
6 pass
7
8 #当五日均线高于十日均线时买入,当五日均线低于十日均线时卖出
9 def handle_data(context, data):
10 security = g.security
11
12 #得到十日历史价格
13 df = get_history(10, '1d', 'close', security, fq=None, include=False)
14
15 # 得到五日均线价格
16 ma5 = round(df['close'][-5:].mean(), 3)
17
18 # 得到十日均线价格
19 ma10 = round(df['close'][-10:].mean(), 3)
20
21 # 取得昨天收盘价
22 price = data[security]['close']
23
24 # 得到当前资金余额
25 cash = context.portfolio.cash
26
27 # 如果当前有余额,并且五日均线大于十日均线
28 if ma5 > ma10:
29 # 用所有 cash 买入股票
30 order_value(security, cash)
31 # 记录这次买入
32 log.info("Buying %s" % (security))
33
34 # 如果五日均线小于十日均线,并且目前有头寸
35 elif ma5 < ma10 and get_position(security).amount > 0:
36 # 全部卖出
37 order_target(security, 0)
38 # 记录这次卖出
39 log.info("Selling %s" % (security))

 macd策略
指数平滑均线函数,以price计算,可以选择收盘、开盘价等价格,N为时间周期,m用于计算平滑系数a=m/(N+1),EXPMA1为前一日值
    def f_expma(N,m,EXPMA1,price):
2 a = m/(N+1)
3 EXPMA2 = a * price + (1 - a)*EXPMA1
4 return EXPMA2 #2为后一天值
5
6 #定义macd函数,输入平滑系数参数、前一日值,输出当日值
7 def macd(N1,N2,N3,m,EXPMA12_1,EXPMA26_1,DEA1,price):
8 EXPMA12_2 = f_expma(N1,m,EXPMA12_1,price)
9 EXPMA26_2 = f_expma(N2,m,EXPMA26_1,price)
10 DIF2 = EXPMA12_2 - EXPMA26_2
11 a = m/(N3+1)
12 DEA2 = a * DIF2 + (1 - a)*DEA1
13 BAR2=2*(DIF2-DEA2)
14 return EXPMA12_2,EXPMA26_2,DIF2,DEA2,BAR2
15
16 def initialize(context):
17 global init_price
18 init_price = None
19 # 获取沪深300股票
20 g.security = get_index_stocks('000300.SS')
21 #g.security = ['600570.SS']
22 # 设置我们要操作的股票池, 这里我们只操作一支股票
23 set_universe(g.security)
24
25 def handle_data(context, data):
26 # 获取历史数据,这里只获取了2天的数据,如果希望最终MACD指标结果更准确最好是获取
27 # 从股票上市至今的所有历史数据,即增加获取的天数
28 close_price = get_history(2, '1d', field='close', security_list=g.security)
29 #如果是停牌不进行计算
30 for security in g.security:
31 if data[security].is_open >0:
32 global init_price,EXPMA12_1,EXPMA26_1,EXPMA12_2,EXPMA26_2,DIF1,DIF2,DEA1,DEA2
33 if init_price is None:
34 init_price = close_price[security].mean()#nan和N-1个数,mean为N-1个数的均值
35 EXPMA12_1 = init_price
36 EXPMA26_1 = init_price
37 DIF1 = init_price
38 DEA1 = init_price
39 # m用于计算平滑系数a=m/(N+1)
40 m = 2.0
41 #设定指数平滑基期数
42 N1 = 12
43 N2 = 26
44 N3 = 9
45 EXPMA12_2,EXPMA26_2,DIF2,DEA2,BAR2 = macd(N1,N2,N3,m,EXPMA12_1,EXPMA26_1,DEA1,close_price[security][-1])
46 # 取得当前价格
47 current_price = data[security].price
48 # 取得当前的现金
49 cash = context.portfolio.cash
50 # DIF、DEA均为正,DIF向上突破DEA,买入信号参考
51 if DIF2 > 0 and DEA2 > 0 and DIF1 < DEA1 and DIF2 > DEA2:
52 # 计算可以买多少只股票
53 number_of_shares = int(cash/current_price)
54 # 购买量大于0时,下单
55 if number_of_shares > 0:
56 # 以市单价买入股票,日回测时即是开盘价
57 order(security, +number_of_shares)
58 # 记录这次买入
59 log.info("Buying %s" % (security))
60 # DIF、DEA均为负,DIF向下突破DEA,卖出信号参考
61 elif DIF2 < 0 and DEA2 < 0 and DIF1 > DEA1 and DIF2 < DEA2 and get_position(security).amount > 0:
62 # 卖出所有股票,使这只股票的最终持有量为0
63 order_target(security, 0)
64 # 记录这次卖出
65 log.info("Selling %s" % (security))
66 # 将今日的值赋给全局变量作为下一次前一日的值
67 DEA1 = DEA2
68 DIF1 = DIF2
69 EXPMA12_1 = EXPMA12_2
70 EXPMA26_1 = EXPMA26_2

 
同时也支持可转债T+0交易,笔者平时也主要是进行的可转债的交易。
 
软件与交易接口开通条件,

开通改券商后,存入资金50W放2周即可开通,开通后可取出。

本身券商的交易费率为股票万一免五,可转债百万分之二,非常厚道,因为不少面向机构的量化交易软件的佣金是万2.5的,笔者之前在国金渠道开的就是,坑的一比。所以笔者还是很推荐目前该券商的量化交易接口。
 
需要可以关注公众号获取开通链接:

资金超过50万 可以一次过开通哪些权限

券商万一免五绫波丽 发表了文章 • 0 个评论 • 5947 次浏览 • 2021-06-30 12:12 • 来自相关话题

这里的资金是单账户资金,包含逆回购等。可以一次性开通以下权限,免得多次来回折腾。

科创板
期权
港股通
融资融券

附各开通条件:

1. 创业板开通条件

创业板的开通分为两种情况,以前再其他券商开通过和从来没有开通过。

以前开通过创业板:是可以直接转签的

以前没有开通过创业板:需要满足两年交易经验(从第一笔股票交易算起)、20日日均不低于10万的资金要求。

2. 科创板开通条件

申请开通前20个交易日日均资产不低于50万,且至少有5个交易日资产不低于50万证券;两年以上交易经验;科创板知识测评80分以上。

3. 港股通开通条件

申请开通前20个交易日日均资产不低于50万;开户满20个交易日以上;港股通知识测评80分以上;风险承受能力稳健性及以上。

4. 融资融券开通条件

申请开通前20个交易日日均资产不低于50万;半年以上的投资经验;风险承受能力积极或者激进型;知识测评80分以上且完成投资者教育视频。

5. 期权开通条件

申请开通前20个交易日日均资产不低于50万;开户满20个交易日以上;上海A股证券账户开立时间六个月以上并开立融资融券账户或者具备金融期货交易经验;具备期权基础知识,通过相关测试;具有上交所认可的期权模拟交易经验;具有相应风险承受能力。

6.期货开通

普通的期货品种手机上面开通直接就可以交易了,股指期货需要满足:5个交易日每个交易日商品期货账户有50万资金;基础测试80分以上;交易经验记录或者是模拟交易。

目前除了融资融券和期权需要临柜办理,其他都在手机上就可以直接开通。
 
万一免五开户,可转债百万分之二
扫描联系:备注 开户, 否则不通过哈

  查看全部
这里的资金是单账户资金,包含逆回购等。可以一次性开通以下权限,免得多次来回折腾。

科创板
期权
港股通
融资融券

附各开通条件:

1. 创业板开通条件

创业板的开通分为两种情况,以前再其他券商开通过和从来没有开通过。

以前开通过创业板:是可以直接转签的

以前没有开通过创业板:需要满足两年交易经验(从第一笔股票交易算起)、20日日均不低于10万的资金要求。

2. 科创板开通条件

申请开通前20个交易日日均资产不低于50万,且至少有5个交易日资产不低于50万证券;两年以上交易经验;科创板知识测评80分以上。

3. 港股通开通条件

申请开通前20个交易日日均资产不低于50万;开户满20个交易日以上;港股通知识测评80分以上;风险承受能力稳健性及以上。

4. 融资融券开通条件

申请开通前20个交易日日均资产不低于50万;半年以上的投资经验;风险承受能力积极或者激进型;知识测评80分以上且完成投资者教育视频。

5. 期权开通条件

申请开通前20个交易日日均资产不低于50万;开户满20个交易日以上;上海A股证券账户开立时间六个月以上并开立融资融券账户或者具备金融期货交易经验;具备期权基础知识,通过相关测试;具有上交所认可的期权模拟交易经验;具有相应风险承受能力。

6.期货开通

普通的期货品种手机上面开通直接就可以交易了,股指期货需要满足:5个交易日每个交易日商品期货账户有50万资金;基础测试80分以上;交易经验记录或者是模拟交易。

目前除了融资融券和期权需要临柜办理,其他都在手机上就可以直接开通。
 
万一免五开户,可转债百万分之二
扫描联系:备注 开户, 否则不通过哈

 

python rabbitmq 连接时无法正常发送和接受消息

python李魔佛 发表了文章 • 0 个评论 • 2060 次浏览 • 2021-06-28 19:44 • 来自相关话题

用的是有密码的连接:auth = pika.PlainCredentials(user,password)
connection = pika.BlockingConnection(pika.ConnectionParameters(host,port,'/',auth))使用上面的这个连接方式,消费者一只等待生产者生产数据,而生产数据者发出消息后,也无法正常发给消费者。
而在页面中其实是可以看到有对应的消息的。
 
后面发行上面的连接方式是由问题的,在于'/' 参数问题,因为默认参数的位置关系,‘/’ 并不是赋值给了virtual_host , 而是另外的参数。 所以解决问题的方法就是把每个参数的形参也写上去:auth = pika.PlainCredentials(user,password)
connection = pika.BlockingConnection(pika.ConnectionParameters(host=host,port=port,virtual_host='/',credentials=auth)) 
PS: 后面经过实际调试,原理是git的自带终端窗口的问题,用cmd命令行下面就没有这个问题。 查看全部
用的是有密码的连接:
auth = pika.PlainCredentials(user,password)
connection = pika.BlockingConnection(pika.ConnectionParameters(host,port,'/',auth))
使用上面的这个连接方式,消费者一只等待生产者生产数据,而生产数据者发出消息后,也无法正常发给消费者。
而在页面中其实是可以看到有对应的消息的。
 
后面发行上面的连接方式是由问题的,在于'/' 参数问题,因为默认参数的位置关系,‘/’ 并不是赋值给了virtual_host , 而是另外的参数。 所以解决问题的方法就是把每个参数的形参也写上去:
auth = pika.PlainCredentials(user,password)
connection = pika.BlockingConnection(pika.ConnectionParameters(host=host,port=port,virtual_host='/',credentials=auth))
 
PS: 后面经过实际调试,原理是git的自带终端窗口的问题,用cmd命令行下面就没有这个问题。