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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 有没有办法让策略等待成交回报后再继续下一行代码?

   

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


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

主题:有没有办法让策略等待成交回报后再继续下一行代码?

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


加好友 发短信
等级:论坛游侠 帖子:256 积分:0 威望:0 精华:0 注册:2020/6/10 14:05:31
有没有办法让策略等待成交回报后再继续下一行代码?  发帖心情 Post By:2020/12/30 15:20:00 [只看该作者]

策略运行于序列模式:
//代码如下:
//15多开仓:
L15D:=15SS;
//-------------添加K线未结束就-----开多仓---------语句开始:-----------//
//IF ISLASTBAR=1 THEN
BEGIN
IF (昨空头排列=1 AND 日EMA5>日EMA26) THEN 
BEGIN
多开仓次数:=IF(上穿转上叉位=1,EXTGBDATA(后名日BAR上叉多次),0);
IF 多开仓次数<1 AND 上穿转上叉位=1 THEN
BEGIN
转上叉时BUFF:=EXTGBDATA(后名日BAR上叉时);
IF 转上叉时BUFF=0 THEN 
BEGIN
EXTGBDATASET(后名日BAR上叉时,TIMETOT0(DYNAINFO(207))); //上穿时的时间
END
转上叉时:=EXTGBDATA(后名日BAR上叉时),COLORGRAY,NODRAW;
//信号出现后60秒且最新价超过转上叉位(即做多信号保持),开多:
开多价格条件:=DYNAINFO(7)>转上叉位;//上穿转上叉位=1;//CLOSE>转上叉位;//KD15=1变为价格条件
开多仓位条件:=(品种全买持=0 OR 品种全卖持>0);
开多时间条件:=多开仓次数<1 AND (TIMETOT0(DYNAINFO(207))-转上叉时>60 OR TIMETOT0(TIME)-TIMETOT0(DYNAINFO(207))<60);
15多开多条件:=开多价格条件=1 AND 开多仓位条件=1 AND 开多时间条件=1;
开前多持:=品种全买持;
开前空持:=品种全卖持;
15多:TBUY(15多开多条件=1,L15D,LMT,DYNAINFO(7)+MINDIFF,0);//发出开多指令
开后多持:=品种全买持;
开前空持:=品种全卖持;
IF 多开仓次数<1 AND 开后买持>开前买持 THEN //15多开多条件=1 THEN                                                                      
BEGIN                        
EXTGBDATASET(后名日BAR上叉多次,1);
EXTGBDATASET(后名日BAR上叉买价,DYNAINFO(7)+MINDIFF);
EXTGBDATASET(后名日BAR上叉成时,TIMETOT0(DYNAINFO(207)));
END
END
上买价:=EXTGBDATA(后名日BAR上叉买价),COLORRED,NODRAW;
上成时:=EXTGBDATA(后名日BAR上叉成时),COLORBROWN,NODRAW;
多开仓次数:=EXTGBDATA(后名日BAR上叉多次);
//当K线开多仓后,如果收盘后信号消失, 下根K线卖出平仓恢复仓位?
END
END

//交易日志如下:
2020-12-29 22:53:59.196    【后台】J05 TBuy 第 159 行 策略:<15M昨排叉分盈未.后台> 出现信号
2020-12-29 22:53:59.196    【后台】J05 TBuy 已成功触发下单操作 价格:2807.500000 数量:3 类型:0 账户: 品种:J05
2020-12-29 22:53:59.196    【后台】下单已发送
2020-12-29 22:53:59.218    【后台】J05 运行结束
2020-12-29 22:53:59.218    【下单】J05 价2807.500000 量3 买卖0 类型0 开平0 账户180655 Formula 1
2020-12-29 22:53:59.219    【下单】确认报单已发送 ID=751729192 RefID = 1460
2020-12-29 22:53:59.231    【指令】收到回报指令 ID = 751729192 RefID = 1460
2020-12-29 22:53:59.231    【回报】180655 : j2105 - 已报单 3 价格:2807.5 开 买
2020-12-29 22:53:59.231    【指令】收到回报指令 ID = 751729192 RefID = 1460
2020-12-29 22:53:59.263    【指令】收到成交回报指令 REFID = 1460 vol = 3
2020-12-29 22:53:59.263    【回报】180655 : j2105 - 已成交 3 价格:2807.0 开 买
//下面的语句没有执行是因为: 刚发单,策略已经运行结束了,多开仓次数=0,有没有办法让策略等待成交回报后再继续下一行代码?
IF 多开仓次数<1 AND 开后买持>开前买持 THEN //15多开多条件=1 THEN                                                                      
BEGIN                        
EXTGBDATASET(后名日BAR上叉多次,1);
EXTGBDATASET(后名日BAR上叉买价,DYNAINFO(7)+MINDIFF);
EXTGBDATASET(后名日BAR上叉成时,TIMETOT0(DYNAINFO(207)));
END




 回到顶部
帅哥哟,离线,有人找我吗?
banzhuan
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:16558 积分:0 威望:0 精华:0 注册:2017/6/1 10:24:09
  发帖心情 Post By:2020/12/30 15:32:39 [只看该作者]

您是就运行单个策略,还是有多个策略同时运行呢?  函数中有个sleep 函数,可以延迟一定时间发单,缺点是对多个策略同时生效。

 回到顶部
帅哥哟,离线,有人找我吗?
weishao
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:256 积分:0 威望:0 精华:0 注册:2020/6/10 14:05:31
  发帖心情 Post By:2020/12/30 16:31:31 [只看该作者]

开发一个可以单策略sleep的或者成交回报的函数


 回到顶部