近期Ptrade客户端问题和解决方案小结----2025/02

其他量化实盘中遇到的问题和解决方案,也会持续分享,

如果你有问题,也欢迎留言讨论,或者直接给作者留言

直接上干货

一、 重复下单,而且客户已经设置了通过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 = 0def 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)

其他实盘中遇到的问题和解决方案,也会持续分享,

如果你有问题,也欢迎留言讨论。申请账号也可以找我