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

本地部署deepseek的api,用于vs code cline,但无法项目自动创建文件
虽然会有内容提示:
但无法生成文件,
其实是无法理解命令输出
具体错误提示如下:
其实是模型不支持,需要用tool use类的模型。
比如:deepseek-r1-coder-tools:32b
地址:https://ollama.com/ishumilin/deepseek-r1-coder-tools:32b
然后就正常了。
收起阅读 »
但无法生成文件,
其实是无法理解命令输出
具体错误提示如下:
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的券商,江海证券。
这logo看起来有点像银河呢。
江海证券现有分支机构75家,其中17家分公司,58家营业部,遍布北京、上海、广州、深圳、厦门、青岛、大连、成都、武汉、长沙、合肥及黑龙江省内等主要城市,形成了“覆盖龙江、辐射沿海、布局全国”的业务发展格局。
不过上面的是2018年的数据,最新的可能会少一些。因为现在很多营业部都更加注重线上业务。也就是通过线上就可以开通账号。
目前江海证券能够开通量化QMT,和miniQMT的自动化交易权限。
下载地址:
江海证券QMT实盘_实盘_1.0.0.36190.exe
或者直接到官网:
https://www.jhzq.com.cn/main/home/software/index.shtml
选择QMT下载即可
江海证券也支持无限易量化平台。
需要的可以咨询公众号:
收起阅读 »
江海证券有限公司于2003年12月15日在哈尔滨市市场监督管理局登记成立。法定代表人孙名扬,公司经营范围包括证券经纪,证券承销与保荐,证券投资咨询,证券自营等。
这logo看起来有点像银河呢。
江海证券现有分支机构75家,其中17家分公司,58家营业部,遍布北京、上海、广州、深圳、厦门、青岛、大连、成都、武汉、长沙、合肥及黑龙江省内等主要城市,形成了“覆盖龙江、辐射沿海、布局全国”的业务发展格局。
不过上面的是2018年的数据,最新的可能会少一些。因为现在很多营业部都更加注重线上业务。也就是通过线上就可以开通账号。
目前江海证券能够开通量化QMT,和miniQMT的自动化交易权限。
下载地址:
江海证券QMT实盘_实盘_1.0.0.36190.exe
或者直接到官网:
https://www.jhzq.com.cn/main/home/software/index.shtml
选择QMT下载即可
江海证券也支持无限易量化平台。
需要的可以咨询公众号:

