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

 
Aleksei Stepanenko ise, MqlDateTime yapısını kullanarak çubuk zamanı boyunca diziyi kontrol ederek sırayla her çubuğu yineleyin. Ama sonra, olmaması gereken, kaçırılan çubuklarla ilgili sinyaller olacaktır.

Burada örneğin:

Çarşamba günü 1 çubuğu kaçırdı, bu sembol 00:30'da başlıyor, yani 00:00'da kayıp

M30 zamanı, 48 yerine 47. günlerde ortaya çıktı. Tam olarak tanımlanması gereken şey bu.


 
Vitaly Muzichenko # :

Burada örneğin:

Çarşamba günü 1 çubuğu kaçırdı, bu sembol 00:30'da başlıyor, yani 00:00'da kayıp

M30 zamanı, 48 yerine 47. günlerde ortaya çıktı. Tam olarak tanımlanması gereken şey bu.


Nasıl bilmiyorum ama ben bu yönde düşünüyorum

       datetime tt=Time[ Bars - 1 ];
       //--- 
       if (Time[i]==tt){tt+= PeriodSeconds ( PERIOD_CURRENT );}
       else
      { Print ( TimeToString (tt, TIME_DATE | TIME_MINUTES ));tt+= PeriodSeconds ( PERIOD_CURRENT );}
 
Vitaly Muzichenko # :

Burada örneğin:

Çarşamba günü 1 çubuğu kaçırdı, bu sembol 00:30'da başlıyor, yani 00:00'da kayıp

M30 zamanı, 48 yerine 47. günlerde ortaya çıktı. Tam olarak tanımlanması gereken şey bu.


 int    Bars ( 
   string            symbol_name,     // имя символа 
   ENUM_TIMEFRAMES   timeframe,       // период 
   datetime          start_time,       // с какой даты 
   datetime          stop_time         // по какую дату 
   );
47 ise
 

Vitaly Muzichenko # :

Ortaya çıkarılması gereken bu.

Anlaşıldı, soru çok olacak yanlış çağrılarda.

 //дата последней свечи
 curr_time= iTime (symbol,frame, 0 );
//ограничение на торговлю вне начала бара
if (last_time==curr_time) return ;

if (( iBarShift (eSymbol,eFrame,last_time)- iBarShift (eSymbol,eFrame,curr_time))> PeriodSeconds (eFrame)) printf ( "а-я-яй" );
last_time=curr_time;
 
Alexey Viktorov # :
47 ise

Mümkün, ayrıca CopyOpen() yapabilirsiniz.

Bunu tarih boyunca bir döngüde nasıl organize edeceğimi çözemiyorum

 

Daha da kolay:

 for ( int i=TotalBars- 1 ; .....
   {
   if (( iBarShift (eSymbol,eFrame,last_time)-i)> PeriodSeconds (eFrame)) printf ( "а-я-яй" );
   last_time= iTime (symbol,frame,i);
 
Vitaly Muzichenko # :

Mümkün, ayrıca CopyOpen() yapabilirsiniz.

Bunu tarih boyunca bir döngüde nasıl organize edeceğimi çözemiyorum

Sıfır günlük çubuğunun açılış süresi eksi ilk günlük çubuğun açılmasından 1 saniye önce. Daha sonra ilk günlük barın açılışından eksi 1 saniye ikinci günlük barın açılışına kadar vb.
 
Vitaly Muzichenko # :

Mümkün, ayrıca CopyOpen() yapabilirsiniz.

Bunu tüm hikaye boyunca bir döngüde nasıl organize edeceğimi çözemiyorum

draft (örneğin, M30 için) - bitişik çubukların açıklıkları arasındaki süre (modulo % 24 saat) M30'dan büyükse, aralarında eksik çubuklar vardır.

int nbars = ( ( iTime(_Symbol,PERIOD_M30,N) - iTime(_Symbol,PERIOD_M30,N+1) ) ) / PeriodSeconds(PERIOD_M30) ) % 48; // сколько баров должно быть между ссоедними отметками

if (nbars>1) PrintFormat("Пропущено баров: %d",nbars-1);

 

ALL sayesinde, ilke açık, görevi resmileştirebildim.

---

Şimdi soru şu: Neyi yanlış yapıyorum, tüm karakterler aynı değere sahip mi?

 #property strict

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   Print ( DoubleToString ( SymbolInfoDouble ( _Symbol , SYMBOL_POINT ), 8 ) );
  }
//+------------------------------------------------------------------+
0        14 : 39 : 38.965     sc GBPCHF,M30: 0.00001000
0        14 : 46 : 44.478     sc NZDCHF,M30: 0.00001000
0        14 : 44 : 54.709     sc EURUSD,M30: 0.00001000

---

PS Terminali MT4, farklı DC'lerde iki farklı terminalde kontrol edildi

not MT5'te kontrol edildi, sonuç aynı

 2021.11 . 20 15 : 05 : 34.881 sc (EURCHF,M30)  0.00001000
2021.11 . 20 15 : 05 : 39.203 sc (AUDUSD,M30)  0.00001000
2021.11 . 20 15 : 05 : 51.985 sc (EURAUD,M30)  0.00001000

---

Yanlış bir şey yapıyor olmalıyım!

"Pip Değeri" almanız gerekiyor

 
Vitaly Muzichenko # :

ALL sayesinde, ilke açık, görevi resmileştirebildim.

---

Şimdi soru şu: Neyi yanlış yapıyorum, tüm karakterler aynı değere sahip mi?

Vitaliy, burada ya bir hatada, geliştiricilere ya da