[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 184

 

下午好!

我需要找到一个过去的抛物线系列的最后一点的值。就说这个吧。

我写了一个函数来寻找它。

double FindLastLevel ()                             
 {double Level; int i;
  for (i=0; Level==0; i++) 
  {double SAR0=iSAR(Symbol(),Period(), Step, Maximum, i),
          SAR1=iSAR(Symbol(),Period(), Step, Maximum, i+1),
          SAR2=iSAR(Symbol(),Period(), Step, Maximum, i+2);

   if (SAR0>SAR1){if(SAR1<SAR2){Level=SAR2; return (Level);}}
   if (SAR0<SAR1){if(SAR1>SAR2){Level=SAR2;return (Level);}}
  }}

也就是说,它重新计算抛物线的每一个值,从当前条形图开始计算。一旦违反了数值逐渐减少/增加的条件,该函数就会返回 "打破 "趋势的那个条形上的数值。然而,如果有1个小节的跳跃,像这样的跳跃。


该函数 "没有看到 "它。

请告知如何重写该函数?也许有一个现成的解决方案?

 
Heroix:

下午好!

我需要找到一个过去的抛物线系列的最后一点的值。就说这个吧。

我写了一个函数来寻找它。

也就是说,它重新计算抛物线的每一个值,从当前条形图开始计算。一旦违反了数值逐渐减少/增加的条件,该函数就会返回 "打破 "趋势的那个条形上的数值。然而,如果有1个小节的跳跃,就像这个。


该函数 "没有看到 "它。

请告知如何重写该函数?也许有一个现成的解决方案?

你还必须看一下与价格有关的位置。
 
Zhunko:
你还必须看一下与价格有关的位置。

也就是说,不仅要比较指标本身,还要比较其在i处的数值相对于i处的价格值的位置,比如?
 

看看这个顾问,看看是否有什么有趣的东西 https://www.mql5.com/ru/code/10649

 
人们告诉我,为什么if(OPN<CLS && (CLS-OPN)>=50*Point)不找?????
 
nlp2311:

问题。

为什么病情没有好转

如果(Close_1>Open_1 && ( Close_1-Open_1)>=30*Point) buffer[i]=High_1;

...

而不是

if(Close_1>Open_1 && ( Close_1-Open_1)>=30*Point) buffer[i]=High_1;

这样做

if (Close_1>Open_1)
{  if (Close_1-Open_1>=30*Point) buffer[i]=High_1;
}

在此公布出现这种情况的代码部分。也许循环中出现了错误。使用SRC 在论坛上发布代码。

 
paladin80:

试试这个,而不是

像这样。

在此公布出现这种情况的代码部分。也许循环中出现了错误。在论坛上,使用SRC 发布代码。


试过....,但没有作用。

我把括号放在不同的地方,尽量扭曲......我不能再!!!!!!!!!!!))))。

这就是为什么我问我如何才能做到不失真):?

似乎这个蠕动的MT4根本看不到条件if(.....)下的点数...()

更重要的是,我分别写了一个指标来保持这个条件...我不能(...)。

为什么会这样呢?

 
nlp2311:

