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

 
Tango_X :

Teşekkür ederim! Her zaman sınıflara bir sınıfa bir işaretçi aracılığıyla erişildiğini düşündüm. Ve işte sadece bir duyuru.. Bunun sebebi nedir?

Bu, OOP'nin temelleri, biraz yardıma bakın. Örneğin operatörler new/delete vb.

 
Tango_X :

Teşekkür ederim! Her zaman sınıflara bir sınıfa bir işaretçi aracılığıyla erişildiğini düşündüm. Ve işte sadece bir duyuru.. Bunun sebebi nedir?

İnceleyeceğim, teşekkürler!!

 
Seric29 :

MT5'te semboller oluşturmak için hangi metatrader'ı kullanıyorsunuz?

Evet, MT5'te

 
fxsaber :

Yasaktır.

Üzüntü.

Bunu excel'e yükledikten sonra yapıyorum ama bazı eksiklikler de var. Böyle bir yerleşik özelliğin olmaması çok yazık.

Ancak bunun bir şekilde programlı olarak uygulanabileceğine dair bir önsezi var)

 
ISL :

Evet, MT5'te

Ne yazık ki MT4'te semboller oluşturamazsınız , değerleri değiştirebilirsiniz, ancak onları oluşturamazsınız.

 

ArraySetAsSeries()'den nasıl kurtulacağınızı öğrenin !!!

burada MT4 için iyi bilinen göstergenin bir bölümünü yeniden yazdım (Mükemmel eğilim çizgisi), her şey MT4'teki gibi çalışıyor AMA... ama zorla yazdığım ArraySetAsSeries()'den kurtulamıyorum - aksi halde gösterge yapar doğru hesaplamıyor, biliyorum ArraySetAsSeries() dizide yön indekslemeyi değiştirecek ama 2 gün içinde kazanamadı!

 #property indicator_chart_window
#property indicator_buffers 7
#property indicator_plots    1
//--- plot BufBars
#property indicator_label1    "BufBars"
#property indicator_type1    DRAW_COLOR_BARS
#property indicator_color1    clrRed , clrAqua , clrNONE
#property indicator_style1    STYLE_SOLID
#property indicator_width1    3

//--- input parameters
input int SlowLength         = 7 ; //Slow length
input int SlowPipDisplace    = 0 ; //Slow pip displace
input int FastLength         = 3 ; //Fast length
input int FastPipDisplace    = 0 ; //Fast pip displace
//--- indicator buffers
double          BufBarsBuffer1[];
double          BufBarsBuffer2[];
double          BufBarsBuffer3[];
double          BufBarsBuffer4[];
double          BufBarsColors[];
double          BufLSELLBuffer[];
double          BufLBUYBuffer[];
static int trend= 0 ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,BufBarsBuffer1, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,BufBarsBuffer2, INDICATOR_DATA );
   SetIndexBuffer ( 2 ,BufBarsBuffer3, INDICATOR_DATA );
   SetIndexBuffer ( 3 ,BufBarsBuffer4, INDICATOR_DATA );
   SetIndexBuffer ( 4 ,BufBarsColors, INDICATOR_COLOR_INDEX );
   SetIndexBuffer ( 5 ,BufLSELLBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 6 ,BufLBUYBuffer, INDICATOR_DATA );
   for ( int i= 0 ;i< 7 ;i++)
     {
       PlotIndexSetInteger (i, PLOT_DRAW_BEGIN ,FastLength+ 1 );
       PlotIndexSetDouble (i, PLOT_EMPTY_VALUE , 0.0 );
     }
   ArraySetAsSeries (BufBarsBuffer1, true );
   ArraySetAsSeries (BufBarsBuffer2, true );
   ArraySetAsSeries (BufBarsBuffer3, true );
   ArraySetAsSeries (BufBarsBuffer4, true );
   ArraySetAsSeries (BufBarsColors, true );
   ArraySetAsSeries (BufLBUYBuffer, true );
   ArraySetAsSeries (BufLSELLBuffer, true );