deepseek等一众AI预测港股古茗翻车
港股--古茗,申购之前用deepseek,kimi,chatgpt,元宝等AI平台问了一圈,结论都不建议申购。
今天暗盘交易,结果就打脸了,古茗在几个平台都是10%涨幅收盘的。
投资里面涉及到各种的因子,包括情绪,有的因子是我们事后才感知的,
而AI事前并不能完全感知所以因素,如当前打新行情火热,AI并没有考虑此因子,只是考虑了基石投资者,保荐机构,横向对比同行业的奈雪,茶百道等同行,推断出此次不值得申购。
投资是一群人的博弈游戏,如果根据AI平台得出的意见想法都趋同一致,
对于同一标的都看好,或者都不看好,大家都去追捧,可能会被顶到涨停;大家都抛弃,可能没有买量躺在跌停板。
显然,AI时代,需要投资者更异于常人的逆向思维能力。 收起阅读 »
今天暗盘交易,结果就打脸了,古茗在几个平台都是10%涨幅收盘的。
投资里面涉及到各种的因子,包括情绪,有的因子是我们事后才感知的,
而AI事前并不能完全感知所以因素,如当前打新行情火热,AI并没有考虑此因子,只是考虑了基石投资者,保荐机构,横向对比同行业的奈雪,茶百道等同行,推断出此次不值得申购。
投资是一群人的博弈游戏,如果根据AI平台得出的意见想法都趋同一致,
对于同一标的都看好,或者都不看好,大家都去追捧,可能会被顶到涨停;大家都抛弃,可能没有买量躺在跌停板。
显然,AI时代,需要投资者更异于常人的逆向思维能力。 收起阅读 »
港股新股 古茗 是否申购,问一问deepseek, chatGPT-4o, kimi, 元宝AI,谁最厉害
古茗新股申购港股新股古茗4号开始申购。
古茗是行业领先、快速增长的中国现制饮品企业。按 2023 年的 GMV 及门店数量计,是中国最大的大众现制茶饮店品牌,也是全价格带下中国第二大现制茶饮品牌,市场份额约为 18%。
目前市场申购倍数为12倍,热度一般。
假设我们都是港股打新小白,零经验。那么我们来问问,目前市场几个主流的AI平台,对于这个新股,能否申购给出一个结论。
参赛选手有Deepseek-R1,chatGPT-4o,kimi,腾讯元宝AI
Deepseek-R1
首先是当下风头最热的Deepseek-R1
我们问的问题是:古茗IPO港股打新,要不要申购?
下面是它的分析结果:
Deepseek回答结果
Deepseek回答结论
最后它给出的结论是:
基本面稳健但估值偏高,短期上涨空间有限,需权衡市场情绪与风险。对于打新套利者,性价比不高;
chatGPT 4o
同样勾上搜索功能,使其可以分析当下的互联网实时内容。
chatgpt 4ochatGPT-4o的回复有点打太极的意思,“
是否申购古茗新股因根据您的风险承受能力与投资目标进行评估”,分析资料不如Deepseek丰富,最后的结论属于正确的废话,有点在应付敷衍我的意思。
kimi
刚开始出来的时候,kimi以其联网搜索分析功能著称,所以这里也试问一下,看看kimi的效果。
kimikimi分析过程也是很有条理,分别列出了有利因素和不利因素。
最后的结论是是偏向于谨慎对待,也就是不太建议大额资金去申购。
腾讯AI 元宝
在前面几个AI平台里面腾讯AI元宝的知名度最低。
不过考虑到腾讯系的AI平台,使用各大公众号自媒体的数据进行建模,语料会更为丰富一下,所以也纳入测试范围。
腾讯元宝
腾讯元宝它的分析过程没有Deepseek和kimi面面俱到,只分析了Deepseek和kimi里的某一部分因素。
最后它给出的结论也是:考虑到当前市场环境和古茗的具体情况,建议投资者谨慎申购。偏向于谨慎申购。
于是,笔者我看完上面的这些AI分析文章,觉得还是不申购这个古茗港股新股了。因为看完它们的描述,会发现奈雪,茶百道,这几家已经在港股上市的,无论上市首日还是后续的交易日,也都跌跌不休,更别说这个我没听过的古茗奶茶了….
比较出乎意外的是,chatGPT-4o的结果反而是这4个AI平台里最简陋,且信息量最低的,感慨..
仅从这次提问体验进行排序,deepseek > kimi > 元宝AI > chatGPT-4o

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

python django3 跨域问题解决
一个旧的项目,本来用的MVC的模式,后面需要拆分,前端换成React,所以django部分就换成只有api,不负责渲染了。
然后react范围django api,会有跨域问题,所以需要额外配置一下。
网上很多教程都是基于最新的django4或者更新。
本文只针对django3 解决。
然后在setting里面配置这个
如果需要更加细致的配置,比如只要求某个IP的机子才能访问,或者只能某个GET方法运行跨域。
就可以了 收起阅读 »
然后react范围django api,会有跨域问题,所以需要额外配置一下。
网上很多教程都是基于最新的django4或者更新。
本文只针对django3 解决。
如果用的django3.10不然大概率是装不上的。
需要对应的版本的cors库:
pip install django-cors-headers==3.10.0
然后在setting里面配置这个
然后就OK了。
CORS_ORIGIN_ALLOW_ALL = True
INSTALLED_APPS = [
'corsheaders',
]
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
]
如果需要更加细致的配置,比如只要求某个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函数无法使用
比如示例代码:
最后跑出来的结果如下:
说明这个函数就根本没有做进去了。
目前我试的券商,国盛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接口。可以参考参考。

收起阅读 »
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的网站,导致账户邮箱都忘记了。不知道是不是被账户被清理了,还是什么原因了。
但云主机的实例还在的。
因为很早之前在本地的电脑上,我一直都是用本地的私钥自动登录的,也不需要用密码。
但,目前也只能在这个电脑上做到自动登录。
以前申请的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的代码片段。需要完整代码,可关注公众号私信获取。
这种属于涨停开板状态,需要利用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日晚。
文末附原始数据获取方法。
省略若干....
后台回复关键字:不下修列表202410 获取原始excel表格数据
因为文章更新并不频繁,微信并不会把最新的公众号文章及时推送在读者最新的列表中,可以将***公众号设为*****星标,这样就能第一时间收到笔者的最新文章啦。**
获取数据不易,喜欢本文的记得点“**赞”和“在看”哦,欢迎转载本文。**
收起阅读 »
对于笔者而言,建仓标的会选择排除这些公告了不下修的转债,且对应的转股价值低于70-80的转债。
上市公司为何不下修转股价?
摘录网上比较官方的原因:
第一,下修转股价会稀释现有股东的股权,公司不希望现有股东权益被稀释,选择不下修转股价;
第二,公司可能有长期的战略规划,不希望因为短期的财务压力下修转股价而改变资本结构;
第三,下修转股价可能会被市场解读为公司财务状况不佳或未来盈利前景不明朗,公司为了避免这种负面反应而选择不下修转股价。
“上市公司选择不下修转股价,实际上也是在向市场传递公司对股价的信心。” 业内人士表示,公司不下修转股价,一方面说明公司现金流状况良好,有到期偿还负债的意愿;另一方面,公司可能认为当前的转股价已经反映了公司的合理价值,不需要通过下修来吸引投资者。
不下修转债数据更新至2024-10-30日晚。
文末附原始数据获取方法。
省略若干....
后台回复关键字:不下修列表202410 获取原始excel表格数据
因为文章更新并不频繁,微信并不会把最新的公众号文章及时推送在读者最新的列表中,可以将***公众号设为*****星标,这样就能第一时间收到笔者的最新文章啦。**
获取数据不易,喜欢本文的记得点“**赞”和“在看”哦,欢迎转载本文。**

