ptrade python最新版本支持3.11

为更好的给投资者提供更优质的交易服务。 

国金证券 PTRADE智能策略交易终端预期3月底4月中做实盘版本升级。
 
操作手册和开发手册请登录测试客户端后点击右上角帮助和量化菜单下帮助获取。
 
量化接口升级说明下载链接:https:/pan.baidu.com/s/1S5xXHpOLFVDYdJrOgYDBqA 提取码:gjz9。
 
本次主干版本升级涉及的问题修复、功能优化和需求实现较多,策略量化AP变动较大,python版本升级311。
 
如您有在运行的策略程序、工具功能等,请务必进行测试环境验证调整,确认策略程序在python311环境、工具功能等可正常运行。
 
实盘确认升级完成后,您需要将测试环境验证后策略迁移实盘后重新启用。
 
如您需新开通测试环境账户,可与我司服务老师联系获取。感谢各位长期以来对我公司的信任和支持,由此给各位带来的不便敬请谅解。谢谢!

20250227135305.png


 
需要开通的可以联系:
继续阅读 »
为更好的给投资者提供更优质的交易服务。 

国金证券 PTRADE智能策略交易终端预期3月底4月中做实盘版本升级。
 
操作手册和开发手册请登录测试客户端后点击右上角帮助和量化菜单下帮助获取。
 
量化接口升级说明下载链接:https:/pan.baidu.com/s/1S5xXHpOLFVDYdJrOgYDBqA 提取码:gjz9。
 
本次主干版本升级涉及的问题修复、功能优化和需求实现较多,策略量化AP变动较大,python版本升级311。
 
如您有在运行的策略程序、工具功能等,请务必进行测试环境验证调整,确认策略程序在python311环境、工具功能等可正常运行。
 
实盘确认升级完成后,您需要将测试环境验证后策略迁移实盘后重新启用。
 
如您需新开通测试环境账户,可与我司服务老师联系获取。感谢各位长期以来对我公司的信任和支持,由此给各位带来的不便敬请谅解。谢谢!

20250227135305.png


 
需要开通的可以联系:
收起阅读 »

Grok3对比国内的AI应用,效果差得很远,举例豆包

在群里有个小伙伴咨询了一个问题:
有A的期权是啥意思。
 

微信图片_20250221125119_副本.jpg

 
就是这种带A后缀的期权。
 
然后我们看看Grok3的回答

20250221125333.png

 
这个就不是正确答案。胡扯,担心死因为联网搜索,搜索到垃圾信息,于是我也把它的联网搜索功能去掉,依然是得出的垃圾结果。
 
再看看豆包的回复:

20250221125300.png

 
正确答案。
 
不知道为啥那么多人在说grok3好,实在费解。
 
 
 
继续阅读 »
在群里有个小伙伴咨询了一个问题:
有A的期权是啥意思。
 

微信图片_20250221125119_副本.jpg

 
就是这种带A后缀的期权。
 
然后我们看看Grok3的回答

20250221125333.png

 
这个就不是正确答案。胡扯,担心死因为联网搜索,搜索到垃圾信息,于是我也把它的联网搜索功能去掉,依然是得出的垃圾结果。
 
再看看豆包的回复:

20250221125300.png

 
正确答案。
 
不知道为啥那么多人在说grok3好,实在费解。
 
 
  收起阅读 »

QMT获取北交所市场代码

QMT
现在qmt支持北交所交易,但前提也是需要你的账号已经开通了北交所的权限。
 
现在的券商只要你开了科创板,可以直接开通北交所,不再需要20交易日,50w的要求。
 
QMT获取北交所代码:

微信图片_20250221112823.png

 
运行输出结果:

微信图片_20250221112829.png

 
需要开通量化api权限的券商,可以扫码关注并咨询
继续阅读 »
现在qmt支持北交所交易,但前提也是需要你的账号已经开通了北交所的权限。
 
现在的券商只要你开了科创板,可以直接开通北交所,不再需要20交易日,50w的要求。
 
QMT获取北交所代码:

微信图片_20250221112823.png

 
运行输出结果:

微信图片_20250221112829.png

 
需要开通量化api权限的券商,可以扫码关注并咨询
收起阅读 »

ptrade支持外网,mysql 远程数据库的券商

目前大部分券商不支持获取外部网络数据,全部数据都是通过内置的api函数获取。
 
比如如果你要获取可转债的一些强赎数据,内置数据是不支持的。
 
那么如果你想要获取集思录的数据,那么就会无能为力。
 
不过有一个券商可以支持访问外部数据的。因为ptrade内置了pymysq,redis,zeromq,wsocket等第三方库,
 
所以你可以在ptrade内部,直接范围mysql的数据,zeromq的数据,甚至直接和外部的api进行双向通信。
 
实例中直接用requests访问的百度
 
实盘,模拟盘中均可操作。
 

 
需要开通的朋友可以公众号联系:
费率也支持万0.854 免5哦~
继续阅读 »
目前大部分券商不支持获取外部网络数据,全部数据都是通过内置的api函数获取。
 
比如如果你要获取可转债的一些强赎数据,内置数据是不支持的。
 
那么如果你想要获取集思录的数据,那么就会无能为力。
 
不过有一个券商可以支持访问外部数据的。因为ptrade内置了pymysq,redis,zeromq,wsocket等第三方库,
 
所以你可以在ptrade内部,直接范围mysql的数据,zeromq的数据,甚至直接和外部的api进行双向通信。
 
实例中直接用requests访问的百度
 
实盘,模拟盘中均可操作。
 

 
需要开通的朋友可以公众号联系:
费率也支持万0.854 免5哦~
收起阅读 »

用fofa+python搜索别人部署的deepseek服务器,白嫖!

改端口也没用的,如果不添加其他授权,ip白名单
 

20250213125646.png

 
然后用vs code插件,添加自动cline 自动化写代码。
能用,而且速度也挺快!
 

20250213125904.png

 
改端口也没用的,如果不添加其他授权,ip白名单
 

20250213125646.png

 
然后用vs code插件,添加自动cline 自动化写代码。
能用,而且速度也挺快!
 

20250213125904.png

 

本地部署deepseek的api,用于vs code cline,但无法项目自动创建文件

虽然会有内容提示:

20250213120820.png

 
但无法生成文件,
其实是无法理解命令输出
 具体错误提示如下:
Cline is having trouble...
Cline uses complex prompts and iterative task execution that may be challenging for less capable models. For best results, it's recommended to use Claude 3.5 Sonnet for its advanced agentic coding capabilities.

其实是模型不支持,需要用tool use类的模型。
比如:deepseek-r1-coder-tools:32b
 
地址:https://ollama.com/ishumilin/deepseek-r1-coder-tools:32b
 
然后就正常了。
 
 
 
 
继续阅读 »
虽然会有内容提示:

20250213120820.png

 
但无法生成文件,
其实是无法理解命令输出
 具体错误提示如下:
Cline is having trouble...
Cline uses complex prompts and iterative task execution that may be challenging for less capable models. For best results, it's recommended to use Claude 3.5 Sonnet for its advanced agentic coding capabilities.

其实是模型不支持,需要用tool use类的模型。
比如:deepseek-r1-coder-tools:32b
 
地址:https://ollama.com/ishumilin/deepseek-r1-coder-tools:32b
 
然后就正常了。
 
 
 
  收起阅读 »

江海证券支持QMT,miniQMT,且低门槛开通

最近新推出的支持QMT,miniQMT的券商,江海证券。


江海证券有限公司于2003年12月15日在哈尔滨市市场监督管理局登记成立。法定代表人孙名扬,公司经营范围包括证券经纪,证券承销与保荐,证券投资咨询,证券自营等。



20250212004427.jpg

 
这logo看起来有点像银河呢。
 
江海证券现有分支机构75家,其中17家分公司,58家营业部,遍布北京、上海、广州、深圳、厦门、青岛、大连、成都、武汉、长沙、合肥及黑龙江省内等主要城市,形成了“覆盖龙江、辐射沿海、布局全国”的业务发展格局。
 
不过上面的是2018年的数据,最新的可能会少一些。因为现在很多营业部都更加注重线上业务。也就是通过线上就可以开通账号。
 

 
目前江海证券能够开通量化QMT,和miniQMT的自动化交易权限。

20250212004842.png

 
 
下载地址:

江海证券QMT实盘_实盘_1.0.0.36190.exe
 
或者直接到官网:
https://www.jhzq.com.cn/main/home/software/index.shtml
选择QMT下载即可
 
江海证券也支持无限易量化平台。

需要的可以咨询公众号:
继续阅读 »
最近新推出的支持QMT,miniQMT的券商,江海证券。


江海证券有限公司于2003年12月15日在哈尔滨市市场监督管理局登记成立。法定代表人孙名扬,公司经营范围包括证券经纪,证券承销与保荐,证券投资咨询,证券自营等。



