[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 186

 
deyron :
Bir sipariş açma girişimi olsaydı, mesajlarda görüntülenirdi. Ve bir sipariş açma girişimi yoksa, hata nereden geliyor. Soru, Masha'nın seviyelerden geçiş koşullarının doğruluğudur. Neden, sabit kodlanmış parametrelerle siparişler beklenenden çok daha sonra açılır.

Print() ve GetLastError() doğru yerlerde tüm soruları cevaplayacaktır.
 

Tünaydın!

Son Parabolik dizinin son noktasının değerini bulmam gerekiyor. Şunu söyleyelim:

Onu bulmak için bir fonksiyon yazdım:

 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);}}
  }}

Onlar. her Parabolik değer, mevcut çubuktan başlayarak yeniden hesaplanır. Değerlerin kademeli olarak azalması/artması koşulu ihlal edilir edilmez, işlev, trendin dışına "sıkışmış" çubuktaki değeri döndürür. Ancak, bunun gibi 1 barlık bir sıçrama olsaydı:


Bu işlev onu "görmez".

Bana işlevi nasıl yeniden yazacağımı söyler misin? Belki zaten bir çözüm vardır?

 
Heroix :

Tünaydın!

Son Parabolik dizinin son noktasının değerini bulmam gerekiyor. Şunu söyleyelim:

Onu bulmak için bir fonksiyon yazdım:

Onlar. her Parabolik değer, mevcut çubuktan başlayarak yeniden hesaplanır. Değerlerin kademeli olarak azalması/artması koşulu ihlal edilir edilmez, işlev, trendin dışına "sıkışmış" çubuktaki değeri döndürür. Ancak, bunun gibi 1 barlık bir sıçrama olsaydı:


Bu işlev onu "görmez".

Bana işlevi nasıl yeniden yazacağımı söyler misin? Belki zaten bir çözüm vardır?

Ayrıca fiyat noktasına da dikkat etmelisiniz.
 
Zhunko :
Ayrıca fiyat noktasına da dikkat etmelisiniz.

Onlar. sadece göstergenin okumalarını değil, aynı zamanda değerlerinin i üzerindeki konumunu, örneğin i'deki fiyat değerine göre karşılaştırın?
 

Bu Uzman Danışmana bakın, belki ilginç bir şey olabilir https://www.mql5.com/ru/code/10649

 
İnsanlar bana if(OPN<CLS && (CLS-OPN)>=50*Point) neden aranmadığını söylüyor????
 
nlp2311 :

Soru.

Koşul neden başarısız oluyor

if(Close_1>Open_1 && ( Close_1-Open_1)>=30*Point) tampon[i]=Yüksek_1;

...

Bunun yerine deneyin

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

böyle yap

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

Kodun bu koşulun bulunduğu kısmını buraya gönderin. Belki döngüde bir yerde bir hata vardır. SRC kullanarak foruma kod gönderin.

 
paladin80 :

Bunun yerine deneyin

böyle yap

Kodun bu koşulun bulunduğu kısmını buraya gönderin. Belki döngüde bir yerde bir hata vardır. SRC kullanarak foruma kod gönderin.


Denedim... çalışmıyor.

Parantezleri farklı şekillerde koydu, elinden geldiğince saptırdı ... Artık yapamıyorum !!!!!!!!!!!!!!!))):

O yüzden SAPIK OLMADAN NASIL soruyorum))):???

Görünüşe göre bu MT4 piç, if(.....) koşulunda hiç tırtıl görmüyor...((

Üstelik ben zaten ayrı bir hindi yazdım bu şart bir şekilde yerine gelsin diye... Olmaz ((:

Nedenmiş?

 
nlp2311 :

İşte o .... piç (((!!!!

zaten deli...


Ve durma seviyesi kontrol edilen nedir?
 

İyi günler İki farklı MACD'yi bir pencereye ve AYNI ÖLÇEKTE yerleştirdiğim bir gösterge yazdım.

Şimdi tüm GÖRÜNÜR çubuklardan tekrar geçmem gerekiyor, SIFIR çubuğunda ikinci göstergenin (turuncu) sinyal çizgisinin birincinin sinyal çizgisine (kırmızı çizgi) eşit olacağı anı bulmam gerekiyor. üst pencerede göstergem ve alt pencerede - sinyal çizgileri.

Anlamaya yardım eden var mı?


  
Код 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 );
  }
//+------------------------------------------------------------------+