哪些股票突破了10月8日的最高点?
昨天的文章贴了可转债从10月8日高点到现在的涨跌情况。
本文继续贴一下股票从10月8日的最高,到目前的涨跌分布。
数据包含北交所数据。
当前价格相对10月8日高点,涨幅前面的基本是北交所,创业板的股票。天马新材涨幅高达284%,一路涨停板30%,45度角冲上来。
创业板的光智科技8连板,20%一个板,最终今天开板后又封住,录得相对8号高点到目前的涨幅为258%
这些不知名的股票,要么处于亏损状态,要么四五百的市盈率,日后大概率会遵循怎么上去就怎么下来的规律。
比如像下面跌幅榜排名前面的,从高点跌去80%的股票。
长联科技节前最后一天上市,上市当天就吸引了足够的关注,涨了足足17倍。打新中签者,一签浮盈17万。而节后第一天该股冲高回落,依然大涨收盘。
而该股后面就开启了暴跌模式。
跌到今天之后,相对高点跌幅达到81%。
10月8日高点下来的A股个股数据统计
平均跌幅为-8.73%,中位数跌幅为-11%。当天开盘前,散户幻觉认为牛市来了,股票高开后,肯定不能轻易被买到,纷纷挂高价,甚至涨停价。(当时氛围太火爆,当时我也有这种牛市冲冲冲的幻觉)
而截至昨日收盘价,依然有652只股票,突破了10月8日的最高点,相对10日8日的最高点获得了正涨幅,比例为12%,比例比转债的稍微大一些。
A股的股票看起来暴富机会比转债要大的多,但同样会伴随更大的概率,让你一贫如洗,盈亏同源。
收起阅读 »
本文继续贴一下股票从10月8日的最高,到目前的涨跌分布。
数据包含北交所数据。
当前价格相对10月8日高点,涨幅前面的基本是北交所,创业板的股票。天马新材涨幅高达284%,一路涨停板30%,45度角冲上来。
创业板的光智科技8连板,20%一个板,最终今天开板后又封住,录得相对8号高点到目前的涨幅为258%
这些不知名的股票,要么处于亏损状态,要么四五百的市盈率,日后大概率会遵循怎么上去就怎么下来的规律。
比如像下面跌幅榜排名前面的,从高点跌去80%的股票。
长联科技节前最后一天上市,上市当天就吸引了足够的关注,涨了足足17倍。打新中签者,一签浮盈17万。而节后第一天该股冲高回落,依然大涨收盘。
而该股后面就开启了暴跌模式。
跌到今天之后,相对高点跌幅达到81%。
10月8日高点下来的A股个股数据统计
平均跌幅为-8.73%,中位数跌幅为-11%。当天开盘前,散户幻觉认为牛市来了,股票高开后,肯定不能轻易被买到,纷纷挂高价,甚至涨停价。(当时氛围太火爆,当时我也有这种牛市冲冲冲的幻觉)
而截至昨日收盘价,依然有652只股票,突破了10月8日的最高点,相对10日8日的最高点获得了正涨幅,比例为12%,比例比转债的稍微大一些。
A股的股票看起来暴富机会比转债要大的多,但同样会伴随更大的概率,让你一贫如洗,盈亏同源。

