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

 
splxgf:
你的版本可以简化为这两行,添加到作者的版本中,只要对条件做一些改动,原则上应该可以很好地加速事情的进展。
你确定吗?
 
MaxZ:
你确定吗?

从本质上讲,你的建议是将不属于UPPprice/LOWprice范围内的蜡烛排除在检查和计算之外。这被两条线排除在外。如果你没有掉链子,这意味着价格在我们需要的范围内,我们会做标准的检查。你的代码可能会走得更快,但却不利于结果,因为与INS打交道的逻辑非常曲折,使用上一次迭代的这个变量的值是无稽之谈。

 
splxgf:

从本质上讲,你的建议是将不属于UPPprice/LOWprice范围内的蜡烛排除在检查和计算之外。这被两条线排除在外。如果你没有掉链子,这意味着价格在我们需要的范围内,我们会做标准的检查。你的代码可能会走得更快,但却不利于结果,因为与INS打交道的逻辑非常曲折,使用上一次迭代的这个变量的值是无稽之谈。

所以你是肯定的!:))))


你刚才引用了代码。

splxgf
        if (LOWprice > iHigh(NULL,60,i)) continue;
        if (UPPprice < iLow (NULL,60,i)) continue;

如果价格低于低点,我们为什么要检查价格是否高于高点?在你的版本中,这个条件没有被排除。但在我的建议中。

         if (UPP)
            ... // не выполнится
         if (LOW)
            if (LOWprice < iLow (NULL,60,i))
               continue;
            else
            ..

它被排除在外。

我不否认,我的代码可能不是最理想的。

但是,你认为,你的速度是多少倍?

         if (UPP)

将工作比。

         if (LOWprice > iHigh(NULL,60,i))

?

事实上。

UPP = LOWprice > iHigh(NULL, 60, i);

只有我知道这个事实(除了在当前历史栏内出价时),你计算一下...

 
abolk:


是的。

你必须变得如此扭曲,把三行清晰的代码变成难以理解的代码。

如果你有拆分iLow、iHigh支票的想法,你可以马上拆分。

而且不要说任何俏皮话