//--- setting a code from the Wingdings charset as the property of PLOT_ARROW
   trend= 0 ;
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   int i,limit;
   double thigh1,tlow1,thigh2,tlow2,trendUp,trendDn;
   ArraySetAsSeries (open, true );
   ArraySetAsSeries (high, true );
   ArraySetAsSeries (low, true );
   ArraySetAsSeries (close, true );
   if (prev_calculated== 0 )
     {
      limit=rates_total- 1 ;
      BufLSELLBuffer[limit]=high[limit];
      BufLBUYBuffer[limit]=low[limit];
      limit--;
     }
   else limit=rates_total-prev_calculated+ 1 ;
   for (i=limit;i>= 0 ;i--)
     {
      thigh1= high[ iHighest ( NULL , 0 , MODE_HIGH ,SlowLength,i)]+SlowPipDisplace * _Point ;
      tlow1 = low[ iLowest ( NULL , 0 , MODE_LOW ,SlowLength,i)]-SlowPipDisplace * _Point ;
      thigh2= high[ iHighest ( NULL , 0 , MODE_HIGH ,FastLength,i)]+FastPipDisplace * _Point ;
      tlow2 = low[ iLowest ( NULL , 0 , MODE_LOW ,FastLength,i)]-FastPipDisplace * _Point ;
       if (close[i]>BufLBUYBuffer[i+ 1 ])  trendUp=tlow1;   else trendUp=thigh1;
       if (close[i]>BufLSELLBuffer[i+ 1 ]) trendDn=tlow2;   else trendDn=thigh2;
      BufLSELLBuffer[i]= trendDn;
      BufLBUYBuffer[i] = trendUp;
      BufBarsBuffer1[i] = 0.0 ;
      BufBarsBuffer2[i] = 0.0 ;
      BufBarsBuffer3[i] = 0.0 ;
      BufBarsBuffer4[i] = 0.0 ;
      BufBarsColors[i]  = 2 ;
       if (close[i]<trendUp && close[i]<trendDn)
        {
         BufBarsBuffer1[i] = open[i];
         BufBarsBuffer2[i] = high[i];
         BufBarsBuffer3[i] = low[i];
         BufBarsBuffer4[i] = close[i];
         BufBarsColors[i]  = 0 ;
        }
       if (close[i]>trendUp && close[i]>trendDn)
        {
         BufBarsBuffer1[i] = open[i];
         BufBarsBuffer2[i] = high[i];
         BufBarsBuffer3[i] = low[i];
         BufBarsBuffer4[i] = close[i];
         BufBarsColors[i]  = 1 ;
        }
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
 
Igor Makanu :

ArraySetAsSeries()'den nasıl kurtulacağınızı öğrenin !!!

burada MT4 için iyi bilinen göstergenin bir bölümünü yeniden yazdım (Mükemmel eğilim çizgisi), her şey MT4'teki gibi çalışıyor AMA... ama zorla yazdığım ArraySetAsSeries()'den kurtulamıyorum - aksi halde gösterge yapar doğru hesaplamıyor, biliyorum ArraySetAsSeries() dizide yön indekslemeyi değiştirecek ama 2 gün içinde kazanamadı!

böyle olabilir mi

 #ifdef __MQL5__
   ArraySetAsSeries (BufBarsBuffer1, true );
   ArraySetAsSeries (BufBarsBuffer2, true );
   ArraySetAsSeries (BufBarsBuffer3, true );
   ArraySetAsSeries (BufBarsBuffer4, true );
   ArraySetAsSeries (BufBarsColors, true );
   ArraySetAsSeries (BufLBUYBuffer, true );
   ArraySetAsSeries (BufLSELLBuffer, true );
#endif
 
Vitaly Muzichenko :

böyle olabilir mi

sağol kanka! ama burada mesele anlamakla ilgili ve kaynak metnin genel "ağırlığını" azaltmakla ilgili değil, ArraySetAsSeries() olmadan gösterge değerlerini hesaplamanın mümkün olduğunu biliyorum, ama nedense ne gördüğümü anlamıyorum. Yanlış yapıyorum, kod tabanında basit bir örnek bulmaya çalıştım, ne yazık ki, orada tüm göstergeler o kadar farklı yazılmış ki çözemiyorum (((

Not: Platformlar arası bir göstergeye ihtiyacım yok, varsayılan dizi indeksleme ile uğraşmak istiyorum, zaten ArrayGetAsSeries() aracılığıyla dizileri yazdırdım - Çözemedim

 
Igor Makanu :

sağol kanka! ama burada kaynak metnin genel "ağırlığını" azaltmakla ilgili değil, anlamakla ilgili, gösterge değerlerini ArraySetAsSeries() olmadan hesaplamanın mümkün olduğunu biliyorum, ancak nedense ne olduğumu göremiyorum yanlış yapıyorum, kod tabanında basit bir örnek bulmaya çalıştım, ne yazık ki, orada tüm göstergeler o kadar farklı yazılmış ki çözemiyorum (((

Göstergeyi baştan sona hesaplarsınız (en son tarihsel verilerden en yeniye - güncele). Ve bu, bir zaman serisinde olduğu gibi indekslemeden bahseder. Bu, dizilerin buna göre indekslenmesi gerektiği anlamına gelir, sahip olduğunuz şey budur.

O zaman ne işe yaramaz?

 
Igor Makanu :

sağol kanka! ama burada kaynak metnin genel "ağırlığını" azaltmakla ilgili değil, anlamakla ilgili, gösterge değerlerini ArraySetAsSeries() olmadan hesaplamanın mümkün olduğunu biliyorum, ancak nedense ne olduğumu göremiyorum yanlış yapıyorum, kod tabanında basit bir örnek bulmaya çalıştım, ne yazık ki, orada tüm göstergeler o kadar farklı yazılmış ki çözemiyorum (((

Not: Platformlar arası bir göstergeye ihtiyacım yok, varsayılan dizi indeksleme ile uğraşmak istiyorum, zaten ArrayGetAsSeries() aracılığıyla dizileri yazdırdım - Çözemedim

Bunu ArraySetAsSeries olmadan yapabilirsiniz, sadece 0 dizi indeksi veren Yazdır veya Yorum ile netlik için bakın, örneğin open[0]. Ve buradan dans et. Bu neyin ne olduğunu anlamak için.