突破10月8日最高点的转债名单 | 高点回落幅度排行榜
倒后镜看10月8日之后的走势,开盘即高点的转债比比皆是,不少还是涨停价开盘。
开盘冲进去的散户被挂在光秃秃的大阴线的顶部。
但也有一些转债已经突破了10月8日高点。
本文简单罗列一下数据。需要原始数据的读者朋友可以公众号后台获取。
价格突破10月8日的可转债红相转债和城地转债相对8日的高点涨幅达到了50%以上,属于一波流涨停冲上去的。
不过整体只有22只突破了8日的高点,占比只有4%,大部分是低于8日的最高价。
涨幅倒序排序
跌幅榜跌幅榜排名下,比较惨的是证券类转债。
由于很多人因为国庆假期港股的券商板块暴涨,8日A股券商开盘出现涨停潮,正股,ETF涨停买不进,于是转向买入没有达到涨停的券商转债(因为转债人比较怂?)。结果截至22日的收盘价格,浙22转债高点下来跌了24%,财通转债高点跌了18%。
相对10月8日高点的涨跌分布统计如下:
统计分布最新转债价格相对8日的高点跌幅的中位数和平均值为 -6.x%,转债持有人的当前市值跟8日高点相比,平均少了6%+。
一天的冲高回落,并不影响整体趋势。9月30日的转债价格中位数为113.798, 而当前(10月22日收盘)转债价格中位数为115, 比节前还略有提升。
所以节前一直持有的转债人,而不是8日冲高进场的,相对于节前的市值,也是稳定提升的。
需要原始excel数据,可后台回复:10月8日回落
收起阅读 »
开盘冲进去的散户被挂在光秃秃的大阴线的顶部。
但也有一些转债已经突破了10月8日高点。
本文简单罗列一下数据。需要原始数据的读者朋友可以公众号后台获取。
价格突破10月8日的可转债红相转债和城地转债相对8日的高点涨幅达到了50%以上,属于一波流涨停冲上去的。
不过整体只有22只突破了8日的高点,占比只有4%,大部分是低于8日的最高价。
涨幅倒序排序
跌幅榜跌幅榜排名下,比较惨的是证券类转债。
由于很多人因为国庆假期港股的券商板块暴涨,8日A股券商开盘出现涨停潮,正股,ETF涨停买不进,于是转向买入没有达到涨停的券商转债(因为转债人比较怂?)。结果截至22日的收盘价格,浙22转债高点下来跌了24%,财通转债高点跌了18%。
相对10月8日高点的涨跌分布统计如下:
统计分布最新转债价格相对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。
实际指数的成分股并没有出现全部涨停那么夸张。
所以这时出现不少溢价的LOF基金,基金价格高于其净值。于是就出现了套利的机会。
溢价率越高,其安全垫也就越高。对于当前空仓或者轻仓的投资者而言,是一个不错的介入机会。(具体套利操作就是,场内净值申购,T+2或者T+3到账后,场内现价卖出)
这里笔者根据之前的LOF监控程序,程序自动获取限购-溢价LOF基金套利,并推送到微信消息,获取了目前溢价率大于5%的LOF基金,然后按照其成交量从大到小排序,得到下表:
成交量越大的,说明该LOF越活跃,这样就不至于在套利大军进场的时候,承接不住,被砸到跌停出不去。
目前成交量最大的是中概互联LOF164906,成交量1.9亿。成交量最少的是鼎弘LOF167003,成交量只有4万块不到,即使有14%的溢价率的肉垫,但容量太少,随便一个大户砸下来就跌停了。
所以这里也建议要介入额投资者,不仅仅只看溢价率,同时也要关注成交量。
同时也要注意申购状态那一列,积极配置FOF和原油LOF易方达 目前处于暂停申购状态,也就是当前是无法进行套利的。
而恒生LOF 是限购状态,限购5000元,因为港股假期猛涨了一波,所以大概率这个基金周二开盘会直接顶住涨停的。该基金是深市基金,可以6+1拖拉机拉满。申购7户,35000元。
结合之前的程序,LOF溢价率监控+微信推送,可以做到收盘前推送数据:
当然你用飞书,钉钉也行。如果要用微信,早期开通的api还能继续用,新开的就需要备案的服务器了,手续就麻烦一点。
广告时间:需要低佣免5开户的可以公众号菜单联系,支持Ptrade,QMT,miniQMT,套利拖拉机。
收起阅读 »
对于踏空的投资来说,简直比满仓套牢还难受。
虽然行情火爆,但头脑依然要保持清醒,不要看到什么热门就一股脑冲进去。
错误的方式,让你赚到了大钱,实际会后患无穷。
“有勇敢的飞行员,有年老的飞行员,但鲜有勇敢的年老飞行员"
行情爆发,大部分人连指数都追不上,所以索性直接打板指数。以至于各种指数10CM,甚至20CM。
实际指数的成分股并没有出现全部涨停那么夸张。
所以这时出现不少溢价的LOF基金,基金价格高于其净值。于是就出现了套利的机会。
溢价率越高,其安全垫也就越高。对于当前空仓或者轻仓的投资者而言,是一个不错的介入机会。(具体套利操作就是,场内净值申购,T+2或者T+3到账后,场内现价卖出)
这里笔者根据之前的LOF监控程序,程序自动获取限购-溢价LOF基金套利,并推送到微信消息,获取了目前溢价率大于5%的LOF基金,然后按照其成交量从大到小排序,得到下表:
成交量越大的,说明该LOF越活跃,这样就不至于在套利大军进场的时候,承接不住,被砸到跌停出不去。
目前成交量最大的是中概互联LOF164906,成交量1.9亿。成交量最少的是鼎弘LOF167003,成交量只有4万块不到,即使有14%的溢价率的肉垫,但容量太少,随便一个大户砸下来就跌停了。
所以这里也建议要介入额投资者,不仅仅只看溢价率,同时也要关注成交量。
同时也要注意申购状态那一列,积极配置FOF和原油LOF易方达 目前处于暂停申购状态,也就是当前是无法进行套利的。
而恒生LOF 是限购状态,限购5000元,因为港股假期猛涨了一波,所以大概率这个基金周二开盘会直接顶住涨停的。该基金是深市基金,可以6+1拖拉机拉满。申购7户,35000元。
结合之前的程序,LOF溢价率监控+微信推送,可以做到收盘前推送数据:
当然你用飞书,钉钉也行。如果要用微信,早期开通的api还能继续用,新开的就需要备案的服务器了,手续就麻烦一点。
广告时间:需要低佣免5开户的可以公众号菜单联系,支持Ptrade,QMT,miniQMT,套利拖拉机。

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数据,使用方法如下:
获取数据结果:
用同花顺,对了一下结果,是满足的了。