20250212004427.jpg

 
这logo看起来有点像银河呢。
 
江海证券现有分支机构75家,其中17家分公司,58家营业部,遍布北京、上海、广州、深圳、厦门、青岛、大连、成都、武汉、长沙、合肥及黑龙江省内等主要城市,形成了“覆盖龙江、辐射沿海、布局全国”的业务发展格局。
 
不过上面的是2018年的数据,最新的可能会少一些。因为现在很多营业部都更加注重线上业务。也就是通过线上就可以开通账号。
 

 
目前江海证券能够开通量化QMT,和miniQMT的自动化交易权限。

20250212004842.png

 
 
下载地址:

江海证券QMT实盘_实盘_1.0.0.36190.exe
 
或者直接到官网:
https://www.jhzq.com.cn/main/home/software/index.shtml
选择QMT下载即可
 
江海证券也支持无限易量化平台。

需要的可以咨询公众号:
收起阅读 »

deepseek等一众AI预测港股古茗翻车

港股--古茗,申购之前用deepseek,kimi,chatgpt,元宝等AI平台问了一圈,结论都不建议申购。

今天暗盘交易,结果就打脸了,古茗在几个平台都是10%涨幅收盘的。

Screenshot_20250211-183413.png



投资里面涉及到各种的因子,包括情绪,有的因子是我们事后才感知的,
 
而AI事前并不能完全感知所以因素,如当前打新行情火热,AI并没有考虑此因子,只是考虑了基石投资者,保荐机构,横向对比同行业的奈雪,茶百道等同行,推断出此次不值得申购。


投资是一群人的博弈游戏,如果根据AI平台得出的意见想法都趋同一致,
 
对于同一标的都看好,或者都不看好,大家都去追捧,可能会被顶到涨停;大家都抛弃,可能没有买量躺在跌停板。

显然,AI时代,需要投资者更异于常人的逆向思维能力。
继续阅读 »
港股--古茗,申购之前用deepseek,kimi,chatgpt,元宝等AI平台问了一圈,结论都不建议申购。

今天暗盘交易,结果就打脸了,古茗在几个平台都是10%涨幅收盘的。

Screenshot_20250211-183413.png



投资里面涉及到各种的因子,包括情绪,有的因子是我们事后才感知的,
 
而AI事前并不能完全感知所以因素,如当前打新行情火热,AI并没有考虑此因子,只是考虑了基石投资者,保荐机构,横向对比同行业的奈雪,茶百道等同行,推断出此次不值得申购。


投资是一群人的博弈游戏,如果根据AI平台得出的意见想法都趋同一致,
 
对于同一标的都看好,或者都不看好,大家都去追捧,可能会被顶到涨停;大家都抛弃,可能没有买量躺在跌停板。

显然,AI时代,需要投资者更异于常人的逆向思维能力。 收起阅读 »

港股新股 古茗 是否申购,问一问deepseek, chatGPT-4o, kimi, 元宝AI,谁最厉害

Screenshot_20250206-003047_副本.png



古茗新股申购港股新股古茗4号开始申购。

古茗是行业领先、快速增长的中国现制饮品企业。按 2023 年的 GMV 及门店数量计,是中国最大的大众现制茶饮店品牌,也是全价格带下中国第二大现制茶饮品牌,市场份额约为 18%。

目前市场申购倍数为12倍,热度一般。

假设我们都是港股打新小白,零经验。那么我们来问问,目前市场几个主流的AI平台,对于这个新股,能否申购给出一个结论。

参赛选手有Deepseek-R1,chatGPT-4o,kimi,腾讯元宝AI

Deepseek-R1

首先是当下风头最热的Deepseek-R1

我们问的问题是:古茗IPO港股打新,要不要申购?

下面是它的分析结果:

20250206004029.png


Deepseek回答结果

20250206004056.png



20250206013632.png


Deepseek回答结论


最后它给出的结论是:

基本面稳健但估值偏高,短期上涨空间有限,需权衡市场情绪与风险。对于打新套利者,性价比不高;

chatGPT 4o

同样勾上搜索功能,使其可以分析当下的互联网实时内容。

20250206004134.png


chatgpt 4ochatGPT-4o的回复有点打太极的意思,“
 
是否申购古茗新股因根据您的风险承受能力与投资目标进行评估”,分析资料不如Deepseek丰富,最后的结论属于正确的废话,有点在应付敷衍我的意思。

kimi

刚开始出来的时候,kimi以其联网搜索分析功能著称,所以这里也试问一下,看看kimi的效果。

20250206005224.png


kimikimi分析过程也是很有条理,分别列出了有利因素和不利因素。

最后的结论是是偏向于谨慎对待,也就是不太建议大额资金去申购。

腾讯AI 元宝

在前面几个AI平台里面腾讯AI元宝的知名度最低。

不过考虑到腾讯系的AI平台,使用各大公众号自媒体的数据进行建模,语料会更为丰富一下,所以也纳入测试范围。

20250206005127.png


腾讯元宝

20250206005141.png


腾讯元宝它的分析过程没有Deepseek和kimi面面俱到,只分析了Deepseek和kimi里的某一部分因素。

最后它给出的结论也是:考虑到当前市场环境和古茗的具体情况,建议投资者谨慎申购。偏向于谨慎申购。



于是,笔者我看完上面的这些AI分析文章,觉得还是不申购这个古茗港股新股了。因为看完它们的描述,会发现奈雪,茶百道,这几家已经在港股上市的,无论上市首日还是后续的交易日,也都跌跌不休,更别说这个我没听过的古茗奶茶了….

比较出乎意外的是,chatGPT-4o的结果反而是这4个AI平台里最简陋,且信息量最低的,感慨..

仅从这次提问体验进行排序,deepseek > kimi > 元宝AI > chatGPT-4o
 
继续阅读 »
Screenshot_20250206-003047_副本.png



古茗新股申购港股新股古茗4号开始申购。

古茗是行业领先、快速增长的中国现制饮品企业。按 2023 年的 GMV 及门店数量计,是中国最大的大众现制茶饮店品牌,也是全价格带下中国第二大现制茶饮品牌,市场份额约为 18%。

目前市场申购倍数为12倍,热度一般。

假设我们都是港股打新小白,零经验。那么我们来问问,目前市场几个主流的AI平台,对于这个新股,能否申购给出一个结论。

参赛选手有Deepseek-R1,chatGPT-4o,kimi,腾讯元宝AI

Deepseek-R1

首先是当下风头最热的Deepseek-R1

我们问的问题是:古茗IPO港股打新,要不要申购?

下面是它的分析结果:

20250206004029.png


Deepseek回答结果

20250206004056.png



20250206013632.png


Deepseek回答结论


最后它给出的结论是:

基本面稳健但估值偏高,短期上涨空间有限,需权衡市场情绪与风险。对于打新套利者,性价比不高;

chatGPT 4o

同样勾上搜索功能,使其可以分析当下的互联网实时内容。

20250206004134.png


chatgpt 4ochatGPT-4o的回复有点打太极的意思,“
 
是否申购古茗新股因根据您的风险承受能力与投资目标进行评估”,分析资料不如Deepseek丰富,最后的结论属于正确的废话,有点在应付敷衍我的意思。

kimi

刚开始出来的时候,kimi以其联网搜索分析功能著称,所以这里也试问一下,看看kimi的效果。

20250206005224.png


kimikimi分析过程也是很有条理,分别列出了有利因素和不利因素。

最后的结论是是偏向于谨慎对待,也就是不太建议大额资金去申购。

腾讯AI 元宝

在前面几个AI平台里面腾讯AI元宝的知名度最低。

不过考虑到腾讯系的AI平台,使用各大公众号自媒体的数据进行建模,语料会更为丰富一下,所以也纳入测试范围。

20250206005127.png


腾讯元宝

20250206005141.png


腾讯元宝它的分析过程没有Deepseek和kimi面面俱到,只分析了Deepseek和kimi里的某一部分因素。

最后它给出的结论也是:考虑到当前市场环境和古茗的具体情况,建议投资者谨慎申购。偏向于谨慎申购。



于是,笔者我看完上面的这些AI分析文章,觉得还是不申购这个古茗港股新股了。因为看完它们的描述,会发现奈雪,茶百道,这几家已经在港股上市的,无论上市首日还是后续的交易日,也都跌跌不休,更别说这个我没听过的古茗奶茶了….

比较出乎意外的是,chatGPT-4o的结果反而是这4个AI平台里最简陋,且信息量最低的,感慨..

仅从这次提问体验进行排序,deepseek > kimi > 元宝AI > chatGPT-4o
 
收起阅读 »

聚宽打板策略代码转为ptrade代码

