其他量化实盘中遇到的问题和解决方案,也会持续分享,
如果你有问题,也欢迎留言讨论,或者直接给作者留言
直接上干货
一、 重复下单,而且客户已经设置了通过get_position获取持仓数据,
最近有多个朋友反馈ptrade实盘量化交易,运行中出现了重复下单。
客户反馈量化查持仓数据有延迟,策略刚成交一笔买入,但get_position查持仓数据没有更新这笔。
原因是:get_position获取持仓数据的特殊机制。
1、调用get_position获取持仓数据不是立刻向柜台查询获取,而是通过custom_config_conf文件中配置的sync_seconds-交易同步频率(默认是6s),每6s去同步柜台的持仓数据,存在进程缓存里。所以委托成交后 不在查询的6s周期内可能会存在未获取到该笔订单持仓的情况;
2、客户策略逻辑是判断一笔订单委托后能在持仓中查到,就不继续下单,但通过get_position获取持仓数据可能存在延迟现象,导致客户有重复下单的情况。
解决方案:修改策略逻辑,改成委托后判断这笔订单是否收到成交主推,收到成交主推则不委托
具体代码可以参考:
def initialize(context):
g.security = ['600xxx.SS','000xxx.SZ']
set_universe(g.security)
g.flag = 0
def on_trade_response(context, trade_list):
log.info(trade_list)
g.flag = 1
log.info("yichengjiao")
def handle_data(context, data):
if(g.flag==0):
order('600xxx.SS', 100)
else:
log.info("end")
首先g.flag置0,若g.flag为0则委托买入600xxx代码100股,当收到成交主推后将g.flag置1,g.flag为1后不进行买入。
二、如何读写ptrade研究环境文件
参考代码:
g.cfgfile = get_research_path() + 'demo/data/yangxianstock.csv'
g.dfconfig = pd.read_csv(g.cfgfile, header=0, index_col='stock_code')
write=get_research_path() +'write.txt'
f=open(write,"w")
f.write(str(g.dfconfig))
三、get market list()获取行业列表失败
可以参考我这个脚本
四、读取外部文件获取股票池
1.股票池可以设置为csv格式(附件模板),通过研究菜单上传。
2.上传之后,策略代码中初始化模块进行调用,范例如下:
g.filepath = get_research_path() + 'demo/user/实际账号/stockpool.csv'
g.dfconfig = pd.read_csv(g.filepath, header=0, index_col='code')
g.security = list(g.dfconfig.index)
其他实盘中遇到的问题和解决方案,也会持续分享,
如果你有问题,也欢迎留言讨论。申请账号也可以找我