我在实盘模拟中,遇到了用委托价格(公式用的q_bidprice和askprice)远超过实际成交价的情况。查了其他帖子估计是开了后复权的因素,但没找到一个标准的解决方案。能否统一 一下A函数报单的价格设置口径?我现在的做法是888连续合约图表设置了四件套(后复权、自动换仓、真实价格等),然后策略单元设置了主力映射、委托偏移3个点。以开多单为例,报单这样写:
A_SendOrderEx(Enum_Buy, Enum_Entry, lots, q_askprice, orderids,\"\",\"\")
或者A_SendOrderEx(Enum_Buy, Enum_Entry, lots, max(low,downline), orderids,\"\",\"\"),哪个正确呢?
第一 策略单元的价格委托偏移队对a函数无效
第二 q_askprice获取的数据会根据图表的复权状态发生变化。如果你图表复权了,那q函数获取的数据也是复权后的。
但是这个问题好像也不难处理吧,重新除权不就好了吗?原始数据*复权系数rollover = 复权数据,反过来把除权数据/rollover不就变成原始数据了吗
好的刘老师。我拿盘口价格除以rollover复权一下试试。不过现在有个新问题,我策略单元明明开了委托映射,但重启自动化交易却提示合约不可交易。我在onint域里加了SetOrderMap2MainSymbol(); 还是不行,不知咋回事?
你不会是多图层吧?这个设置是分图层的,信号是不是出在data1或者data2上了
没有多图层哈,就一个0图层,不过是在实盘模拟过程中发现的。我把A_SendOrderEx(Enum_Buy, Enum_Entry, lots, q_askprice, orderids,\"\",\"\") ;改成 A_SendOrderEx(RelativeSymbol, enum_Buy, Enum_Entry, mylentry,Q_AskPrice/rollover(), orderids,\"\",\"\"); 后开自动交易,还是不行
我重新保存了一下工作区和公式,这回可以了,谢谢刘老师!价格也对了
https://www.tbquant.net/forumDetail?cur=tbquan&id=1388&cid=all
参考这个帖子里刘老师回复:“开启委托偏移,以目标合约盘口价格为基准”。是不是用q_askprice更合适?