策略简述:
根据昨日涨停  或最近N天的股票出现连板的数量,然后选股。
高开X之后进入股票池。
然后加入均线,热度,板块等因子,盘中买入。

20250202174033.png

 
PS: 现在的ptrade回测速度是越来越慢的了。 估计是用户越来越多的缘故了。。。
比我刚开始用的那个时候,简直慢了有100倍.....
 

 
继续阅读 »
策略简述:
根据昨日涨停  或最近N天的股票出现连板的数量,然后选股。
高开X之后进入股票池。
然后加入均线,热度,板块等因子,盘中买入。

20250202174033.png

 
PS: 现在的ptrade回测速度是越来越慢的了。 估计是用户越来越多的缘故了。。。
比我刚开始用的那个时候,简直慢了有100倍.....
 

  收起阅读 »

ptrade一个策略里可以同时执行多少个run_daily?

ptrade里的run_daily 是一个定时函数,可以在交易日里指定时间运行你的函数和任务。
 
run_daily 可以在0-24小时都能够执行,并没有限制要求交易时间09:30到15:00.
 
因此如果需要执行集合竞价的部分,那么就需要用run_daily 去操作了。
 
比如开盘打新,尾盘逆回购,

20250117103204.png


 
而ptrade里面也对run_daily做了限制,就是一个策略里面同时只能设置5个run_daily
 
对于一般人而已,应该够用的了。如果不够,那么就用handle_data处理,也是可以。handle_data,里面可以加一个时间判断的语句,那么你可以一天在指定时间执行多少个任务都没有问题,随意突破5个。
 
 
更多技术问题,可以关注公众号:可转债量化分析
继续阅读 »
ptrade里的run_daily 是一个定时函数,可以在交易日里指定时间运行你的函数和任务。
 
run_daily 可以在0-24小时都能够执行,并没有限制要求交易时间09:30到15:00.
 
因此如果需要执行集合竞价的部分,那么就需要用run_daily 去操作了。
 
比如开盘打新,尾盘逆回购,

20250117103204.png


 
而ptrade里面也对run_daily做了限制,就是一个策略里面同时只能设置5个run_daily
 
对于一般人而已,应该够用的了。如果不够,那么就用handle_data处理,也是可以。handle_data,里面可以加一个时间判断的语句,那么你可以一天在指定时间执行多少个任务都没有问题,随意突破5个。
 
 
更多技术问题,可以关注公众号:可转债量化分析
收起阅读 »

不同券商的ptrade实盘客户端的回测时间

券商的模拟客户端在任何时间都可以回测。
 
而券商的实盘客户端的回测时间会有做限制。
 
1. 国金:实盘客户端不允许回测。
 
2. 国盛:实盘客户端回测时间为收盘后15:30之后
 
3. 湘财:实盘客户端回测时间为收盘后15:30之后
 
需要开通量化账号的读者朋友,可以关注公众号:
 

 
继续阅读 »
券商的模拟客户端在任何时间都可以回测。
 
而券商的实盘客户端的回测时间会有做限制。
 
1. 国金:实盘客户端不允许回测。
 
2. 国盛:实盘客户端回测时间为收盘后15:30之后
 
3. 湘财:实盘客户端回测时间为收盘后15:30之后
 
需要开通量化账号的读者朋友,可以关注公众号:
 

  收起阅读 »

python django3 跨域问题解决

一个旧的项目,本来用的MVC的模式,后面需要拆分,前端换成React,所以django部分就换成只有api,不负责渲染了。
 
然后react范围django api,会有跨域问题,所以需要额外配置一下。
 
网上很多教程都是基于最新的django4或者更新。
 
本文只针对django3 解决。
 
如果用的django3.10

需要对应的版本的cors库:

pip install django-cors-headers==3.10.0
不然大概率是装不上的。
 
然后在setting里面配置这个

CORS_ORIGIN_ALLOW_ALL = True

INSTALLED_APPS = [

'corsheaders',
]

MIDDLEWARE = [

'corsheaders.middleware.CorsMiddleware',
]

然后就OK了。
 
如果需要更加细致的配置,比如只要求某个IP的机子才能访问,或者只能某个GET方法运行跨域。
 
# 允许跨域源
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_WHITELIST = (
'*'
)

# 允许的请求方式
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
'VIEW',
)

# 允许的请求头
CORS_ALLOW_HEADERS = (
'XMLHttpRequest',
'X_FILENAME',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
'Pragma',
# 额外允许的请求头
'token',
)

就可以了
继续阅读 »
一个旧的项目,本来用的MVC的模式,后面需要拆分,前端换成React,所以django部分就换成只有api,不负责渲染了。
 
然后react范围django api,会有跨域问题,所以需要额外配置一下。
 
网上很多教程都是基于最新的django4或者更新。
 
本文只针对django3 解决。
 
如果用的django3.10

需要对应的版本的cors库:

pip install django-cors-headers==3.10.0
不然大概率是装不上的。
 
然后在setting里面配置这个

CORS_ORIGIN_ALLOW_ALL = True

INSTALLED_APPS = [

'corsheaders',
]

MIDDLEWARE = [

'corsheaders.middleware.CorsMiddleware',
]

然后就OK了。
 
如果需要更加细致的配置,比如只要求某个IP的机子才能访问,或者只能某个GET方法运行跨域。
 
# 允许跨域源
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_WHITELIST = (
'*'
)

# 允许的请求方式
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
'VIEW',
)

# 允许的请求头
CORS_ALLOW_HEADERS = (
'XMLHttpRequest',
'X_FILENAME',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
'Pragma',
# 额外允许的请求头
'token',
)

就可以了 收起阅读 »

ptrade上的get_cb_info函数无法使用

比如示例代码:
def initialize(context):
pass

def handle_data(context, data):
df = get_cb_info()
log.info(df)

