Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1023

 

Arkadaşlar, elimi mql5'te deniyorum, lütfen bana "sıfır çubuğu" üzerindeki iMA gösterge verilerini nasıl alacağımı, yani mevcut çubuktaki gösterge değerini nasıl alacağımı söyleyin?

öyle yaparsam

 int OnInit ()
{handle.MA_CHART= iMA ( _Symbol , _Period ,period_MA_CHART, 0 ,Signal_MA_Method,Signal_MA_Applied);}

void OnTick ()
{ CopyBuffer (handle.MA_CHART, 0 , 0 , 3 , ind_date.MA_CHART);}


çağrıldığında

ind_date.MA_CHART[ 0 ]

Mevcut çubuğun değil, önceki çubuğun verilerini alıyorum.

 
Yury Smagin :

Arkadaşlar, elimi mql5'te deniyorum, lütfen bana "sıfır çubuğu" üzerindeki iMA gösterge verilerini nasıl alacağımı, yani mevcut çubuktaki gösterge değerini nasıl alacağımı söyleyin?

öyle yaparsam


çağrıldığında

Mevcut çubuğun değil, önceki çubuğun verilerini alıyorum.

dizi ihtiyacı

 ArraySetAsSeries (ind_date.MA_CHART, true );

ve sonra dizide "0" indeksli eleman grafikteki en SAĞ çubuğa karşılık gelir.

 
Vladimir Karputov :

dizi ihtiyacı

ve sonra dizide "0" indeksli eleman grafikteki en SAĞ çubuğa karşılık gelir.

Sayesinde!
 
Yury Smagin :

Arkadaşlar, elimi mql5'te deniyorum, lütfen bana "sıfır çubuğu" üzerindeki iMA gösterge verilerini nasıl alacağımı, yani mevcut çubuktaki gösterge değerini nasıl alacağımı söyleyin?

öyle yaparsam


çağrıldığında

Mevcut çubuğun değil, önceki çubuğun verilerini alıyorum.

Şu filmdeki gibi, "Belirsiz şüpheler bana işkence ediyor..." Çalışmak için danışmanımı kullanıyor musunuz:

Diziyi çevirmenize gerek yok. Dizinin ikinci indeksinin değerini almak yeterlidir.

ind_date.MA_CHART[ 2 ]
 

OBJPROP_BACK

Bu şekilde denedim. Ama öyle değil. Nasıl çalıştığı hiç belli değil.

Değeri ne olursa olsun, nesneler basitçe oluşum sırasına göre görüntülenir - hangisi sonuncuysa, hangisi daha yüksekse.

Ve ikiden fazla varsa, bir nesnenin seviyesi (katmanı) nasıl ayarlanır? Belki başka ayarlar da vardır? Söyle bana, kim bilir, plz.

 
Alexey Viktorov :

Şu filmdeki gibi, "Belirsiz şüpheler bana işkence ediyor..." Çalışmak için danışmanımı kullanıyor musunuz:

Diziyi çevirmenize gerek yok. Dizinin ikinci indeksinin değerini almak yeterlidir.

Sayesinde!

 

Hepinize iyi şanslar))


Söyle bana, sonuçlardaki fark neden?

 //+------------------------------------------------------------------+
//|  exponential moving average multytimeframes   ДЛЯ БУФЕРА         |
//+------------------------------------------------------------------+
void CalculateExponentialMA( int rates_total, int prev_calculated, int begin, const double &price[])
  {
   int     i,limit;
   double SmoothFactor= 2.0 /( 1.0 +period_ma);
//--- first calculation or number of bars was changed
   if (prev_calculated== 0 )
     {
      limit=period_ma+begin;
      ExtLineBuffer[begin]=price[begin];
   for (i=begin+ 1 ;i<limit;i++)
         ExtLineBuffer[i]=price[i]*SmoothFactor+ExtLineBuffer[i- 1 ]*( 1.0 -SmoothFactor);
     }
   else limit=prev_calculated- 1 ;
//--- main loop
   for (i=limit;i<rates_total && ! IsStopped ();i++)
      ExtLineBuffer[i]=price[i]*SmoothFactor+ExtLineBuffer[i- 1 ]*( 1.0 -SmoothFactor);
//---
  }
//+------------------------------------------------------------------+
//|  exponential moving average       ДЛЯ ТОЧКИ                      |
//+------------------------------------------------------------------+
void CalculateEMA( int periodMA, int bgn)
  {
 int i,lmt=periodMA+bgn+ 1 ;
 double SmoothFactor= 2.0 /( 1.0 +periodMA);
   for (i= 0 ;i<lmt;i++)
              BufferPrice[i]= 0.0 ;
   switch (AppliedPrice)
     {
       case 1 : BufferPrice[lmt]= iClose ( NULL ,Timeframes,lmt); break ;
       case 2 : BufferPrice[lmt]= iOpen ( NULL ,Timeframes,lmt);   break ;
       case 3 : BufferPrice[lmt]= iHigh ( NULL ,Timeframes,lmt);   break ;
       case 4 : BufferPrice[lmt]= iLow ( NULL ,Timeframes,lmt);   break ;
   default :  BufferPrice[lmt]= iClose ( NULL ,Timeframes,lmt); break ;
     }
   for (i=lmt- 1 ;i>= 0 ;i--)
   switch (AppliedPrice)
     {
       case 1 : BufferPrice[i]= iClose ( NULL ,Timeframes,i)*SmoothFactor+BufferPrice[i+ 1 ]*( 1.0 -SmoothFactor); break ;
       case 2 : BufferPrice[i]= iOpen ( NULL ,Timeframes,i)*SmoothFactor+BufferPrice[i+ 1 ]*( 1.0 -SmoothFactor);   break ;
       case 3 : BufferPrice[i]= iHigh ( NULL ,Timeframes,i)*SmoothFactor+BufferPrice[i+ 1 ]*( 1.0 -SmoothFactor);   break ;
       case 4 : BufferPrice[i]= iLow ( NULL ,Timeframes,i)*SmoothFactor+BufferPrice[i+ 1 ]*( 1.0 -SmoothFactor);   break ;
   default :  BufferPrice[i]= iClose ( NULL ,Timeframes,i)*SmoothFactor+BufferPrice[i+ 1 ]*( 1.0 -SmoothFactor); break ;
     }
      MA= NormalizeDouble (BufferPrice[bgn], _Digits );
  }
//+------------------------------------------------------------------+

SORU: MA hesaplamalarının ikinci versiyonunda neyi yanlış yazdım?

Teşekkürler)))

 
Optimize ederken, grafik nesneler grafikten okunabilecek şekilde mi oluşturulmuş?
 
Aleksey Vyazmikin :
Optimize ederken, grafik nesneler grafikten okunabilecek şekilde mi oluşturulmuş?

Değil

 
Artyom Trishkin :

Değil

Kötü...