收起阅读 »
发现有点蛋疼,记录一下。
因为回测模式下,不能使用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秒一次的
平时很少用handlebar驱动。
刚好有个策略是一分钟周期运行的,所以就用了handle驱动。
结果发现,经常查询重复买入。
调试后发现,原来这个handlebar是3m触发一次的。
如果要一分钟运行一次,还是用
ContextInfo.run_time("execution", INTERVAL_STRING, running_time)
INTERVAL_STRING 用1分钟表示。
示例代码:
一分钟打印当前时间:
公众号:
收起阅读 »
刚好有个策略是一分钟周期运行的,所以就用了handle驱动。
结果发现,经常查询重复买入。
调试后发现,原来这个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。
可是运行后发现报错:
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
找到对应的行:
的确有一个check_response 的函数用于检测 redis的内容,看正则表达式和变量命名(search_stock),类似股票代码的数据传输被阻止了,检测到之后直接raise Error,程序会停止的。
解决办法,也很简单,直接把这一段 代码删除就好了。
然后需要重启你的QMT,不然修改的代码不会生效。
然后重新运行的你的策略,发现一起正常了。
需要开通QMT和代写量化策略,可以关注公众号:
收起阅读 »
因为QMT没有转债的规模,而国信iquant本身又把requests 库给封禁了,它无法通过requests 获取任何外部数据,比如访问东财,tushare都会提示访问超时。(后面发现它修改了requests的源码)
于是发现iquant的redis是内置库,不需要pip安装,所以第一时间就想到使用redis获取转债数据。
简单测试了一下,redis是可以获取数据的。比如随便丢一个字符到redis,然后QMT可以获取到这个字符数据
于是就把原来的策略里,使用requests 调用API的部分,改成redis。
可是运行后发现报错:
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
找到对应的行:
的确有一个check_response 的函数用于检测 redis的内容,看正则表达式和变量命名(search_stock),类似股票代码的数据传输被阻止了,检测到之后直接raise Error,程序会停止的。
解决办法,也很简单,直接把这一段 代码删除就好了。
然后需要重启你的QMT,不然修改的代码不会生效。
然后重新运行的你的策略,发现一起正常了。
需要开通QMT和代写量化策略,可以关注公众号:

国信iquant requests 爬虫 获取数据 还有使用 tushare,akshare 无法连接,提示超时
经过验证,比如把下面的代码放入到国信的iquant里运行
会报错,同时访问baidu.com 超时:
明显是国信的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测试代码:
上面的代码是正常运行,不报错,就说明正常的了。
PS:
r = RedisCls() 只是封装了
r = redis.Redis 连接的ip和端口,密码 而已。
按照网上的redis连接教程使用就好了。

收起阅读 »
#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 超时:
明显是国信的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连接教程使用就好了。

收起阅读 »