最后跑出来的结果如下:
2024-11-20 10:22:00 - ERROR - 用户策略执行异常
2024-11-20 10:22:00 - ERROR - Exception: Traceback (most recent call last):
File /home/fly/sim_backtest/result/29fa7074-a6e6-11ef-b05b-c40778d9af27/user_strategy.py, line 6 in handle_data
df = get_cb_info()
--> data = BarDict(600570.SS)
--> context = <StrategyContext {'recorded_vars': {}, 'commission': <Commission {'cost': 0.0003, 'min_trade_cost': 5.0, 'tax': 0.001}>, 'blotter': <Blotter {'current_dt': date ...
NameError: name 'get_cb_info' is not defined

说明这个函数就根本没有做进去了。
 
目前我试的券商,国盛ptrade是无法使用的。
 
所以如果需要获取可转债的数据,需要自己写一个接口获取。我之前的很多文章里面也有写过类似的api接口。可以参考参考。
 

 
继续阅读 »
比如示例代码:
def initialize(context):
pass

def handle_data(context, data):
df = get_cb_info()
log.info(df)

最后跑出来的结果如下:
2024-11-20 10:22:00 - ERROR - 用户策略执行异常
2024-11-20 10:22:00 - ERROR - Exception: Traceback (most recent call last):
File /home/fly/sim_backtest/result/29fa7074-a6e6-11ef-b05b-c40778d9af27/user_strategy.py, line 6 in handle_data
df = get_cb_info()
--> data = BarDict(600570.SS)
--> context = <StrategyContext {'recorded_vars': {}, 'commission': <Commission {'cost': 0.0003, 'min_trade_cost': 5.0, 'tax': 0.001}>, 'blotter': <Blotter {'current_dt': date ...
NameError: name 'get_cb_info' is not defined

说明这个函数就根本没有做进去了。
 
目前我试的券商,国盛ptrade是无法使用的。
 
所以如果需要获取可转债的数据,需要自己写一个接口获取。我之前的很多文章里面也有写过类似的api接口。可以参考参考。
 

  收起阅读 »

QMT获取市场可转债代码

QMT
QMT本身内置的数据包含了可转债的代码,不需要额外通过外部网络获取。
 
#encoding:gbk

def init(ContextInfo):
pass

def handlebar(ContextInfo):
index = ContextInfo.barpos
realtime = ContextInfo.get_bar_timetag(index)
print(ContextInfo.get_stock_list_in_sector('沪深转债', realtime))


20241114111109.png


欢迎关注公众号:可转债量化分析
继续阅读 »
QMT本身内置的数据包含了可转债的代码,不需要额外通过外部网络获取。
 
#encoding:gbk

def init(ContextInfo):
pass

def handlebar(ContextInfo):
index = ContextInfo.barpos
realtime = ContextInfo.get_bar_timetag(index)
print(ContextInfo.get_stock_list_in_sector('沪深转债', realtime))


20241114111109.png


欢迎关注公众号:可转债量化分析
收起阅读 »

ptrade:登录请求失败,服务器状态400

登录之后打开交易菜单,显示:
ptrade:登录请求失败,服务器状态400

20241111095840.png

用户数多,占用了资源多了,服务器没有扩容,导致资源不够用了。
 
周一一大早就崩了。
 
券商ptrade的运营工作人员只能重启。 但不增加资源,不优化隔离资源分配,一旦内存不够,cpu负载占满,全部人一起陪葬,这样好么?
 
 
继续阅读 »
登录之后打开交易菜单,显示:
ptrade:登录请求失败,服务器状态400

20241111095840.png

用户数多,占用了资源多了,服务器没有扩容,导致资源不够用了。
 
周一一大早就崩了。
 
券商ptrade的运营工作人员只能重启。 但不增加资源,不优化隔离资源分配,一旦内存不够,cpu负载占满,全部人一起陪葬,这样好么?
 
  收起阅读 »

特朗普和拜登在任期间,上证指数的涨幅是多少?

微信图片_20241106122226.jpg

 特朗普上一次在任期间,上证指数的点位:

2017-1-20 - 3123

2021-1-20 - 3583

涨幅为14.7%


而拜登在任期间,截至到今天为止:

2021-1-20 - 3583

2024-11-06 - 3392

涨幅为 -5.3%

#美国大选#
 
欢迎关注公众号:
继续阅读 »
微信图片_20241106122226.jpg

 特朗普上一次在任期间,上证指数的点位:

2017-1-20 - 3123

2021-1-20 - 3583

涨幅为14.7%


而拜登在任期间,截至到今天为止:

2021-1-20 - 3583

2024-11-06 - 3392

涨幅为 -5.3%

#美国大选#
 
欢迎关注公众号:
收起阅读 »

oracle免费主机 忘记用户账户和密码,没有ssh private key 怎么恢复登录?

笔者很久前申请了oracle的免费云主机,以前很好申请,一下子就过了。
现在已经很难申请到的了,且行且珍惜。
 
因为太久没有登录oracle的网站,导致账户邮箱都忘记了。不知道是不是被账户被清理了,还是什么原因了。
 
但云主机的实例还在的。
 
因为很早之前在本地的电脑上,我一直都是用本地的私钥自动登录的,也不需要用密码。
 
但,目前也只能在这个电脑上做到自动登录。
 
以前申请的private key也不知道放到哪里去了。
 
按照教程因为是 
 
ssh -i /path/to/your/private_key.key ubuntu@your_instance_public_ip
 
这样导进来的。
 
关键现在的private_key.key 文件不见了。。。
悲催
 
于是在本地可以登录oracle的主机上,先登录进去oracle主机上,进入 .ssh 目录,查看 里面的authorized_keys 文件,
里面有一条记录, 就是 但是记录的免密码登录的sha256的记录。
 
记住这个sha256的值,然后到本地的电脑上的.ssh 里面,找到对应 idXXXX 和 idXXXX.pub 里面的内容要和oracle主机上的sha256
 
如果找到了,那就恭喜你,你直接复制idXXXX 和 idXXXX.pub 到其他主机 的 .ssh/ 目录 上,然后直接ssh opc@IP,就可以不用任何密码登录oracle的主机了。实现多个本地主机连接到oracle的免费主机上了。
 
 
 
 
继续阅读 »
笔者很久前申请了oracle的免费云主机,以前很好申请,一下子就过了。
现在已经很难申请到的了,且行且珍惜。
 
因为太久没有登录oracle的网站,导致账户邮箱都忘记了。不知道是不是被账户被清理了,还是什么原因了。
 
但云主机的实例还在的。
 
因为很早之前在本地的电脑上,我一直都是用本地的私钥自动登录的,也不需要用密码。
 
但,目前也只能在这个电脑上做到自动登录。
 
以前申请的private key也不知道放到哪里去了。
 
按照教程因为是 
 
ssh -i /path/to/your/private_key.key ubuntu@your_instance_public_ip
 
这样导进来的。
 
关键现在的private_key.key 文件不见了。。。
悲催
 
于是在本地可以登录oracle的主机上,先登录进去oracle主机上,进入 .ssh 目录,查看 里面的authorized_keys 文件,
里面有一条记录, 就是 但是记录的免密码登录的sha256的记录。
 
记住这个sha256的值,然后到本地的电脑上的.ssh 里面,找到对应 idXXXX 和 idXXXX.pub 里面的内容要和oracle主机上的sha256
 
如果找到了,那就恭喜你,你直接复制idXXXX 和 idXXXX.pub 到其他主机 的 .ssh/ 目录 上,然后直接ssh opc@IP,就可以不用任何密码登录oracle的主机了。实现多个本地主机连接到oracle的免费主机上了。
 
 
 
  收起阅读 »

Ptrade获取历史涨停的股票|python代码

用当天的收盘价对比最高价,如果是相等的就是涨停。
下面的程序用于监控可转债的正股,在过去10天里是否出现涨停。
 
下面的ptrade的代码片段。需要完整代码,可关注公众号私信获取。
 
def hit_limit_recent():
# 选出最近N天正股有涨停的可转债
N =10
scale = 5
latest_price = 160
bond_name_dict, bond_zg_dict = get_all_bond_info(scale=scale,latest_price=latest_price)
zg_list = list(bond_zg_dict.values())
panel_info = get_history(N, frequency='1d', field=['close','high_limit'], security_list=zg_list, fq='pre', include=False, fill='nan')
df = panel_info.swapaxes("minor_axis", "items")
target_list = []
for code in zg_list:
stock_df = df[code]

hit_high = stock_df[stock_df['close']==stock_df['high_limit']]
if len(hit_high) > 0:
# print(hit_high.index)
target_list.append(code)

zz_target_list = []
for code,zg_code in bond_zg_dict.items():
if zg_code in target_list:
print(code, bond_name_dict[code])
zz_target_list.append(code)

return zz_target_list
当然,会有一个情形,就是实际最后是开板状态,但是收盘价格和涨停价格一样。
这种属于涨停开板状态,需要利用tick的委卖买来判断。
 
继续阅读 »
用当天的收盘价对比最高价,如果是相等的就是涨停。
下面的程序用于监控可转债的正股,在过去10天里是否出现涨停。
 
下面的ptrade的代码片段。需要完整代码,可关注公众号私信获取。
 
def hit_limit_recent():
# 选出最近N天正股有涨停的可转债
N =10
scale = 5
latest_price = 160
bond_name_dict, bond_zg_dict = get_all_bond_info(scale=scale,latest_price=latest_price)
zg_list = list(bond_zg_dict.values())
panel_info = get_history(N, frequency='1d', field=['close','high_limit'], security_list=zg_list, fq='pre', include=False, fill='nan')
df = panel_info.swapaxes("minor_axis", "items")
target_list = []
for code in zg_list:
stock_df = df[code]

hit_high = stock_df[stock_df['close']==stock_df['high_limit']]
if len(hit_high) > 0:
# print(hit_high.index)
target_list.append(code)

zz_target_list = []
for code,zg_code in bond_zg_dict.items():
if zg_code in target_list:
print(code, bond_name_dict[code])
zz_target_list.append(code)

return zz_target_list
当然,会有一个情形,就是实际最后是开板状态,但是收盘价格和涨停价格一样。
这种属于涨停开板状态,需要利用tick的委卖买来判断。
  收起阅读 »

可转债不下修名单 - 铁公鸡一览表

如果可转债公布了某个时间段内的不下修转股价,在溢价率很高的情况下,那么在该时间段内,其溢价率回归的办法只剩拉正股了,而在这上涨阶段中,站在概率面,持有转债的涨幅是会大幅低于正股的。

对于笔者而言,建仓标的会选择排除这些公告了不下修的转债,且对应的转股价值低于70-80的转债。

上市公司为何不下修转股价?

摘录网上比较官方的原因:

第一,下修转股价会稀释现有股东的股权,公司不希望现有股东权益被稀释,选择不下修转股价;

第二,公司可能有长期的战略规划,不希望因为短期的财务压力下修转股价而改变资本结构;

第三,下修转股价可能会被市场解读为公司财务状况不佳或未来盈利前景不明朗,公司为了避免这种负面反应而选择不下修转股价。

“上市公司选择不下修转股价,实际上也是在向市场传递公司对股价的信心。” 业内人士表示,公司不下修转股价,一方面说明公司现金流状况良好,有到期偿还负债的意愿;另一方面,公司可能认为当前的转股价已经反映了公司的合理价值,不需要通过下修来吸引投资者。

不下修转债数据更新至2024-10-30日晚。

文末附原始数据获取方法。

20241031152023.png


20241031152056.png


20241031152113.png


20241031152132.png



省略若干....

后台回复关键字:不下修列表202410 获取原始excel表格数据

因为文章更新并不频繁,微信并不会把最新的公众号文章及时推送在读者最新的列表中,可以将***公众号设为*****星标,这样就能第一时间收到笔者的最新文章啦。**

获取数据不易,喜欢本文的记得点“**赞”和“在看”哦,欢迎转载本文。**
 
继续阅读 »
如果可转债公布了某个时间段内的不下修转股价,在溢价率很高的情况下,那么在该时间段内,其溢价率回归的办法只剩拉正股了,而在这上涨阶段中,站在概率面,持有转债的涨幅是会大幅低于正股的。

对于笔者而言,建仓标的会选择排除这些公告了不下修的转债,且对应的转股价值低于70-80的转债。

上市公司为何不下修转股价?

摘录网上比较官方的原因:

第一,下修转股价会稀释现有股东的股权,公司不希望现有股东权益被稀释,选择不下修转股价;

第二,公司可能有长期的战略规划,不希望因为短期的财务压力下修转股价而改变资本结构;

第三,下修转股价可能会被市场解读为公司财务状况不佳或未来盈利前景不明朗,公司为了避免这种负面反应而选择不下修转股价。

“上市公司选择不下修转股价,实际上也是在向市场传递公司对股价的信心。” 业内人士表示,公司不下修转股价,一方面说明公司现金流状况良好,有到期偿还负债的意愿;另一方面,公司可能认为当前的转股价已经反映了公司的合理价值,不需要通过下修来吸引投资者。

不下修转债数据更新至2024-10-30日晚。

文末附原始数据获取方法。

20241031152023.png


20241031152056.png


20241031152113.png


20241031152132.png



省略若干....

后台回复关键字:不下修列表202410 获取原始excel表格数据

因为文章更新并不频繁,微信并不会把最新的公众号文章及时推送在读者最新的列表中,可以将***公众号设为*****星标,这样就能第一时间收到笔者的最新文章啦。**

获取数据不易,喜欢本文的记得点“**赞”和“在看”哦,欢迎转载本文。**
 
收起阅读 »

哪些股票突破了10月8日的最高点?

昨天的文章贴了可转债从10月8日高点到现在的涨跌情况。
 
本文继续贴一下股票从10月8日的最高,到目前的涨跌分布。

数据包含北交所数据。

20241024000500.png


当前价格相对10月8日高点,涨幅前面的基本是北交所,创业板的股票。天马新材涨幅高达284%,一路涨停板30%,45度角冲上来。

20241024002212.png


创业板的光智科技8连板,20%一个板,最终今天开板后又封住,录得相对8号高点到目前的涨幅为258%

20241024002326.png


这些不知名的股票,要么处于亏损状态,要么四五百的市盈率,日后大概率会遵循怎么上去就怎么下来的规律。

比如像下面跌幅榜排名前面的,从高点跌去80%的股票。

20241024001333.png


长联科技节前最后一天上市,上市当天就吸引了足够的关注,涨了足足17倍。打新中签者,一签浮盈17万。而节后第一天该股冲高回落,依然大涨收盘。

而该股后面就开启了暴跌模式。

跌到今天之后,相对高点跌幅达到81%。

20241024004105.png


10月8日高点下来的A股个股数据统计

20241024004435.png


平均跌幅为-8.73%,中位数跌幅为-11%。当天开盘前,散户幻觉认为牛市来了,股票高开后,肯定不能轻易被买到,纷纷挂高价,甚至涨停价。(当时氛围太火爆,当时我也有这种牛市冲冲冲的幻觉)

而截至昨日收盘价,依然有652只股票,突破了10月8日的最高点,相对10日8日的最高点获得了正涨幅,比例为12%,比例比转债的稍微大一些。

A股的股票看起来暴富机会比转债要大的多,但同样会伴随更大的概率,让你一贫如洗,盈亏同源。
 
继续阅读 »
昨天的文章贴了可转债从10月8日高点到现在的涨跌情况。
 
本文继续贴一下股票从10月8日的最高,到目前的涨跌分布。

数据包含北交所数据。

20241024000500.png


当前价格相对10月8日高点,涨幅前面的基本是北交所,创业板的股票。天马新材涨幅高达284%,一路涨停板30%,45度角冲上来。

20241024002212.png


创业板的光智科技8连板,20%一个板,最终今天开板后又封住,录得相对8号高点到目前的涨幅为258%

20241024002326.png


这些不知名的股票,要么处于亏损状态,要么四五百的市盈率,日后大概率会遵循怎么上去就怎么下来的规律。

比如像下面跌幅榜排名前面的,从高点跌去80%的股票。

20241024001333.png


长联科技节前最后一天上市,上市当天就吸引了足够的关注,涨了足足17倍。打新中签者,一签浮盈17万。而节后第一天该股冲高回落,依然大涨收盘。

而该股后面就开启了暴跌模式。

跌到今天之后,相对高点跌幅达到81%。

20241024004105.png


10月8日高点下来的A股个股数据统计

20241024004435.png


平均跌幅为-8.73%,中位数跌幅为-11%。当天开盘前,散户幻觉认为牛市来了,股票高开后,肯定不能轻易被买到,纷纷挂高价,甚至涨停价。(当时氛围太火爆,当时我也有这种牛市冲冲冲的幻觉)

而截至昨日收盘价,依然有652只股票,突破了10月8日的最高点,相对10日8日的最高点获得了正涨幅,比例为12%,比例比转债的稍微大一些。

A股的股票看起来暴富机会比转债要大的多,但同样会伴随更大的概率,让你一贫如洗,盈亏同源。
 
收起阅读 »

突破10月8日最高点的转债名单 | 高点回落幅度排行榜

倒后镜看10月8日之后的走势,开盘即高点的转债比比皆是,不少还是涨停价开盘。

20241023020919.png



开盘冲进去的散户被挂在光秃秃的大阴线的顶部。

但也有一些转债已经突破了10月8日高点。

本文简单罗列一下数据。需要原始数据的读者朋友可以公众号后台获取。

20241023003904.png


价格突破10月8日的可转债红相转债和城地转债相对8日的高点涨幅达到了50%以上,属于一波流涨停冲上去的。

不过整体只有22只突破了8日的高点,占比只有4%,大部分是低于8日的最高价。

涨幅倒序排序


20241023005404.png



跌幅榜跌幅榜排名下,比较惨的是证券类转债。

由于很多人因为国庆假期港股的券商板块暴涨,8日A股券商开盘出现涨停潮,正股,ETF涨停买不进,于是转向买入没有达到涨停的券商转债(因为转债人比较怂?)。结果截至22日的收盘价格,浙22转债高点下来跌了24%,财通转债高点跌了18%。

相对10月8日高点的涨跌分布统计如下:
 

20241023005452.png

 

统计分布最新转债价格相对8日的高点跌幅的中位数和平均值为 -6.x%,转债持有人的当前市值跟8日高点相比,平均少了6%+。

一天的冲高回落,并不影响整体趋势。9月30日的转债价格中位数为113.798, 而当前(10月22日收盘)转债价格中位数为115, 比节前还略有提升。

所以节前一直持有的转债人,而不是8日冲高进场的,相对于节前的市值,也是稳定提升的。


需要原始excel数据,可后台回复:10月8日回落
 
继续阅读 »
倒后镜看10月8日之后的走势,开盘即高点的转债比比皆是,不少还是涨停价开盘。

20241023020919.png



开盘冲进去的散户被挂在光秃秃的大阴线的顶部。

但也有一些转债已经突破了10月8日高点。

本文简单罗列一下数据。需要原始数据的读者朋友可以公众号后台获取。

20241023003904.png


价格突破10月8日的可转债红相转债和城地转债相对8日的高点涨幅达到了50%以上,属于一波流涨停冲上去的。

不过整体只有22只突破了8日的高点,占比只有4%,大部分是低于8日的最高价。

涨幅倒序排序


20241023005404.png



跌幅榜跌幅榜排名下,比较惨的是证券类转债。

由于很多人因为国庆假期港股的券商板块暴涨,8日A股券商开盘出现涨停潮,正股,ETF涨停买不进,于是转向买入没有达到涨停的券商转债(因为转债人比较怂?)。结果截至22日的收盘价格,浙22转债高点下来跌了24%,财通转债高点跌了18%。

相对10月8日高点的涨跌分布统计如下:
 

20241023005452.png

 

统计分布最新转债价格相对8日的高点跌幅的中位数和平均值为 -6.x%,转债持有人的当前市值跟8日高点相比,平均少了6%+。

一天的冲高回落,并不影响整体趋势。9月30日的转债价格中位数为113.798, 而当前(10月22日收盘)转债价格中位数为115, 比节前还略有提升。

所以节前一直持有的转债人,而不是8日冲高进场的,相对于节前的市值,也是稳定提升的。


需要原始excel数据,可后台回复:10月8日回落
 
收起阅读 »

可转债现金替代策略 | QMT | Ptrade

策略需求:
适合大资金,求稳。
 
挑选低价格的AAA可转债,比如 正股是 银行,高分红的国企股,比如 大秦铁路的转债,大秦转债等,且到期收益为正。作为标的池。
 
然后 先 在标的池里挑选出一个价格最低的转债,1/3 仓位 买入,其余仓位买入银华日利。
 
程序每分钟监控。或者不用那么频繁,可以设置每小时,每天都可以。
 
如果转债价格下跌了X,就卖出银华日利(1/10仓位),买入转债; (这里仓位随意举例)
 
如果转债价格上涨了Y,就卖出转债(1/5仓位),买入银华日利;(这里仓位随意举例)
 
一般AAA的大规模转债,其波动比较小,很少会遇到趋势上涨。 所以大部分的时间是做有波动的高抛低吸。
 
但,一旦遇到趋势上涨,或者突破,那么按照策略 会不断卖出转债;
 
一旦转债仓位为0,就可以在标的池买入另外一只标的(1/3仓位),从而继续下一轮的高抛低吸。
 
如果转债价格一直跌,但由于AAA的转债有保底,且有回售,转股,下修等各种手段,来兜底,
 
所以一般遇到跌幅行情,下跌不会超过10%,所以策略可以一直在卖出银华日利,买入转债;
 
如果中途,出现了其他好的标的,你需要手动交易,那么可以手动卖出银华日利或者可转债,腾出仓位,来操作。
 
也就是这个策略的可转债,纯粹当做现金来替代来使用。
 
接着就是使用QMT和Ptrade实现。
 
待续............
 

 
 
继续阅读 »
策略需求:
适合大资金,求稳。
 
挑选低价格的AAA可转债,比如 正股是 银行,高分红的国企股,比如 大秦铁路的转债,大秦转债等,且到期收益为正。作为标的池。
 
然后 先 在标的池里挑选出一个价格最低的转债,1/3 仓位 买入,其余仓位买入银华日利。
 
程序每分钟监控。或者不用那么频繁,可以设置每小时,每天都可以。
 
如果转债价格下跌了X,就卖出银华日利(1/10仓位),买入转债; (这里仓位随意举例)
 
如果转债价格上涨了Y,就卖出转债(1/5仓位),买入银华日利;(这里仓位随意举例)
 
一般AAA的大规模转债,其波动比较小,很少会遇到趋势上涨。 所以大部分的时间是做有波动的高抛低吸。
 
但,一旦遇到趋势上涨,或者突破,那么按照策略 会不断卖出转债;
 
一旦转债仓位为0,就可以在标的池买入另外一只标的(1/3仓位),从而继续下一轮的高抛低吸。
 
如果转债价格一直跌,但由于AAA的转债有保底,且有回售,转股,下修等各种手段,来兜底,
 
所以一般遇到跌幅行情,下跌不会超过10%,所以策略可以一直在卖出银华日利,买入转债;
 
如果中途,出现了其他好的标的,你需要手动交易,那么可以手动卖出银华日利或者可转债,腾出仓位,来操作。
 
也就是这个策略的可转债,纯粹当做现金来替代来使用。
 
接着就是使用QMT和Ptrade实现。
 
待续............
 

 
  收起阅读 »

LOF基金出现大量套利机会,微信发送套利提示机会

节前A股行情火爆,节中港股继续开市,港股行情火爆。

对于踏空的投资来说,简直比满仓套牢还难受。

虽然行情火爆,但头脑依然要保持清醒,不要看到什么热门就一股脑冲进去。

错误的方式,让你赚到了大钱,实际会后患无穷。

“有勇敢的飞行员,有年老的飞行员,但鲜有勇敢的年老飞行员"

行情爆发,大部分人连指数都追不上,所以索性直接打板指数。以至于各种指数10CM,甚至20CM。

Screenshot_2024_1005_171022.png

 
实际指数的成分股并没有出现全部涨停那么夸张。

所以这时出现不少溢价的LOF基金,基金价格高于其净值。于是就出现了套利的机会。


溢价率越高,其安全垫也就越高。对于当前空仓或者轻仓的投资者而言,是一个不错的介入机会。(具体套利操作就是,场内净值申购,T+2或者T+3到账后,场内现价卖出)


这里笔者根据之前的LOF监控程序,程序自动获取限购-溢价LOF基金套利,并推送到微信消息,获取了目前溢价率大于5%的LOF基金,然后按照其成交量从大到小排序,得到下表:
 
20241005170056.png

 
成交量越大的,说明该LOF越活跃,这样就不至于在套利大军进场的时候,承接不住,被砸到跌停出不去。

目前成交量最大的是中概互联LOF164906,成交量1.9亿。成交量最少的是鼎弘LOF167003,成交量只有4万块不到,即使有14%的溢价率的肉垫,但容量太少,随便一个大户砸下来就跌停了。

所以这里也建议要介入额投资者,不仅仅只看溢价率,同时也要关注成交量。


同时也要注意申购状态那一列,积极配置FOF和原油LOF易方达 目前处于暂停申购状态,也就是当前是无法进行套利的。

而恒生LOF 是限购状态,限购5000元,因为港股假期猛涨了一波,所以大概率这个基金周二开盘会直接顶住涨停的。该基金是深市基金,可以6+1拖拉机拉满。申购7户,35000元。




结合之前的程序,LOF溢价率监控+微信推送,可以做到收盘前推送数据:


Screenshot_2024_1005_173638.jpg



当然你用飞书,钉钉也行。如果要用微信,早期开通的api还能继续用,新开的就需要备案的服务器了,手续就麻烦一点。
 
广告时间:需要低佣免5开户的可以公众号菜单联系,支持Ptrade,QMT,miniQMT,套利拖拉机。
 
继续阅读 »
节前A股行情火爆,节中港股继续开市,港股行情火爆。

对于踏空的投资来说,简直比满仓套牢还难受。

虽然行情火爆,但头脑依然要保持清醒,不要看到什么热门就一股脑冲进去。

错误的方式,让你赚到了大钱,实际会后患无穷。

“有勇敢的飞行员,有年老的飞行员,但鲜有勇敢的年老飞行员"

行情爆发,大部分人连指数都追不上,所以索性直接打板指数。以至于各种指数10CM,甚至20CM。

Screenshot_2024_1005_171022.png

 
实际指数的成分股并没有出现全部涨停那么夸张。

所以这时出现不少溢价的LOF基金,基金价格高于其净值。于是就出现了套利的机会。


溢价率越高,其安全垫也就越高。对于当前空仓或者轻仓的投资者而言,是一个不错的介入机会。(具体套利操作就是,场内净值申购,T+2或者T+3到账后,场内现价卖出)


这里笔者根据之前的LOF监控程序,程序自动获取限购-溢价LOF基金套利,并推送到微信消息,获取了目前溢价率大于5%的LOF基金,然后按照其成交量从大到小排序,得到下表:
 
20241005170056.png

 
成交量越大的,说明该LOF越活跃,这样就不至于在套利大军进场的时候,承接不住,被砸到跌停出不去。

目前成交量最大的是中概互联LOF164906,成交量1.9亿。成交量最少的是鼎弘LOF167003,成交量只有4万块不到,即使有14%的溢价率的肉垫,但容量太少,随便一个大户砸下来就跌停了。

所以这里也建议要介入额投资者,不仅仅只看溢价率,同时也要关注成交量。


同时也要注意申购状态那一列,积极配置FOF和原油LOF易方达 目前处于暂停申购状态,也就是当前是无法进行套利的。

而恒生LOF 是限购状态,限购5000元,因为港股假期猛涨了一波,所以大概率这个基金周二开盘会直接顶住涨停的。该基金是深市基金,可以6+1拖拉机拉满。申购7户,35000元。




结合之前的程序,LOF溢价率监控+微信推送,可以做到收盘前推送数据:


Screenshot_2024_1005_173638.jpg



当然你用飞书,钉钉也行。如果要用微信,早期开通的api还能继续用,新开的就需要备案的服务器了,手续就麻烦一点。
 
广告时间:需要低佣免5开户的可以公众号菜单联系,支持Ptrade,QMT,miniQMT,套利拖拉机。
 
收起阅读 »

QMT获取不到行情,一般是什么原因?或者获取行情有中断的情况

8-9成原因是 因为你选择的行情服务器掉线了

20231120204016.png

 
或者你获取的5档tick行情,但是你的行情菜单那里,选择的是 最新价,这样你也是无法获取到 5档tick数据的。

20240929102328.png

 
然后还有一个问题,如果你用get_market_data 或者get_market_data_ex 这个函数,获取的股票数量很多(比如全市场的股票),那么第一次的启动数据会非常的慢,并且你的内存消耗非常大,整个QMT像死机了一样。
 
如何解决? 下回分解
 
继续阅读 »
8-9成原因是 因为你选择的行情服务器掉线了

20231120204016.png

 
或者你获取的5档tick行情,但是你的行情菜单那里,选择的是 最新价,这样你也是无法获取到 5档tick数据的。

20240929102328.png

 
然后还有一个问题,如果你用get_market_data 或者get_market_data_ex 这个函数,获取的股票数量很多(比如全市场的股票),那么第一次的启动数据会非常的慢,并且你的内存消耗非常大,整个QMT像死机了一样。
 
如何解决? 下回分解
 
收起阅读 »

Ptrade回测模式下获取实时的分钟数据:只能使用handle_data,数据不能用get_snapshot

好久没有使用Ptrade做分钟级别的回测了。
发现有点蛋疼,记录一下。
 
因为回测模式下,不能使用run_interval 函数;
 
而run_daily模式,只能在固定时间运行,无法分钟级别。
 
所以只能使用 handle_data
而在handle_data 里面获取当前的分钟价格数据,也无法使用 get_snapshot ,get_gear_price,函数。
 
所以只能使用handle_data(Context,data) 里面的data里。
 
而handle_data 里面的data数据,使用方法如下:

 


import datetime

target_list = [
'600000.SS',
'000333.SZ'
]

def execution(context, data):
now = context.current_dt.strftime('%H:%M')
for code in target_list:
tick_info = data[code]
price = tick_info['price']
print('now: {} code : {} price:{}'.format(now,code ,price))




# 标准
def initialize(context):
log.info("公众号:可转债量化分析 ---- start ----")


def handle_data(context, data):
execution(context, data)

 

获取数据结果:
2024-09-20 14:42:00 - INFO - now: 14:42 code : 000333.SZ price:66.22
2024-09-20 14:43:00 - INFO - now: 14:43 code : 000333.SZ price:66.26
2024-09-20 14:44:00 - INFO - now: 14:44 code : 000333.SZ price:66.19
2024-09-20 14:45:00 - INFO - now: 14:45 code : 000333.SZ price:66.2
2024-09-20 14:46:00 - INFO - now: 14:46 code : 000333.SZ price:66.19
2024-09-20 14:47:00 - INFO - now: 14:47 code : 000333.SZ price:66.18
2024-09-20 14:48:00 - INFO - now: 14:48 code : 000333.SZ price:66.14
2024-09-20 14:49:00 - INFO - now: 14:49 code : 000333.SZ price:66.25
2024-09-20 14:50:00 - INFO - now: 14:50 code : 000333.SZ price:66.19
2024-09-20 14:51:00 - INFO - now: 14:51 code : 000333.SZ price:66.18
2024-09-20 14:52:00 - INFO - now: 14:52 code : 000333.SZ price:66.19
2024-09-20 14:53:00 - INFO - now: 14:53 code : 000333.SZ price:66.2
2024-09-20 14:54:00 - INFO - now: 14:54 code : 000333.SZ price:66.19
2024-09-20 14:55:00 - INFO - now: 14:55 code : 000333.SZ price:66.25
2024-09-20 14:56:00 - INFO - now: 14:56 code : 000333.SZ price:66.27
2024-09-20 14:57:00 - INFO - now: 14:57 code : 000333.SZ price:66.28
2024-09-20 14:58:00 - INFO - now: 14:58 code : 000333.SZ price:66.28
2024-09-20 14:59:00 - INFO - now: 14:59 code : 000333.SZ price:66.28
2024-09-20 15:00:00 - INFO - now: 15:00 code : 000333.SZ price:66.06

 用同花顺,对了一下结果,是满足的了。
 

 
继续阅读 »
好久没有使用Ptrade做分钟级别的回测了。
发现有点蛋疼,记录一下。
 
因为回测模式下,不能使用run_interval 函数;
 
而run_daily模式,只能在固定时间运行,无法分钟级别。
 
所以只能使用 handle_data
而在handle_data 里面获取当前的分钟价格数据,也无法使用 get_snapshot ,get_gear_price,函数。
 
所以只能使用handle_data(Context,data) 里面的data里。
 
而handle_data 里面的data数据,使用方法如下:

 


import datetime

target_list = [
'600000.SS',
'000333.SZ'
]

def execution(context, data):
now = context.current_dt.strftime('%H:%M')
for code in target_list:
tick_info = data[code]
price = tick_info['price']
print('now: {} code : {} price:{}'.format(now,code ,price))




# 标准
def initialize(context):
log.info("公众号:可转债量化分析 ---- start ----")


def handle_data(context, data):
execution(context, data)

 

获取数据结果:
2024-09-20 14:42:00 - INFO - now: 14:42 code : 000333.SZ price:66.22
2024-09-20 14:43:00 - INFO - now: 14:43 code : 000333.SZ price:66.26
2024-09-20 14:44:00 - INFO - now: 14:44 code : 000333.SZ price:66.19
2024-09-20 14:45:00 - INFO - now: 14:45 code : 000333.SZ price:66.2
2024-09-20 14:46:00 - INFO - now: 14:46 code : 000333.SZ price:66.19
2024-09-20 14:47:00 - INFO - now: 14:47 code : 000333.SZ price:66.18
2024-09-20 14:48:00 - INFO - now: 14:48 code : 000333.SZ price:66.14
2024-09-20 14:49:00 - INFO - now: 14:49 code : 000333.SZ price:66.25
2024-09-20 14:50:00 - INFO - now: 14:50 code : 000333.SZ price:66.19
2024-09-20 14:51:00 - INFO - now: 14:51 code : 000333.SZ price:66.18
2024-09-20 14:52:00 - INFO - now: 14:52 code : 000333.SZ price:66.19
2024-09-20 14:53:00 - INFO - now: 14:53 code : 000333.SZ price:66.2
2024-09-20 14:54:00 - INFO - now: 14:54 code : 000333.SZ price:66.19
2024-09-20 14:55:00 - INFO - now: 14:55 code : 000333.SZ price:66.25
2024-09-20 14:56:00 - INFO - now: 14:56 code : 000333.SZ price:66.27
2024-09-20 14:57:00 - INFO - now: 14:57 code : 000333.SZ price:66.28
2024-09-20 14:58:00 - INFO - now: 14:58 code : 000333.SZ price:66.28
2024-09-20 14:59:00 - INFO - now: 14:59 code : 000333.SZ price:66.28
2024-09-20 15:00:00 - INFO - now: 15:00 code : 000333.SZ price:66.06

 用同花顺,对了一下结果,是满足的了。
 

  收起阅读 »

QMT的handlebar设置成一分钟周期的时候,运行是3秒一次的

QMT
平时很少用handlebar驱动。
 
刚好有个策略是一分钟周期运行的,所以就用了handle驱动。

20240913113955.png

 
 
结果发现,经常查询重复买入。
 
调试后发现,原来这个handlebar是3m触发一次的。
 
如果要一分钟运行一次,还是用
ContextInfo.run_time("execution", INTERVAL_STRING, running_time)
 
INTERVAL_STRING 用1分钟表示。
 
示例代码:
一分钟打印当前时间:
 
# -*-coding:gbk-*-
# 作者公众号:可转债量化分析
import datetime
import json
import redis

####### 以下为固定配置,请勿随意修改 ##########
# 注意:程序需要在9:30前启动

START_TIME = '09:30' # 启动时间,可以修改为开盘任意时间9:30-14:57
STOCK_ACCOUNT = '' # 股票账户


INTERVAL_SECOND = 60 # 交易间隔
INTERVAL_STRING = "{}nSecond".format(INTERVAL_SECOND)

def today_date():
return datetime.datetime.now().strftime('%Y%m%d')


def init(ContextInfo):
now = datetime.datetime.now()
print('策略初始化 {}'.format(now))
now = datetime.datetime.now()
running_time = '{} {}'.format(today_date(), START_TIME)
print('策略初始化 {} , 程序启动时间 {}'.format(now, START_TIME))
ContextInfo.run_time("execution", INTERVAL_STRING, running_time)



def handlebar(ContextInfo):
pass

def execution(ContextInfo):
if not ContextInfo.is_last_bar():
return
now = datetime.datetime.now()
print(now)


公众号:
继续阅读 »
平时很少用handlebar驱动。
 
刚好有个策略是一分钟周期运行的,所以就用了handle驱动。

20240913113955.png

 
 
结果发现,经常查询重复买入。
 
调试后发现,原来这个handlebar是3m触发一次的。
 
如果要一分钟运行一次,还是用
ContextInfo.run_time("execution", INTERVAL_STRING, running_time)
 
INTERVAL_STRING 用1分钟表示。
 
示例代码:
一分钟打印当前时间:
 
# -*-coding:gbk-*-
# 作者公众号:可转债量化分析
import datetime
import json
import redis

####### 以下为固定配置,请勿随意修改 ##########
# 注意:程序需要在9:30前启动

START_TIME = '09:30' # 启动时间,可以修改为开盘任意时间9:30-14:57
STOCK_ACCOUNT = '' # 股票账户


INTERVAL_SECOND = 60 # 交易间隔
INTERVAL_STRING = "{}nSecond".format(INTERVAL_SECOND)

def today_date():
return datetime.datetime.now().strftime('%Y%m%d')


def init(ContextInfo):
now = datetime.datetime.now()
print('策略初始化 {}'.format(now))
now = datetime.datetime.now()
running_time = '{} {}'.format(today_date(), START_TIME)
print('策略初始化 {} , 程序启动时间 {}'.format(now, START_TIME))
ContextInfo.run_time("execution", INTERVAL_STRING, running_time)



def handlebar(ContextInfo):
pass

def execution(ContextInfo):
if not ContextInfo.is_last_bar():
return
now = datetime.datetime.now()
print(now)


公众号:
收起阅读 »

QMT/iQuant居然禁止redis获取股票行情数据,如何破解

QMT禁止redis获取股票行情数据,如何破解

因为QMT没有转债的规模,而国信iquant本身又把requests 库给封禁了,它无法通过requests 获取任何外部数据,比如访问东财,tushare都会提示访问超时。(后面发现它修改了requests的源码)

于是发现iquant的redis是内置库,不需要pip安装,所以第一时间就想到使用redis获取转债数据。

简单测试了一下,redis是可以获取数据的。比如随便丢一个字符到redis,然后QMT可以获取到这个字符数据

于是就把原来的策略里,使用requests 调用API的部分,改成redis。

可是运行后发现报错:


微信图片_20240910103921.jpg


2024-09-10 10:05:19,851 [INFO] [0x00000e24] [msg service] msg: 0C:\iquant\python\新建策略文件.py_SH00030021

DataError:Sensitive Data Detected, Forbidden!

报错信息说的很明显,敏感信息检测到,禁止!

居然对redis的数据进行检验,很明显这部分是QMT对redis的源码进行了修改。

于是根据报错的提示,找到 目录:

D:\tool\gjzq_qmt_simulation\bin.x64\Lib\site-packages\redis,下面的client.py

找到对应的行:


微信图片_20240910103929.png



的确有一个check_response 的函数用于检测 redis的内容,看正则表达式和变量命名(search_stock),类似股票代码的数据传输被阻止了,检测到之后直接raise Error,程序会停止的。

解决办法,也很简单,直接把这一段 代码删除就好了。

然后需要重启你的QMT,不然修改的代码不会生效。

然后重新运行的你的策略,发现一起正常了。
 
需要开通QMT和代写量化策略,可以关注公众号:
继续阅读 »
QMT禁止redis获取股票行情数据,如何破解

因为QMT没有转债的规模,而国信iquant本身又把requests 库给封禁了,它无法通过requests 获取任何外部数据,比如访问东财,tushare都会提示访问超时。(后面发现它修改了requests的源码)

于是发现iquant的redis是内置库,不需要pip安装,所以第一时间就想到使用redis获取转债数据。

简单测试了一下,redis是可以获取数据的。比如随便丢一个字符到redis,然后QMT可以获取到这个字符数据

于是就把原来的策略里,使用requests 调用API的部分,改成redis。

可是运行后发现报错:


微信图片_20240910103921.jpg


2024-09-10 10:05:19,851 [INFO] [0x00000e24] [msg service] msg: 0C:\iquant\python\新建策略文件.py_SH00030021

DataError:Sensitive Data Detected, Forbidden!

报错信息说的很明显,敏感信息检测到,禁止!

居然对redis的数据进行检验,很明显这部分是QMT对redis的源码进行了修改。

于是根据报错的提示,找到 目录:

D:\tool\gjzq_qmt_simulation\bin.x64\Lib\site-packages\redis,下面的client.py

找到对应的行:


微信图片_20240910103929.png



的确有一个check_response 的函数用于检测 redis的内容,看正则表达式和变量命名(search_stock),类似股票代码的数据传输被阻止了,检测到之后直接raise Error,程序会停止的。

解决办法,也很简单,直接把这一段 代码删除就好了。

然后需要重启你的QMT,不然修改的代码不会生效。

然后重新运行的你的策略,发现一起正常了。
 
需要开通QMT和代写量化策略,可以关注公众号:
收起阅读 »

低门槛入金2W开通QMT miniQMT,股票费率免5,0.1元起

QMT
实打实的低门槛,低佣券商,入金2W,开通QMT,miniQMT;
而且费率是直接可以调到 万0.754,免五,0.1元起。 简直比万一免五还要低!
 
目前属于活动期间才有的低费率。

大同证券.png


 
需要开户的,可以联系公众号,开户后有QMT技术支持交流群
 
######### 最新更新, 此券商活动已停止 #############
 
继续阅读 »
实打实的低门槛,低佣券商,入金2W,开通QMT,miniQMT;
而且费率是直接可以调到 万0.754,免五,0.1元起。 简直比万一免五还要低!
 
目前属于活动期间才有的低费率。

大同证券.png


 
需要开户的,可以联系公众号,开户后有QMT技术支持交流群
 
######### 最新更新, 此券商活动已停止 #############
 
收起阅读 »

国信iquant requests 爬虫 获取数据 还有使用 tushare,akshare 无法连接,提示超时

经过验证,比如把下面的代码放入到国信的iquant里运行
#encoding:gbk


import requests

def get_baidu():

url = 'https://www.baidu.com'
req = requests.get(url,headers={'User-Agent':'Mozilla/5.0'})
print(req.text)

def init(ContextInfo):
get_baidu()

def handlebar(ContextInfo):
pass

会报错,同时访问baidu.com 超时:

微信图片_20240828141957.png

 
明显是国信的iquant内部设置了proxy,导致request出去的时候走了proxy。
 
所以连baidu都访问不了。
 
而tushare,akshare底层是周的爬虫 (requests), 所以对于iquant,底层走http requests的库,或者获取数据的手段是失效了的。
 
不过也有其他的手段可以实现获取外部数据。
 
笔者亲测了redis可以访问外部的redis数据库,为啥用redis,因为iquant没有内置pymysql,需要自己安装,客户也不懂怎么安装,(到iquant的安装文件路径下的python 包路径下,运行 pip install pymysq)
 
而iquant内置了redis 的库,所以可以直接import redis
 
redis测试代码:
def base_usage():
print('start')
r = RedisCls()
data = {'name': 'zhangsan', 'age': 18}
key = 'test_key'
r.push(key, json.dumps(data))
print('push')
print(r.delete('key')) # reutrn 1 if delete success, else return 0
start_time = time.time()
ret_data = r.pop(key)
end_time = time.time()
print('cost time: ', end_time - start_time)
print(ret_data)



base_usage()

上面的代码是正常运行,不报错,就说明正常的了。
PS: 
r = RedisCls() 只是封装了
r = redis.Redis 连接的ip和端口,密码 而已。
 
按照网上的redis连接教程使用就好了。
 

 
继续阅读 »
经过验证,比如把下面的代码放入到国信的iquant里运行
#encoding:gbk


import requests

def get_baidu():

url = 'https://www.baidu.com'
req = requests.get(url,headers={'User-Agent':'Mozilla/5.0'})
print(req.text)

def init(ContextInfo):
get_baidu()

def handlebar(ContextInfo):
pass

会报错,同时访问baidu.com 超时:

微信图片_20240828141957.png

 
明显是国信的iquant内部设置了proxy,导致request出去的时候走了proxy。
 
所以连baidu都访问不了。
 
而tushare,akshare底层是周的爬虫 (requests), 所以对于iquant,底层走http requests的库,或者获取数据的手段是失效了的。
 
不过也有其他的手段可以实现获取外部数据。
 
笔者亲测了redis可以访问外部的redis数据库,为啥用redis,因为iquant没有内置pymysql,需要自己安装,客户也不懂怎么安装,(到iquant的安装文件路径下的python 包路径下,运行 pip install pymysq)
 
而iquant内置了redis 的库,所以可以直接import redis
 
redis测试代码:
def base_usage():
print('start')
r = RedisCls()
data = {'name': 'zhangsan', 'age': 18}
key = 'test_key'
r.push(key, json.dumps(data))
print('push')
print(r.delete('key')) # reutrn 1 if delete success, else return 0
start_time = time.time()
ret_data = r.pop(key)
end_time = time.time()
print('cost time: ', end_time - start_time)
print(ret_data)



base_usage()

上面的代码是正常运行,不报错,就说明正常的了。
PS: 
r = RedisCls() 只是封装了
r = redis.Redis 连接的ip和端口,密码 而已。
 
按照网上的redis连接教程使用就好了。
 

  收起阅读 »