发新话题
打印

[指标EA编写讨论] 快被气死了,老是重复执行。逻辑有错吗

本主题由 xfxyldj 于 2007-11-20 11:59 分类

快被气死了,老是重复执行。逻辑有错吗

版主能不能帮我看下这段代码 怎么老是重复执行很多次呀。
逻辑上来说只可能执行一次啊。 是逻辑有问题  type为成交买和卖单
当条件满足的时候,cycle就会为1 。 下次调用就不会再开单了。 可能我一运行怎么狂下单呢。
谢谢!

if (cycle==0)
      {
      if ((type==1)&& (Bid <= (lastprice-Gap*Point-cycle*Grid*Point)))
         {
          cycle=1;
          OrderSend(Symbol(), OP_SELL, 1, Bid, 2, 0, 0, NULL, 0, 0, Red);  

         }
      if ((type==0)&& (Bid >= (lastprice+Gap*Point+cycle*Grid*Point)))
         {
          cycle=1;
          OrderSend(Symbol(), OP_BUY, 1, Ask, 2, 0, 0, NULL, 0, 0, Blue);

         }
       }

TOP

cycle=1;
应该是这个变量的定义问题。
把它定义成全局静态变量。
不然每次执行的时候都附空值。

[ 本帖最后由 xfxyldj 于 2007-11-20 11:58 编辑 ]

TOP

回复 1楼 的帖子

int start()中定义的变量在每次调用的时候都是被再次重新定义的。当函数运行到
return(0);的时候函数体内定义的变量被全部释放。(消失了)因此你赋予的1得值也同时消失了。
全局变量不消失,但是最保险的就是用全局静态变量。

TOP

回复 1楼 的帖子

调试程序小窍门,巧用Point();
当程序不能正常执行的时候你就需要逐个检查各语句中的各个参数的值。
Point("cycle=",cycle);
if (cycle==0)
在if语句前检查下cycle的值。

TOP

哈哈。 居然是这样。。
感谢版主!

ok了。。

TOP

有人指导,一两句话就很不一样啊。
我以后要继续像以前一样 多回答别人的问题^_^

TOP

发新话题