[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 167

 
做一个全局或静态的布尔变量,如flag。当条件发生并且标志=true时,打开订单并使标志=false。现在如果订单关闭,新的订单将不会打开。当条件消失后,再次设置flag=True。
[删除]  
Roger:
制作一个全局或静态的标志类型的布尔变量。当达到条件且flag=true时,打开一个订单并使flag=false。现在,如果该订单被关闭,新的订单将不会被打开。当条件消失后,再次设置flag=True。

我如何知道一个订单是否已经打开,但因为条件N而关闭?因为有很多条件,而条件N的存在并不能保证订单已经关闭。

也就是说,我需要知道订单已被执行,但由于N条件被触发,它已在N个烛光前关闭。而如果条件N已经消失,并且自关闭订单以来没有超过n个蜡烛,我们应该再次打开订单。

 
Xaoss1990:

我如何知道一个订单是否已经打开,但因为条件N而关闭?因为有很多条件,而条件N的存在并不能保证订单已经完成。

也就是说,我需要知道该订单已经结束,但由于条件N的触发,已经在n个蜡烛前关闭。而如果条件N已经消失,并且自关闭订单以来没有超过n个蜡烛,我们应该再次打开订单。


使用Alert()、Print()与Logic更积极!。
 
Xaoss1990:

请给我们建议,先生们!

想象一下这种情况:由于第N个条件的触发,一个停止被触发了。但在几个烛台之后,第N个条件已经落空。在哪个函数的帮助下,你可以在第N个条件落空后再次打开交易。也就是说,你需要确定在若干个柱子前触发了止损,并且因为第N个条件落空,重新开始交易!这就是为什么你需要确定在某个时间段触发了止损。


如果在程序上,当打开一个订单时,有一个magik和一个注释,你可以在magik或注释中加密关于订单打开的条件的信息。

一般来说,止损不是由条件触发的,但当价格达到一个价格水平时,这个订单可以通过条件关闭。

 
Xaoss1990:

我如何知道一个订单是否已经打开,但因为条件N而关闭?因为有很多条件,而条件N的存在并不能保证订单被关闭。

也就是说,我需要知道这个订单已经下了,但由于条件N的触发,已经在N个蜡烛前关闭。而如果条件N消失了,并且自订单关闭后没有超过n个蜡烛,我需要再次打开订单。

你不想把事情搞得太复杂?毕竟,如果条件X存在,订单就会被关闭,尽管条件N也可能存在。

这个解决方案在很大程度上取决于你的仓位管理逻辑,例如,找到不晚于n个烛台的订单,并在订单关闭的时刻以及当前时刻检查事件N。

 
 int CountH,NewCountH,CountL,NewCountL;
 double ResistH,ResistL;
 
 //========================
 
 int start(){

 //--------------------------
   double bid = Bid;
   double UPPprice = bid+3000.0*Point;
   double LOWprice = bid-3000.0*Point;
   NewCountH=0;
   ResistH=0;
   NewCountL=0;
   ResistL=0;
  
   while(LOWprice<UPPprice)
    {
      CountH=0;
      CountL=0;
      for(int i=1; i<=6000; i++){  
          if(LOWprice> bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i))CountH++;  
          if(LOWprice<=bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i))CountL++;
       } 
      if(CountH>NewCountH){NewCountH=CountH;ResistH=LOWprice;} 
      if(CountL>NewCountL){NewCountL=CountL;ResistL=LOWprice;}   
      LOWprice=LOWprice+5*Point;
    }
 //----------------------------
 
 return(0);
 }
我怎样才能使这个周期 "更容易"?需要很长的时间来计算。
 
DhP:

我怎样才能使这个周期 "更容易"?需要很长的时间来计算。


也许有些东西我不明白,但在这里。

          if(LOWprice> bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i)) CountH++;  
          if(LOWprice<=bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i)) CountL++;
同等条件
 
abolk:


也许我没搞清楚,但在这里。

同样的条件--在任何时候CountH都等于CountL

不,如果价格高于Bid,则CountH计数,如果低于,则CountL计数。
 
DhP:
不,如果价格高于出价,那么CountH? 如果低于,那么CountL


就有可能加快计算速度

reduce i<=6000

 
abolk:


有可能加快计算速度。

a) 减少i<=6000
b) 只在条形图的开头计算

a) 减少i的数量是可以做到的,但不可取。这就是它在这一年里所采取的方式。

b) 在一个酒吧的开始...这可能是一种选择。在M15上工作。

然而,在任何情况下,它几乎算2秒。