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

 

Merhaba! Yardımınız gerekli, forum kullanıcıları. Bir gösterge yazıyorum. İşlerken, işlenen çubuğun açılma süresinin değerine ihtiyacım var. Görünüşe göre bu zaman time[] içinde saklanmalı, ancak bir tür saçmalık var.

 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[])
  {
//---check for rates total


   if (rates_total< 2 )
       return ( 0 );
//--- starting work
   int start=prev_calculated- 1 ;
//--- correct position
   if (start< 1 ) start= 1 ;
//--- main cycle

CalculateVolume(start,rates_total,time);


//--- OnCalculate done. Return new prev_calculated.
   return (rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CalculateVolume( const int nPosition,
                     const int nRatesCount,
                     const long &tim[],
                     )
  {
  
MqlDateTime dat1;


for ( int j=nPosition;j<nRatesCount && ! IsStopped ();j++)
{
     TimeToStruct (tim[j],dat1);

     Print ( "год " ,dat1.year, " " ,dat1.day, " " ,dat1.hour, " " ,dat1.min)


 }
} 

2017.11.20 17:48:01.590 (RTS-12.17,M1) 2016 yılı 29 15 26

2017.11.20 17:48:01.734 (RTS-12.17,M1) yıl 2016 29 15 27

2017.11.20 17:48:01.788 (RTS-12.17,M1) yıl 2016 29 15 29

2017.11.20 17:48:02.022 (RTS-12.17,M1) 2016 yılı 29 15 33

2017.11.20 17:48:02.165 (RTS-12.17,M1) yıl 2016 29 15 45

2017.11.20 17:48:02.310 (RTS-12.17,M1) yıl 2016 29 21 12

2017.11.20 17:48:02.454 (RTS-12.17,M1) 2016 yılı 1 20 54

2017.11.20 17:48:02.5999 (RTS-12.17,M1) yıl 2016 2 12 52

2017.11.20 17:48:02.743 (RTS-12.17,M1) 2016 yılı 2 22 28

2017.11.20 17:48:02.887 (RTS-12.17,M1) 2016 yılı 2 23 20

2017.11.20 17:48:03.031 (RTS-12.17,M1) 2016 yılı 3 11 47

2017.11.20 17:48:03.175 (RTS-12.17,M1) 2016 yılı 3 22 34

2017.11.20 17:48:03.320 (RTS-12.17,M1) 2016 yılı 3 22 35

2017.11.20 17:48:03.463 (RTS-12.17,M1) yıl 2016 4 21 56

2017.11.20 17:48:03.609 (RTS-12.17,M1) 2016 yılı 4 23 32

bir günde sadece birkaç bar varmış gibi hissettiriyor. Söyle lütfen, beyinler zaten bir tarafta.

 
fxsaber :

Evet, ama eğri.

özet :
İlk bakışta CopyTick test cihazında çalışır. Test cihazında CopyTicks işleminde bilinen herhangi bir hata var mı? CopyTicksRange gerçek hayatta hatasız çalışır mı?

Bir sonraki derlemede, geliştiriciler test cihazında TİCARET bayraklarının doğru görüntüsünü yapacaktır.

fxsaber :

Test cihazında kene süresi ile ilgili bir hata var. Her seferinde belirli bir miktar çıkarmanız gerekir. SD sorunun farkında.

Daha?
 
Güzel gün! Bir ticaret talebinin (MqlTradeRequest) yapısını farklı versiyonlarda inceliyorum. https://www.mql5.com/en/articles/100 makalesinden hazır bir danışman my_first_ea.mq5 aldım ve SAR geçtiğinde bir pozisyon açmak için kaynak kodundaki koşulu değiştirmeye çalıştım - işe yaradı. Sonra MqlTradeRequest yapısındaki MQL5 referansından takip eden bir kod (SAR tarafından bir pozisyonu değiştirme/değiştirme) ekledim. Ancak sürekli olarak [Geçersiz duraklamalar] hatası veriyor. İstekte bir yanlışlık var gibi görünüyor. Kısacası, pozisyon değişikliği çalışmasına takıldım. Gerçekten neyi yanlış yaptığımı anlamıyorum???
Dosyalar:
SAR_SAR.mq5  27 kb
 
Alexey Kozitsyn :

Daha?

 void OnTick ()
{
   MqlTick Ticks[];
  
   if ( CopyTicksRange ( _Symbol , Ticks) != - 1 )
  {
     ArrayPrint (Ticks);              
    
     ExpertRemove ();
  }
}
 
Yardımınız için teşekkürler, birçok insan yardım etmeye istekli! Kodumla ilgili yorumları okumaktan bıktım ................
 
DCodec :
Yardımınız için teşekkürler, birçok insan yardım etmeye istekli! Kodumla ilgili yorumları okumaktan bıktım ................
Kod yok, yorum yok.
 

Lütfen fiyat artışını nasıl öğreneceğimi söyleyin ("Kene boyutu" belirtiminde)?

 
Aleksey Vyazmikin :

Lütfen fiyat artışını nasıl öğreneceğimi söyleyin ("Kene boyutu" belirtiminde)?

ht

 
Vladislav Andruschenko :
ht


Teşekkür ederim! aradım bulamadım...

Sonra bir sonraki soru, diyelim ki adım 25, o zaman 25'in katlarına yuvarlama nasıl organize edilir, bir fonksiyon olabilir mi?

 
Aleksey Vyazmikin :

Teşekkür ederim! aradım bulamadım...

Sonra bir sonraki soru, diyelim ki adım 25, o zaman 25'in katlarına yuvarlama nasıl organize edilir, bir fonksiyon olabilir mi?


Bir işlev yaptım, işe yarıyor gibi görünüyor

 //+------------------------------------------------------------------+
//|Функция округления числа до кратного целого                       |
//+------------------------------------------------------------------+
double Okr( double cifra)
  {
     double TickSize= SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_SIZE );
     double Okruglenie= NormalizeDouble (cifra/TickSize, _Digits )*TickSize;
     Print ( "До кратного округления=" , DoubleToString (cifra, _Digits ), " После кратного округления=" , DoubleToString (Okruglenie, _Digits ));
     return (Okruglenie);
  }