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

 
Roman Sharanov :

Göstergelerin nasıl yazılacağını anlamıyorum, sorunun ne olduğunu açıklayın?

active_1 ve active_2 öğeleri arasındaki fiyat farkını gösteren bir çizgi oluşturmanız gerekir

işe yarıyor

periyodun ortalama ma_periyodu da bu çizgi boyunca çizilmelidir, bu zaten bir problem, görüntülenmiyor

Kopyalama sonucunu kontrol etmeyin.

Tüm geçmişi her onay işaretine kopyalayın.

Yerel olmayan bir sembol ( geçerli grafiğin sembolü değil) için, Rates_total değil, Bars() sayısını kopyalamanız gerekir.

Her iki dakikada bir, örneğin yerel olmayan bir sembolün geçmiş verilerini güncel tutmak için mevcut çubuğun zamanını istemek gerekir.

dataBuffer verilerini düzleştirmek için SimpleMAOnBuffer() kullanın

 
Artyom Trishkin :

Kopyalama sonucunu kontrol etmeyin.

Tüm geçmişi her onay işaretine kopyalayın.

Yerel olmayan bir sembol ( geçerli grafiğin sembolü değil) için, Rates_total değil, Bars() sayısını kopyalamanız gerekir.

Her iki dakikada bir, örneğin yerel olmayan bir sembolün geçmiş verilerini güncel tutmak için mevcut çubuğun zamanını istemek gerekir.

dataBuffer verilerini düzleştirmek için SimpleMAOnBuffer() kullanın

bunun gibi bir şey mi? tamamen çalışmayı durdurdu

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
  {
//---
   int bars1 = Bars (active_1, timeframe), bars2 = Bars (active_2, timeframe);
   
   if ( CopyClose (active_1,timeframe, 0 ,bars1,firstBuffer) < 0 ) return 0 ;
   if ( CopyClose (active_2,timeframe, 0 ,bars2,secondBuffer) < 0 ) return 0 ;
   if (bars1 != bars2) return 0 ;
   int first, bar;
   
   if (prev_calculated == 0 ) first = begin; else first = prev_calculated - 1 ;
   
   for (bar = first; bar<bars1; bar++){
      dataBuffer[bar] = firstBuffer[bar]-secondBuffer[bar];
      maBuffer[bar] = SimpleMA(bar, ma_period, dataBuffer);
   }
   SimpleMAOnBuffer(bars1, prev_calculated, begin, ma_period, dataBuffer, maBuffer);
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
void OnTimer (){
   iTime (active_1,timeframe, 1 );
   iTime (active_2,timeframe, 1 );
}
void OnDeinit ( const int reason){
   EventKillTimer ();
}
 

Selamlar.

Söyle bana, lütfen, danışman bir sipariş açtığında bazı değerleri nasıl kaydedeceğim? örneğin bilete göre, özellikle bu siparişle ilgili olmaları için.

 
Andrey Sokolov :

Selamlar.

Söyle bana, lütfen, danışman bir sipariş açtığında bazı değerleri nasıl kaydedeceğim? böylece, örneğin bilete göre, özellikle o siparişle ilgilidirler.

bir yorumda

 

Volatiliteyi izlemek istiyorum. Bunu yapmak için, tmp1 dizisindeki açık-kapalı farkını hesaplarım ve ardından ilgili dönem için SMA'yı bunun üzerine kurarım.


 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;
double tmp1[];

       Print ( "rates_total = " ,rates_total);
       for (i= 1 ; i<rates_total; i++)
      {
      tmp1[i]= MathMax (open[i],close[i])- MathMin (open[i],close[i]);      
      ip1Buf[i]= iMA ( NULL , 0 , 1 , 0 , 0 ,tmp1[i], 0 );
      }
   
//--- return value of prev_calculated for next call
   return (rates_total);
  }


Derleme sırasında hata oluşmuyor, gösterge terminalde çizilmiyor, günlük girişi CADJPY,H1: '_t1.mq4' içinde dizi aralık dışında (65,11)

MathMax - MathMin farkının hesaplandığı satır burası, sebebi ne olabilir?


 
psyman :

Volatiliteyi izlemek istiyorum. Bunu yapmak için, tmp1 dizisindeki açık-kapalı farkını hesaplarım ve ardından ilgili dönem için SMA'yı bunun üzerine kurarım.



Derleme sırasında hata oluşmuyor, gösterge terminalde çizilmiyor, günlük girişi CADJPY,H1: '_t1.mq4' içinde dizi aralık dışında (65,11)

MathMax - MathMin farkının hesaplandığı satır burası, sebebi ne olabilir?


Kodu pek anlamadım, ancak öyleyse:

 for (i= 1 ; i<rates_total - 1 ; i++)
 

Çalışmıyor.


UPD

Dizeyi çok minimum olacak şekilde basitleştirdi tmp1[i]=close[i]; Hata aynı kalır.

 
psyman :

Volatiliteyi izlemek istiyorum. Bunu yapmak için, tmp1 dizisindeki açık-kapalı farkını hesaplarım ve ardından ilgili dönem için SMA'yı bunun üzerine kurarım.



Derleme sırasında hata oluşmuyor, gösterge terminalde çizilmiyor, günlük girişi CADJPY,H1: '_t1.mq4' içinde dizi aralık dışında (65,11)

MathMax - MathMin farkının hesaplandığı satır burası, sebebi ne olabilir?


tmp[] dizisi dinamik olarak bildirilir ve başlangıçta sıfır uzunluğa sahiptir. Bu nedenle hata.

Bu dizi, hesaplamalar için bir gösterge arabelleği olarak bildirilmelidir.

 
 

bir gösterge arabelleği olarak bildirilmelidir.


Neden dinamik bir dizi kullanamıyorsunuz?

Bu durumda, herhangi bir hesaplama yapmadan kapanış fiyatını orada yeniden yazdım.

Gösterge arabelleklerinin nasıl kullanılacağını nereden okuyabilirim?