dongke 2007-11-20 10:40
快被气死了,老是重复执行。逻辑有错吗
版主能不能帮我看下这段代码 怎么老是重复执行很多次呀。
逻辑上来说只可能执行一次啊。 是逻辑有问题 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);
}
}
xfxyldj 2007-11-20 11:57
cycle=1;
应该是这个变量的定义问题。
把它定义成全局静态变量。
不然每次执行的时候都附空值。
[[i] 本帖最后由 xfxyldj 于 2007-11-20 11:58 编辑 [/i]]
xfxyldj 2007-11-20 12:12
回复 1楼 的帖子
int start()中定义的变量在每次调用的时候都是被再次重新定义的。当函数运行到
return(0);的时候函数体内定义的变量被全部释放。(消失了)因此你赋予的1得值也同时消失了。
全局变量不消失,但是最保险的就是用全局静态变量。
xfxyldj 2007-11-20 12:17
回复 1楼 的帖子
调试程序小窍门,巧用Point();
当程序不能正常执行的时候你就需要逐个检查各语句中的各个参数的值。
Point("cycle=",cycle);
if (cycle==0)
在if语句前检查下cycle的值。
dongke 2007-11-20 12:39
哈哈。 居然是这样。。
感谢版主!
ok了。。 :yct42
dongke 2007-11-20 12:44
有人指导,一两句话就很不一样啊。
我以后要继续像以前一样 多回答别人的问题^_^