而你有没有想过,扭曲繁琐的代码有时会比简单的三行代码运行得更快?:)))
 
 INS = True;
   
   for (int i=1; i<=6000; i++)
   {
      if (INS)
      {
         if (LOWprice > iHigh(NULL,60,i))
         {
            INS = False;
            UPP = True;
            LOW = False;
            continue;

考虑一下这一节代码

INS=True。

循环往复

如果(INS)飞行正常

例如,如果(LOWprice...),条件为真,但随后出错,因为我们得到INS=False,我们进入下一个迭代。

那么如果(false),我们就完成了,因为这是另一个酒吧,所以什么......

至于我的代码,我不是在检查价格,而是检查该条线是否在当前价格 的+300/300点之内,如果是,就应该考虑。所有其他的优化并不那么关键,因为例如前两项检查可以消除90%的不必要的条形。

 
splxgf:

那么如果(假的),我们就完蛋了,因为这是一个不同的酒吧,你要问什么?

没有出过海,但在其他地方出过海 { ...}.
 

然后真的游了起来...

为什么你认为布尔变量会加速,如果每个条件后面再加上一个if(LOWprice >iHigh(NULL,60,i)),即同样的鸡蛋,但从侧面加上一个条件和大量的赋值,...

 

哇!

这就是争论变得激烈的地方。

我现在就这样说。

 extern int Distance = 3000;
 int CountH,NewCountH,CountL,NewCountL,CountB,NewCountB;
 
 double ResistH,ResistL,ResistB;
 
//======================================================================
int start(){


   double bid = Bid;
   double UPPprice = bid+Distance*Point;
   double LOWprice = bid-Distance*Point;
      NewCountH=0;
      NewCountL=0;
      NewCountB=0;
      ResistH=0;
      ResistL=0;
      ResistB=0;
  
   while(LOWprice<UPPprice)
    {
      CountH=0;
      CountL=0;
      for(int i=1; i<=6000; i++){  
          if(iHigh(NULL,60,i)>LOWprice) 
          if(LOWprice>iLow(NULL,60,i)) 
          if(LOWprice> bid) CountH++; else CountL++;
       }  
      if(CountH>NewCountH){NewCountH=CountH;ResistH=LOWprice;} 
      if(CountL>NewCountL){NewCountL=CountL;ResistL=LOWprice;}   
      LOWprice=LOWprice+25*Point;
    }
      CountB=0;
      for(i=1; i<=6000; i++){  
          if(iHigh(NULL,60,i)>=bid) if(bid>=iLow(NULL,60,i)) CountB++;
       }
      if(CountB>NewCountB){NewCountB=CountB;ResistB=bid;}  
 
     
   
    Comment("\n", 
      "\n",     
//      "\n", "     Spread                                ", MarketInfo(Symbol(), MODE_SPREAD),  
      "\n", "     Distance                             ", Distance, 
      "\n", "     CountH                               ", NewCountH, 
      "\n", "     CountB                               ", NewCountB, 
      "\n", "     CountL                                ", NewCountL, 
      "\n", "-------------------------------------------------- ",     
      "\n");
      

    if(ObjectFind("RH") == -1) {
      ObjectCreate("RH", OBJ_HLINE, 0, 0, ResistH);
      ObjectSet("RH", OBJPROP_COLOR, Magenta);
      ObjectSet("RH", OBJPROP_STYLE, STYLE_DOT);
     }else ObjectMove("RH", 0, iTime(NULL,0,0), ResistH);

    string text=DoubleToStr(NewCountH,0);
    ObjectDelete("RHtxt"); 
     if(ObjectFind("RHtxt") == -1) {
       ObjectCreate("RHtxt", OBJ_TEXT, 0, 0, 0);
       ObjectSetText("RHtxt", text , 8, "Arial", Aqua);
       ObjectMove("RHtxt", 0, iTime(NULL,0,0), ResistH);
      }else ObjectMove("RHtxt", 0, iTime(NULL,0,0), ResistH);
      
    string text3=DoubleToStr(NewCountB,0);
    ObjectDelete("RBtxt"); 
     if(ObjectFind("RBtxt") == -1) {
       ObjectCreate("RBtxt", OBJ_TEXT, 0, 0, 0);
       ObjectSetText("RBtxt", text3 , 8, "Arial", Aqua);
       ObjectMove("RBtxt", 0, iTime(NULL,60,0), ResistB);
      }else ObjectMove("RBtxt", 0, iTime(NULL,60,0), ResistB);

    if(ObjectFind("RL") == -1) {
      ObjectCreate("RL", OBJ_HLINE, 0, 0, ResistL);
      ObjectSet("RL", OBJPROP_COLOR, Magenta);
      ObjectSet("RL", OBJPROP_STYLE, STYLE_DOT);
     }else ObjectMove("RL", 0, iTime(NULL,0,0), ResistL);
     
    string text2=DoubleToStr(NewCountL,0);
    ObjectDelete("RLtxt");
    if(ObjectFind("RLtxt") == -1) {
      ObjectCreate("RLtxt", OBJ_TEXT, 0, 0, 0);
      ObjectSetText("RLtxt", text2 , 8, "Arial", Aqua);
      ObjectMove("RLtxt", 0, iTime(NULL,0,0), ResistL);
     }else ObjectMove("RLtxt", 0, iTime(NULL,0,0), ResistL);

 return (0);}            //====== THE END ======================

观察价格走势是非常有趣的。它总是朝着阻力最小的方向发展。

你甚至可以预测它的未来动向。观察一下。

价格就像溪流中的水。

谢谢大家!

 

请告诉我如何找到高值的条形数字。


Search_High=MathMax( High[i],High[1])

 
001:

你能告诉我如何找到柴值最高的酒吧的号码吗?


Search_High=MathMax( High[i],High[1])

你可以去https://docs.mql4.com/ru/array/ArrayMaximum

通过阵列高。

原因: