以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  sleep可能造成重复开仓吗?  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=7090)

--  作者:阿火
--  发布时间:2011/7/4 15:06:14
--  sleep可能造成重复开仓吗?

比如如下代码,目的:在每次金叉时开仓一次 ;选用 1秒轮询

ma5:=ma(c,5);
ma10:=ma(c,10);
buycond:=ref(cross(ma5,ma10),1);
sleep(10000);
if buycond then tbuy(1,1);

 

在某根K线 buycond 成立。
程序于05秒的时候首次执行tbuy买入开仓
      于15秒的时候执行tbuy不会开仓 同一根K线只下一次单
      于25秒的时候执行tbuy不会开仓 同一根K线只下一次单
      于35秒的时候执行tbuy不会开仓 同一根K线只下一次单
      于45秒的时候执行tbuy不会开仓 同一根K线只下一次单
      于55秒的时候执行tbuy不会开仓 同一根K线只下一次单
   
    此时,56秒时候,从上往下继续判断
    于下一根K线05秒的时候执行语句“if buycond then tbuy(1,1);” 此时buycond条件是成立的。
    这个时候新的K线已经产生,会下单吗?

 

如果会下单的话,就相当于重复开仓了。如何处理?

如果会重复下单的话,在后台用sleep的话,就要注意了

特别是一个模型,针对多个账户,每个账户间隔10秒下单的时候

[此贴子已经被作者于2011-7-4 15:08:06编辑过]

--  作者:admin
--  发布时间:2011/7/4 17:54:02
--  

后台只有在执行一次完整的流程后才会去判断是否出现新K线,于下一根K线05秒的时候虽然实际上有了新K线,但是后台程序化尚未整个流程执行完毕,对于目前的后台程序化,仍然是上一次的K线状态未变,故你上述的担心是没必要的,不会重复开仓


--  作者:阿火
--  发布时间:2011/7/4 18:38:41
--  

哈哈

那爽。就是要这种效果

这几天帮客户写了一个后台 多策略多账户交易,用到sleep,突然间有的疑问。

后面继续检查验证