MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 278

 
mila.com :

Tepegözlerimle çözemiyorum ve göstergesini doğru bir şekilde giremiyorum.

Komut dosyanız herhangi bir ayar için sıfır döndürür. Teoride üçü döndürmeli, çünkü şimdi birinci ve üçüncü çubuklar arasındaki fark 0,005

Belki de belirsizdi. böyle döngü yapmak istiyorum


double ma_etalon=iMA(NULL,0,...,i+1);

double ma_curr;

int shift;

for(shift=2;shift<5;shift++) {

    ma_curr=iMA(NULL,0,...,i+shift);

    if (ma_etalon-ma_curr<0.005) break; // ах ты чёрт, значение близко

}

if (shift==5) {

   // цикл досчитал до конца, то есть все значение довольно далеко
   // ... развернись плечо ...

}

 
mila.com :

Teşekkürler, ama bir şeyler yanlış


0,005 ölçülen nedir? (görünüşe göre _Point ile çarpmanız gerekiyor)
 

Yardımlarınız için hepinize teşekkür ederim, işe yaradı)

 
mila.com :

Yardımlarınız için hepinize teşekkür ederim, işe yaradı)

Sadece bunun gerekli olup olmadığını merak ediyor musun?

 double prevMA= 0 ,currMA= 0 ;
 for ( int i= 1 ;i<= 5 ;i++) {
   if (i== 1 ) currMA= iMA ( Symbol (), 0 , 14 , 0 , MODE_EMA , PRICE_CLOSE ,i);
  prevMA= iMA ( Symbol (), 0 , 14 , 0 , MODE_EMA , PRICE_CLOSE ,i);
   if ( MathAbs (prevMA-currMA)> 0.0005 ) {
   // сюда пишем в буфер
   break ;
  }
 }
 
Vitaly Muzichenko :

Sadece bunun gerekli olup olmadığını merak ediyor musun?

Evet, ancak bu yapı ana gösterge döngüsüne nasıl sığdırılır?

 
Vladimir Pastushak :

Sondaki 0 almak yerine bahse girersen sana açıkça yazdım

Bu seçeneğe göz atın


Her şey çalışıyor!!! :)))) .... Bize katlandığınız için çok teşekkür ederiz, sıradanlık))))))). Çok teşekkürler!)

 

Tünaydın.

Söylesene, iCustom kullanarak bir vardiya ile farklı bir zaman diliminde gösterge değerini nasıl alabilirim?

Onlar. M5 üzerinde çalışıyorum, M15'teki önceki mum ile göstergenin değerini M15'ten almak istiyorum.

 int start() 
{ 
  HistBar = History;
   int i,counted_bars = IndicatorCounted ();
   if (counted_bars < 0 ) return (- 1 );
   if (counted_bars > 0 ) counted_bars--;
   int limit = MathMin ( Bars -counted_bars,HistBar+ 100 );

   for (i=limit; i>= 0 ; i--)
   {  
   int HT1,HT2; 
         if ( _Period == PERIOD_M1 )  
            {HT1 = PERIOD_M5 ;
            HT2 = PERIOD_M15 ;}
         else
           {
           if ( _Period == PERIOD_M5 )  
            {HT1 = PERIOD_M15 ;
            HT2 = PERIOD_M30 ;}
           else
              {
               if ( _Period == PERIOD_M15 )  
               {HT1 = PERIOD_M30 ;
               HT2 = PERIOD_H1 ;}
               }
            }
   //MFI
   long Volume_0_0 = iVolume ( NULL , 0 ,i);
   long Volume_0_1 = iVolume ( NULL , 0 ,i+ 1 );
   double BWMFI_0_0 = iBWMFI ( NULL , 0 ,i);
   double BWMFI_0_1 = iBWMFI ( NULL , 0 ,i+ 1 );

   ///////// вопрос как тут указать правильно
   long Volume_1_0 = iVolume ( NULL ,HT1,i);
   long Volume_1_1 = iVolume ( NULL ,HT1,i+ 1 );
   double BWMFI_1_0 = iBWMFI ( NULL ,HT1,i);
   double BWMFI_1_1 = iBWMFI ( NULL ,HT1,i+ 1 );
   ....
}
 
LSM :

Tünaydın.

Söylesene, iCustom kullanarak bir vardiya ile farklı bir zaman diliminde gösterge değerini nasıl alabilirim?

Onlar. M5 üzerinde çalışıyorum, M15'teki önceki mum ile göstergenin değerini M15'ten almak istiyorum.

Sadece belgeleri dikkatlice okuyun.

 double    iCustom (
   string        symbol,           // имя символа
   int           timeframe,         // таймфрейм
   string        name,             // папка/имя_пользовательского индикатора
   ...                             // список входных параметров индикатора
   int           mode,             // источник данных
   int           shift             // сдвиг
   );
 
Alexey Viktorov :

Sadece belgeleri dikkatlice okuyun.

Sorumu düzenledim, kod ekledim. Bir döngü gider. Bu bir döngüde gerçekleştiğinde ne alacağım belli değil.
 
LSM :
Sorumu düzenledim, kod ekledim. Bir döngü gider. Bu bir döngüde gerçekleştiğinde ne alacağım belli değil.

Birisi için yararlı olması durumunda kendi soruma cevap vereceğim.

   
   !!!!
   int y = iBarShift ( NULL ,HT1, Time [i]);
   
   long Volume_1_0 = iVolume ( NULL ,HT1,y);
   long Volume_1_1 = iVolume ( NULL ,HT1,y+ 1 );
   double BWMFI_1_0 = iBWMFI ( NULL ,HT1,y);
   double BWMFI_1_1 = iBWMFI ( NULL ,HT1,y+ 1 );