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

 
Alexey Viktorov :

Zaman ve fiyatın piksel cinsinden XY koordinatlarına çevrilmesine dikkat edin

Çizginin fiyatını okuyun, piksele dönüştürün ve x koordinatı değişmeden kalırken "Metin Etiketi" nesnesine y koordinatlarını atayın.

Bu f-th'e uzun zamandır bakıyorum ama yeterli tecrübe olmadığı için nasıl yaklaşacağımı bilemedim. Teşekkürler, koda entegre etmeye çalışacağım.

 
Aleksei Stepanenko :

Çizgi ve Metin Göstergesi Ver 1

Gösterge, satırı takip eden metni hareket ettirir. Giriş parametresine satır adını girin.

Sayesinde. Bu da ilginç bir kadro. ChartTimePriceToXY()'de nasıl ustalaşacağımı kesinlikle bulacağım.

 

Söyle bana, lütfen, sorun ne olabilir?

   for ( int i=rates_total-prev_calculated- 2 ;i>= 0 ;i--)
     {
      ADRBuffer1[i]=High[i];
       if (High[i]<ADRBuffer1[i+ 1 ])
      ADRBuffer1[i]=ADRBuffer1[i+ 1 ];
      ADRBuffer2[i]=Low[i];
       if (Low[i]>ADRBuffer2[i+ 1 ])
      ADRBuffer2[i]=ADRBuffer2[i+ 1 ];
     }

Düşük beraberlik, ancak Yüksek istemiyor...

 
MakarFX :

Söyle bana, lütfen, sorun ne olabilir?

Düşük beraberlik, ancak Yüksek istemiyor...

ADRBuffer1[i+1] ilk çalıştırmada neye eşittir? Muhtemelen daha fazla çöp var Yüksek[i]

 
Alexey Viktorov :

ADRBuffer1[i+1] ilk çalıştırmada neye eşittir? Muhtemelen daha fazla çöp var Yüksek[i]

Lütfen nasıl düzelteceğimi ve neden Düşük normal çizdiğini söyle?

Tüm kod

 #property indicator_chart_window
#property indicator_buffers 3
#property indicator_type1    DRAW_LINE
#property indicator_color1    clrDimGray
#property indicator_style1    STYLE_SOLID
#property indicator_width1    2
#property indicator_type2    DRAW_LINE
#property indicator_color2    clrCrimson
#property indicator_style2    STYLE_SOLID
#property indicator_width2    1
#property indicator_type3    DRAW_LINE
#property indicator_color3    clrTeal
#property indicator_style3    STYLE_SOLID
#property indicator_width3    1
//--- indicator buffers
double    ADRBuffer0[];
double    ADRBuffer1[];
double    ADRBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
   IndicatorDigits( Digits );
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,ADRBuffer0, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,ADRBuffer1, INDICATOR_DATA );
   SetIndexBuffer ( 2 ,ADRBuffer2, INDICATOR_DATA );
   SetIndexLabel( 0 , "ADR" );
   SetIndexLabel( 1 , "ADR1" );
   SetIndexLabel( 2 , "ADR2" );
//---
   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[])
  {
//---
   if ((rates_total-prev_calculated- 2 )<= 0 ) return ( 0 );
   for ( int i=rates_total-prev_calculated- 2 ;i>= 0 ;i--)
     {
      ADRBuffer1[i]=High[i];
       if (High[i]<ADRBuffer1[i+ 1 ])
      ADRBuffer1[i]=ADRBuffer1[i+ 1 ];
      ADRBuffer2[i]=Low[i];
       if (Low[i]>ADRBuffer2[i+ 1 ])
      ADRBuffer2[i]=ADRBuffer2[i+ 1 ];
     }
   
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
 
MakarFX :

Lütfen bana bunu nasıl düzelteceğimi ve Düşük'ün neden normal şekilde çizdiğini söyle?

Tüm kod

Yapı sayısı bildirilmelidir. Ve prev_calculate == 0; olması koşuluyla, tampon başlatmayı sıfıra ayarlamayı deneyin.

 
Alexey Viktorov :

Yapı sayısı bildirilmelidir.

Ne yazık ki, bunun ne anlama geldiğini anlamıyorum.

Alexey Viktorov :

Prev_calculate == 0;

Yardım etmedi(

 
MakarFX :

Ne yazık ki, bunun ne anlama geldiğini anlamıyorum.

Yardım etmedi(


 if ( prev_calculated == 0 ) {
   ADRBuffer1[rates_total- 1 ] = High[rates_total- 1 ];
   ADRBuffer2[rates_total- 1 ] = Low[rates_total- 1 ]
}

for ( int i=rates_total-prev_calculated- 2 ;i>= 0 ;i--)
{
...
}
 
MakarFX :

Ne yazık ki, bunun ne anlama geldiğini anlamıyorum.

Yardım etmedi(

 #property indicator_plots    3

Varsayılan 1'dir. Ve yapı sayısını bildirmek yardımcı olmazsa, B seçeneğine ilerleyin.

 
PapaYozh :


Teşekkürler, yardımcı oldu ... doğru yapmadım)))