这里是....混蛋(((!!!!

已经生气了...


你检查了什么?
 

下午好,我写了一个指标,我把两个不同的MACD放在同一个窗口和同一个刻度上。

我现在需要再次浏览所有的SEEN条,找到ZERO条上第二条指标信号线(橙色)与第一条信号线(红色)相等的时间。

谁能帮我搞清楚?


Код 2
-----

#property indicator_separate_window
#property indicator_buffers 6
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_color5 Aqua
#property indicator_color6 DarkOrange
#property  indicator_width1  2
#property  indicator_width5  2


//--- buffers
double Macd1Buffer[];
double Signal1Buffer[];
double Macd2Buffer[];
double Signal2Buffer[];
double Macd3Buffer[];
double Signa13Buffer[];

//--- for one bar
datetime last;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_NONE);
   SetIndexBuffer(0,Macd1Buffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,Signal1Buffer);
   SetIndexStyle(2,DRAW_NONE);
   SetIndexBuffer(2,Macd2Buffer);
   SetIndexStyle(3,DRAW_NONE);
   SetIndexBuffer(3,Signal2Buffer);
   SetIndexStyle(4,DRAW_NONE);
   SetIndexBuffer(4,Macd3Buffer);
   SetIndexStyle(5,DRAW_LINE);
   SetIndexBuffer(5,Signa13Buffer);
   
   
   IndicatorDigits(Digits);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    if(last>=Time[0]) return;
  
    double max_M1=-0.01,min_M1=0.01,
           max_M2=-0.01,min_M2=0.01,
           max_S1=-0.01,min_S1=0.01,
           max_S2=-0.01,min_S2=0.01,
           max1=-0.01,min1=0.01,
           max2=-0.01,min2=0.01,
           max3,
           M,
           Dmax_3,
           D_sig,
           D_sig_Last=1.0;
  
  
   int j=0;                                             
       
    while(j<WindowBarsPerChart()-1)
{          
//----
   for(int i=0;i<=j;i++)
       
      { 
           Macd1Buffer[i]=iMACD(0,PERIOD_H1,6,12,5,PRICE_CLOSE,MODE_MAIN,i+1);          // основная линия 1-ого MACD        
           Macd2Buffer[i]=iMACD(0,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1);         // основная линия 2-ого MACD
           
              max_M1=MathMax(Macd1Buffer[i],max_M1);
              min_M1=MathMin(Macd1Buffer[i],min_M1);
           
              max_M2=MathMax(Macd2Buffer[i],max_M2);
              min_M2=MathMin(Macd2Buffer[i],min_M2); 
     
           Signal1Buffer[i]=iMACD(0,PERIOD_H1,6,12,5,PRICE_CLOSE,MODE_SIGNAL,i+1);      // сигнальная линия 1-ого MACD   
           Signal2Buffer[i]=iMACD(0,PERIOD_H1,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+1);     // сигнальная линия 2-ого MACD
              
              max_S1=MathMax(Signal1Buffer[i],max_S1);
              min_S1=MathMin(Signal1Buffer[i],min_S1);
           
              max_S2=MathMax(Signal2Buffer[i],max_S2);
              min_S2=MathMin(Signal2Buffer[i],min_S2); 
    
              max1=MathMax(max_M1,max_S1);                                              // максимум 1-ого MACD
              min1=MathMin(min_M1,min_S1);                                              // минимум 1-ого MACD
           
              max2=MathMax(max_M2,max_S2);                                              // максимум 2-ого MACD
              min2=MathMin(min_M2,min_S2);                                              // минимум 2-ого MACD
      }   
        
           M=(max1-min1)/(max2-min2);                                                   // соотношение диапазонов max-min 1-ого и 2-ого MACD  
           max3=max2*M;                                                                 // max 3-его MACD,т.е."нового" 2-ого MACD
           Dmax_3=max1-max3;                                                            // смещение 3-ого MACD относительно 1-ого MACD
            
           
    for( i=0;i<=j;i++)
       
      {       
         Macd3Buffer[0]=Macd2Buffer[0]*M+Dmax_3;                                        // приведение диапазона max-min 2-ого MACD к диапазону 1-ого MACD,
                                                                                        // т.е.подучаем 3-ий MACD и совмещаем max и min 3-его MACD с                                                                                    // max и min 1-ого MACD                                                                                                                                       
         Signa13Buffer[0]=Signal2Buffer[0]*M+Dmax_3;                                    // max и min 1-ого MACD                                            
      }  
      
      
         D_sig=MathAbs(Signal1Buffer[0]-Signa13Buffer[0]);                              // разница между сигнальными линиями 1-ого и 3-ого MACD на
                                                                                        // нулевом баре
 if(Signa13Buffer[0]==Signal1Buffer[0])
      
        break;          
             
              D_sig_Last=D_sig; 
              
         
         j++;
         
}             
     
      Comment( "\n"," Баров = ",WindowBarsPerChart()-1, 
               "\n"," Macd1Buffer = ",DoubleToStr(Macd1Buffer[0],4),
               "\n"," Signal1Buffer = ",DoubleToStr(Signal1Buffer[0],4),
               "\n"," Macd3Buffer = ",DoubleToStr(Macd3Buffer[0],4),
               "\n"," Signa13Buffer = ",DoubleToStr(Signa13Buffer[0],4),
               "\n"," D_sig = ",DoubleToStr(D_sig,4));
               
               
               
               
               
               
//----
   last=Time[0];
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
Vinin:

那么水平线等于什么呢?


啊哈!!!。它就在主EA的屏幕上)。30点............................((((((((((((((((((((

尽管如此,如果(....)我可以通过这个balalaika,我的MT4条件运行呢?)。