欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 后台程序化撤单指令使用问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3050人关注过本帖树形打印复制链接

主题:后台程序化撤单指令使用问题

帅哥哟,离线,有人找我吗?
wenarm
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2019/8/28 16:29:35 [显示全部帖子]

逻辑不对。你这种顺序执行的方式,自然会出现这种情况。

常规逻辑应该是:检测未成交单是否满足撤单条件,如:未成交历时单大于20秒等条件。

然后满足之后进行撤单追单

if   未成交单历时>20  then begin

    TCANCELEX(1,0,'','');
    TSELLSHORT(1,LOTS,LMT,UP_LINE);

 

end

 

注:你楼上的代码就是无脑撤单下单操作。

 

另外,你平空开多要分开判断,存在平空未成交,但是开多成交的情况。你这种操作,直接造成多头仓位增加n手



编程无捷径,技巧靠积累。
 回到顶部
帅哥哟,离线,有人找我吗?
wenarm
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:26632 积分:0 威望:0 精华:7 注册:2015/4/9 14:59:07
  发帖心情 Post By:2019/8/29 6:38:33 [显示全部帖子]

后台不是图表,他们没有虚拟持仓等概念,而是直接和柜台进行交互的。这种交互是需要时间的。处理后台策略其实很简单,唯一要注意的就是,柜台和账户之间交易需要一定的时间间隔。即使是1ms。对于计算机的运算能力来说,可能也已经执行很多遍了。
刚委托完成,通过本地记录的TREMAINQTY获取未交数量自然不等于0,自然又直接进入了撤单处理语句段中了.(该函数是本地记录的,委托后,立即有值,直到柜台成交时,它才会为0)。

未成交检测并处理撤单动作,一般都是通过时间进行控制的。刚委托就撤单,本身就是一个逻辑错误。特殊的撤单逻辑也有,但是都会有时间相关的操作判断。
//开多头仓位存在未成交单,并且该未成交单已经委托超出20s.
IF TREMAINQTY( 1, '','')>0  AND  TSUBMITEX( 1,'' ,'' ) >20 THEN BEGIN    
TCANCELEX(1,1,ZH1,PZ1 );//发撤单指令
TBUY(1,A,MKT,0,ZH1,PZ1);//追单
END


你得代码中,红色部分处理逻辑有问题,原因前面解释过了,要分开判断,否者就会是一开一平了。
IF (撤单追单条件=1) THEN
BEGIN
    TCANCELEX(1,0,'','');
   
TSELLSHORT(1,LOTS,LMT,UP_LINE);
    TBUY(1,LOTS,LMT,LOW_LINE);

END


编程无捷径,技巧靠积累。
 回到顶部