Servisler, MT5 mimarisinde yeni bir özellik, MT4'ün ölümü hemen köşede. - sayfa 8

 

İngilizceden.

veri -- veri

besleme -- besleme

datafeed -- veri kaynağı ("kaynak" kelimesi tam olarak anlamı iletmese de)


besleyici -- besleyici, besleyici, yükleme aygıtı

 

О датафидах. Сколько встречал этот термин, сложилось ощущение, что этим словом обозначают источник данных (котировок). Буквально "заполнитель данных". Когда речь идет о собственных инструментах, понимаю так, что мы сможем вычислять котировки, например, никем не котируемого MXNRUB по известным курсам MXNUSD и USDRUB, выгруженным из терминала в .csv формат, и легализовать для терминала новые котировки, указав файл .csv как новый датафид . Возможно, будет реализовано и более изящное решение, без выгрузки в файлы, путем онлайновых операций */ над тиками (MXNRUB =  MXNUSD * USDRUB). И это будет новый датафид.

Ve Per, MT5 için kenelerdeki .csv alıntılarının içe aktarımını zaten yaptınız mı?
 
Andrey Khatimlianskii :

Bir tartışma, hata raporu veya buna benzer bir bağlantınız yok mu? Ya da öyleymiş gibi bir his var ama şimdi kontrol etmediler mi?

Hatırladığım kadarıyla OnCalculate'de toplanan keneler, CopyTix aracılığıyla istenenlerle çakışıyordu.

Şimdi özellikle kontrol ettim ... beklendiği gibi, bir tür çöp var ama beklediğimden değil :)

 2017.05 . 22 12 : 47 : 10.591 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 10 : 47 : 11.27 ms v = 1 , bid = 108320 , ask = 108330 , last = 108330 , flags = 4
2017.05 . 22 12 : 47 : 10.591 (RTS- 6.17 ,M1)   OnBookEvent : 2017.05 . 22 10 : 47 : 11.27 ms v = 1 , bid = 108320 , ask = 108330 , last = 108330 , flags = 4
2017.05 . 22 12 : 47 : 10.599 (RTS- 6.17 ,M1)   OnBookEvent : 2017.05 . 22 10 : 47 : 11.27 ms v = 1 , bid = 108320 , ask = 108330 , last = 108330 , flags = 4
2017.05 . 22 12 : 47 : 10.605 (RTS- 6.17 ,M1)   OnBookEvent : 2017.05 . 22 10 : 47 : 11.27 ms v = 1 , bid = 108320 , ask = 108330 , last = 108330 , flags = 4
2017.05 . 22 12 : 47 : 10.617 (RTS- 6.17 ,M1)   OnBookEvent : 2017.05 . 22 10 : 47 : 11.27 ms v = 1 , bid = 108320 , ask = 108330 , last = 108330 , flags = 4
2017.05 . 22 12 : 47 : 10.637 (RTS- 6.17 ,M1)   OnBookEvent : 2017.05 . 22 10 : 47 : 11.27 ms v = 1 , bid = 108320 , ask = 108330 , last = 108330 , flags = 4
2017.05 . 22 12 : 47 : 10.649 (RTS- 6.17 ,M1)   OnBookEvent : 2017.05 . 22 10 : 47 : 11.27 ms v = 1 , bid = 108320 , ask = 108330 , last = 108330 , flags = 4
2017.05 . 22 12 : 47 : 10.683 (RTS- 6.17 ,M1)   OnBookEvent : 2017.05 . 22 10 : 47 : 11.27 ms v = 1 , bid = 108320 , ask = 108330 , last = 108330 , flags = 4
2017.05 . 22 12 : 47 : 10.765 (RTS- 6.17 ,M1)   OnBookEvent : 2017.05 . 22 10 : 47 : 11.27 ms v = 1 , bid = 108320 , ask = 108330 , last = 108330 , flags = 4
2017.05 . 22 12 : 47 : 10.771 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 10 : 47 : 11.193 ms v = 1 , bid = 108320 , ask = 108330 , last = 108320 , flags = 88
2017.05 . 22 12 : 47 : 10.781 (RTS- 6.17 ,M1)   OnBookEvent : 2017.05 . 22 10 : 47 : 11.193 ms v = 1 , bid = 108320 , ask = 108330 , last = 108320 , flags = 88
2017.05 . 22 12 : 47 : 10.843 (RTS- 6.17 ,M1)   OnBookEvent : 2017.05 . 22 10 : 47 : 11.244 ms v = 1 , bid = 108320 , ask = 108330 , last = 108320 , flags = 0
2017.05 . 22 12 : 47 : 10.843 (RTS- 6.17 ,M1)   OnBookEvent : Время последнего OnCalculate = 2017.05 . 22 10 : 47 : 11.193 ms ( 88 ), время последнего OnBookEvent = 2017.05 . 22 10 : 47 : 11.244 ms ( 0 )
2017.05 . 22 12 : 47 : 10.859 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 10 : 47 : 11.282 ms v = 1 , bid = 108320 , ask = 108330 , last = 108320 , flags = 88
2017.05 . 22 12 : 47 : 10.863 (RTS- 6.17 ,M1)   OnBookEvent : 2017.05 . 22 10 : 47 : 11.282 ms v = 1 , bid = 108320 , ask = 108330 , last = 108320 , flags = 88

0 bayraklı keneler OnBookEvent() aracılığıyla yakalanır...

 

Ve işte görmeyi beklediğim şey:

 2017.05 . 22 13 : 24 : 38.242 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 11 : 24 : 38.689 ms v = 2 , bid = 108540 , ask = 108560 , last = 108550 , flags = ' TICK_FLAG_BUY TICK_FLAG_LAST TICK_FLAG_VOLUME '
2017.05 . 22 13 : 24 : 38.242 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 11 : 24 : 38.689 ms v = 2 , bid = 108540 , ask = 108560 , last = 108550 , flags = ' TICK_FLAG_BUY TICK_FLAG_LAST TICK_FLAG_VOLUME '
2017.05 . 22 13 : 24 : 38.242 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 11 : 24 : 38.689 ms v = 2 , bid = 108540 , ask = 108560 , last = 108550 , flags = ' TICK_FLAG_BUY TICK_FLAG_LAST TICK_FLAG_VOLUME '
2017.05 . 22 13 : 24 : 38.242 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 11 : 24 : 38.689 ms v = 2 , bid = 108540 , ask = 108560 , last = 108550 , flags = ' TICK_FLAG_BUY TICK_FLAG_LAST TICK_FLAG_VOLUME '
2017.05 . 22 13 : 24 : 38.242 (RTS- 6.17 ,M1)   OnBookEvent : 2017.05 . 22 11 : 24 : 38.689 ms v = 2 , bid = 108540 , ask = 108560 , last = 108550 , flags = ' TICK_FLAG_BUY TICK_FLAG_LAST TICK_FLAG_VOLUME '
2017.05 . 22 13 : 24 : 38.253 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 11 : 24 : 38.704 ms v = 2 , bid = 108550 , ask = 108560 , last = 108550 , flags = ' TICK_FLAG_SELL TICK_FLAG_LAST TICK_FLAG_VOLUME '
2017.05 . 22 13 : 24 : 38.253 (RTS- 6.17 ,M1)   OnCalculate : Время последнего STick = 2017.05 . 22 11 : 24 : 38.704 ms ( TICK_FLAG_SELL TICK_FLAG_LAST TICK_FLAG_VOLUME ), время последнего CopyTicks = 2017.05 . 22 11 : 24 : 38.697 ms ( TICK_FLAG_SELL TICK_FLAG_LAST TICK_FLAG_VOLUME )
2017.05 . 22 13 : 24 : 38.253 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 11 : 24 : 38.704 ms v = 2 , bid = 108550 , ask = 108560 , last = 108550 , flags = ' TICK_FLAG_SELL TICK_FLAG_LAST TICK_FLAG_VOLUME '
2017.05 . 22 13 : 24 : 38.253 (RTS- 6.17 ,M1)   OnCalculate : Время последнего STick = 2017.05 . 22 11 : 24 : 38.704 ms ( TICK_FLAG_SELL TICK_FLAG_LAST TICK_FLAG_VOLUME ), время последнего CopyTicks = 2017.05 . 22 11 : 24 : 38.697 ms ( TICK_FLAG_SELL TICK_FLAG_LAST TICK_FLAG_VOLUME )
2017.05 . 22 13 : 24 : 38.254 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 11 : 24 : 38.704 ms v = 2 , bid = 108550 , ask = 108560 , last = 108550 , flags = ' TICK_FLAG_SELL TICK_FLAG_LAST TICK_FLAG_VOLUME '
2017.05 . 22 13 : 24 : 38.255 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 11 : 24 : 38.704 ms v = 2 , bid = 108550 , ask = 108560 , last = 108550 , flags = ' TICK_FLAG_SELL TICK_FLAG_LAST TICK_FLAG_VOLUME '
2017.05 . 22 13 : 24 : 38.255 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 11 : 24 : 38.704 ms v = 2 , bid = 108550 , ask = 108560 , last = 108550 , flags = ' TICK_FLAG_SELL TICK_FLAG_LAST TICK_FLAG_VOLUME '
2017.05 . 22 13 : 24 : 38.255 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 11 : 24 : 38.704 ms v = 2 , bid = 108550 , ask = 108560 , last = 108550 , flags = ' TICK_FLAG_SELL TICK_FLAG_LAST TICK_FLAG_VOLUME '
2017.05 . 22 13 : 24 : 38.261 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 11 : 24 : 38.710 ms v = 1 , bid = 108540 , ask = 108560 , last = 108560 , flags = ' TICK_FLAG_BID '
2017.05 . 22 13 : 24 : 38.261 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 11 : 24 : 38.710 ms v = 1 , bid = 108540 , ask = 108560 , last = 108560 , flags = ' TICK_FLAG_BID '
2017.05 . 22 13 : 24 : 38.261 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 11 : 24 : 38.710 ms v = 1 , bid = 108540 , ask = 108560 , last = 108560 , flags = ' TICK_FLAG_BID '
2017.05 . 22 13 : 24 : 38.262 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 11 : 24 : 38.710 ms v = 1 , bid = 108540 , ask = 108560 , last = 108560 , flags = ' TICK_FLAG_BID '
2017.05 . 22 13 : 24 : 38.262 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 11 : 24 : 38.710 ms v = 1 , bid = 108540 , ask = 108560 , last = 108560 , flags = ' TICK_FLAG_BID '
2017.05 . 22 13 : 24 : 38.270 (RTS- 6.17 ,M1)   OnBookEvent : 2017.05 . 22 11 : 24 : 38.710 ms v = 1 , bid = 108540 , ask = 108560 , last = 108560 , flags = ' TICK_FLAG_BID '
2017.05 . 22 13 : 24 : 38.280 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 11 : 24 : 38.730 ms v = 2 , bid = 108550 , ask = 108560 , last = 108560 , flags = ' TICK_FLAG_BUY TICK_FLAG_LAST TICK_FLAG_VOLUME '
2017.05 . 22 13 : 24 : 38.280 (RTS- 6.17 ,M1)   OnCalculate : Время последнего STick = 2017.05 . 22 11 : 24 : 38.730 ms ( TICK_FLAG_BUY TICK_FLAG_LAST TICK_FLAG_VOLUME ), время последнего CopyTicks = 2017.05 . 22 11 : 24 : 38.719 ms ( TICK_FLAG_BID )
2017.05 . 22 13 : 24 : 38.282 (RTS- 6.17 ,M1)   OnBookEvent : 2017.05 . 22 11 : 24 : 38.730 ms v = 2 , bid = 108550 , ask = 108560 , last = 108560 , flags = ' TICK_FLAG_BUY TICK_FLAG_LAST TICK_FLAG_VOLUME '
2017.05 . 22 13 : 24 : 38.283 (RTS- 6.17 ,M1)   OnCalculate : 2017.05 . 22 11 : 24 : 38.730 ms v = 2 , bid = 108550 , ask = 108560 , last = 108560 , flags = ' TICK_FLAG_BUY TICK_FLAG_LAST TICK_FLAG_VOLUME '
Gördüğünüz gibi , SymbolInfoTick() işlevi kullanılarak OnCalculate() işlevine yapılan her çağrıda son onay işareti istendiğinde, CopyTicks() tarafından döndürülen bazı onay işaretleri atlanır.
 

Kontrol edilecek kod:

 #property indicator_chart_window
#property indicator_plots 0
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
MqlTick _tick;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- Подписываемся на стакан
   MarketBookAdd ( _Symbol );
//---
   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[])
  {
//---
   ResetLastError ();
//--- Проверяем получение параметров тика
   if (! SymbolInfoTick ( _Symbol ,_tick))
       Print ( __FUNCTION__ , ": ОШИБКА #" , GetLastError (), ": параметры тика не получены!" );
   else
       Print ( __FUNCTION__ , ": " +GetMsToStringTime(_tick.time_msc)+ " v = " ,_tick.volume, ", bid = " + DoubleToString (_tick.bid, _Digits )+
             ", ask = " + DoubleToString (_tick.ask, _Digits )+ ", last = " + DoubleToString (_tick.last, _Digits )+ ", flags = '" +GetStrFlags(_tick.flags)+ "'" );
//---
   ResetLastError ();
//---
   MqlTick t[ 1 ];
   if ( CopyTicks ( _Symbol ,t, COPY_TICKS_ALL , 0 , 1 )!= 1 )
       Print ( __FUNCTION__ , ": ОШИБКА #" , GetLastError (), ": Последний тик не получен!" );
   else
     {
       if (t[ 0 ].time_msc!=_tick.time_msc)
        {
         Print ( __FUNCTION__ , ": Время последнего STick = " +GetMsToStringTime(_tick.time_msc)+ " (" +GetStrFlags(_tick.flags)+ ")" +
               ", время последнего CopyTicks = " +GetMsToStringTime(t[ 0 ].time_msc)+ " (" +GetStrFlags(t[ 0 ].flags)+ ")" );
        }
     }
//---
   return (rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnBookEvent ( const string &symbol)
  {
//---
   if (symbol!= _Symbol )
       return ;
//--- Структура - приемник последнего тика
   MqlTick tick;
//---
   ResetLastError ();
//--- Проверяем получение параметров тика
   if (! SymbolInfoTick ( _Symbol ,tick))
       Print ( __FUNCTION__ , ": ОШИБКА #" , GetLastError (), ": параметры тика не получены!" );
   else
       Print ( __FUNCTION__ , ": " +GetMsToStringTime(tick.time_msc)+ " v = " ,tick.volume, ", bid = " + DoubleToString (tick.bid, _Digits )+
             ", ask = " + DoubleToString (tick.ask, _Digits )+ ", last = " + DoubleToString (tick.last, _Digits )+ ", flags = '" +GetStrFlags(tick.flags)+ "'" );
//--- Сравниваем последний тик OnCalculate с последним тиком OnBookEvent
   if (tick.time_msc!=_tick.time_msc)
     {
       Print ( __FUNCTION__ , ": Время последнего OnCalculate = " +GetMsToStringTime( _tick.time_msc )+ " (" +GetStrFlags( _tick.flags )+ ")" +
             ", время последнего OnBookEvent = " +GetMsToStringTime( tick.time_msc )+ " (" +GetStrFlags( tick.flags )+ ")" );
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//--- Отписываемся от стакана
   MarketBookRelease ( _Symbol );
  }
//+------------------------------------------------------------------+
//| Получаем строку времени из миллисекунд                                                                      |
//+------------------------------------------------------------------+
string GetMsToStringTime( const ulong ms)
  {
   const int MS_KOEF= 1000 ;               // Коэффициент перевода секунд в миллисекунды
   return ( TimeToString ( ms/MS_KOEF, TIME_DATE | TIME_SECONDS )+ "." + string ( ms%MS_KOEF )+ " ms" );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string GetStrFlags( const uint flags)
  {
   string s= "" ;
//---
   if (( flags& TICK_FLAG_ASK )== TICK_FLAG_ASK )
      s+= "TICK_FLAG_ASK " ;
   if (( flags& TICK_FLAG_BID )== TICK_FLAG_BID )
      s+= "TICK_FLAG_BID " ;
   if (( flags& TICK_FLAG_BUY )== TICK_FLAG_BUY )
      s+= "TICK_FLAG_BUY " ;
   if (( flags& TICK_FLAG_SELL )== TICK_FLAG_SELL )
      s+= "TICK_FLAG_SELL " ;
   if (( flags& TICK_FLAG_LAST )== TICK_FLAG_LAST )
      s+= "TICK_FLAG_LAST " ;
   if (( flags& TICK_FLAG_VOLUME )== TICK_FLAG_VOLUME )
      s+= "TICK_FLAG_VOLUME " ;
//---
   return ( s );
  }
//+------------------------------------------------------------------+
 
Alexey Kozitsyn :

Kontrol edilecek kod:

Emin olmak için (OnBookEvent ve CopyTicks'i test etmemek için, ancak planlandığı gibi OnCalculate ), OnCalculate'i çağırırken yalnızca kenelerin kaydını bir dosyaya bırakırdım.

Sonra aynı dosyayı bir komut dosyasıyla oluşturup CopyTicks aracılığıyla keneler alırdım. Fark daha net olabilirdi ve OnCalculate'de kenelerin atlandığını veya CopyTicks'in yanlış çalıştığını gösterirdi.

 
Andrey Khatimlianskii :

Emin olmak için (OnBookEvent ve CopyTicks'i test etmemek, ancak planlandığı gibi OnCalculate'i test etmek için), OnCalculate'i çağırırken yalnızca kenelerin kaydını bir dosyaya bırakırdım.

Sonra aynı dosyayı bir komut dosyasıyla oluşturup CopyTicks aracılığıyla keneler alırdım. Fark daha net olabilirdi ve OnCalculate'de kenelerin atlandığını veya CopyTicks'in yanlış çalıştığını gösterirdi.

Bu kadar basit bir hesapla daha fazla uğraşmaya gerek görmüyorum. İki çağrının somut bir karşılaştırması vardır: SymbolInfoTick() ve CopyTicks(). Ve tüm SymbolInfoTick() çağrıları açıkça gösterilir. Ve CopyTicks()'in SymbolInfoTick()'ten OnCalculate()'den istendiğinde alınmayan bir onay döndürdüğü görülebilir. Ve hatanın iki nedeni olabilir: 1. Ya OnCalculate() keneleri atlar ya da 2. SymbolInfoTick() bir yerde olması gerektiği gibi olmayan bir şey döndürür.

Evet, bu, toplanması 30 saniye süren günlüğün bir parçası... bu yüzden kaçırılan kenelerin sayısını hayal edin.

 
Alexey Kozitsyn :

Servis masası ile diyalogumuz:

OnCalculate'de keneleri atlama
Açıldı, Başladı: 2017.05.22 14:52, #1751442

Kaybolmamak için bir göz atın: https://www.mql5.com/ru/forum/190129/page8#comment_5081300 ve aşağıdaki 2 gönderi.

Göstergeden CopyTicks, göstergenin OnCalculate'de almadığı bir onay işareti verir (ne önce ne de sonra).

Destek Ekibi 2017.05.23 09:44
Durum: Ham Açık
Başvurunuz değerlendirilmek üzere kabul edilmiştir.
Destek Ekibi 2017.05.23 09:46

Her onayda OnCalculate çağrılır.

Keneler ayrı bir iplikte tabana eklenir. Yani asenkron olarak. CopyTicks ile OnCalculate adlı aynı onay işaretini alacağınız bir gerçek değil.

Andrey Khatimlianskii 2017.05.23 14:08

Bu, onunla alakalı değil.

CopyTicks'i kullanarak, OnCalculate'de olmayan bir tik alabilirsiniz (bunu OnCalculate'de, zamanı kaçırılandan daha büyük olan bir tik üzerinde öğreneceğiz).

Günlüklere bakın.

Destek Ekibi 2017.05.23 14:13

sadece bununla ilgili

Bir paket kene geldi. 2 iş parçacığı bu toplu işi işlemeye başladı - bir döngüdeki bir iş parçacığı, toplu iş içindeki her onay için OnCalculate'i başlatır; başka bir iplik tüm paketi bir tik tabanına yerleştirir. Bu 2 iş parçacığı hiçbir şekilde birbiriyle senkronize değildir ve hangi iş parçacığının bir demet keneyi daha hızlı işleyeceği bilinmemektedir.

Andrey Khatimlianskii 2017.05.23 14:26

Ancak paketteki her onay OnCalculate tarafından işlenmelidir. Ve bu olmuyor.

Bu sefer kene yok. Daha kısa süreli bir kene ve daha uzun süreli bir kene vardır. Ve aralarında OnCalculate araması yoktu.

Destek Ekibi 2017.05.23 14:33

organik gübre

Ancak paketteki her onay OnCalculate tarafından işlenmelidir. Ve bu olmuyor.

Bu sefer kene yok. Daha kısa süreli bir kene ve daha uzun süreli bir kene vardır. Ve aralarında OnCalculate araması yoktu.

Paketteki her onay OnCalculate'de işlenir. Geçiş yok. Döngü bu şekilde yazılmıştır.

OnCalculate'de hangi işaretin işlendiğini bulmak için SymbolInfoTick'i kullanın - burada her şey açıktır. Bir sembol hakkındaki bilgilere bir onay işareti uygulanır, ardından o sembolün tüm göstergeleri aynı iş parçacığında çağrılır.

Andrey Khatimlianskii 2017.05.23 14:36

Lütfen bağlantıdaki günlüğe bakın.

OnCalculate'den SymbolInfoTick, CopyTicks'ten alınabilecek onay işaretini görmez.

bu yüzden yazdım

Destek Ekibi 2017.05.23 14:40

Tam olarak https://www.mql5.com/ru/forum/190129/page8#comment_5082755'te önerdiğiniz gibi yapmamız gerekiyor.

Emin olmak için (OnBookEvent ve CopyTicks'i test etmemek için, ancak planlandığı gibi OnCalculate'i test etmek için), OnCalculate'i çağırırken yalnızca kenelerin kaydını bir dosyaya bırakırdım.

Sonra aynı dosyayı bir komut dosyasıyla oluşturur ve CopyTicks aracılığıyla onay işaretleri alırdım. Fark daha net olabilirdi ve OnCalculate'de kenelerin atlandığını veya CopyTicks'in yanlış çalıştığını gösterirdi.

CopyTicks'in doğruluğunu bir kerede tam olarak bu şekilde kontrol ettik. Test komut dosyaları ve göstergeler kaldı, onları tekrar kontrol edeceğiz

 

HER kene üzerinde oluşturulur. Bu nedenle, göstergeler için bir onay sırası vardır. Belirli bir miktara ulaşırsa, loga göstergenin çok yavaş olduğuna dair bir uyarı gönderilir.

Çubukların kendileri doğası gereği göstergelerdir ve Hesaplama olayları temel alınarak oluşturulur. Bu nedenle, eğer TF M1 hala 10:15:000.020 ise ve 50 ms için bir burst gelirse, o zaman içindeki ilk tik hala 10:14:59.970'dir. Ve tüm göstergeler ilk olarak bu Hesaplama olayında çağrılır - önce zaman serisi göstergesi, ardından bu zaman serisine sahip özel göstergeler. Onlar. bu senaryoda, 10:15 bar henüz sıfır olarak oluşturulmamıştır. Ve sıfır - 10:14.


Ayrıca, paket Hesaplama etkinlikleri aracılığıyla gevşemeye başladığında, 10:15 çubuğu da görünür. Detaylı görünüyor.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri

fxsaber , 2017.03.29 22:41

Sonuç olarak, bir EA'nın henüz oluşturulmamış bir çubuk işareti alması oldukça normaldir. Ama bu o kadar ince bir an ki, özel olarak çoğaltılmış bile - denemek zorundasınız. Genel olarak, pratikten daha teorik.


PS Hız paranoyak ise, göstergelerin (ve tabii ki çubukların) kullanılması bir seçenek değildir. Her şey danışmanda.

 
Andrey Khatimlianskii :

Servis masası ile diyalogumuz:

Servis masası maalesef repertuarında. Konu tartışmaya geldiyse link atmalarına gerek yok. Ve belirli bir örnek vermek gerekirse, parmaklarda. Bunun hakkında hiç konuşmuyorlar. Sadece SymbolInfoTick() öğesinin mevcut kontrol edilen onay işaretini döndürdüğünü söylüyorlar ve o zamandan beri TEORİDE OnCalculate() her tiki işler - çıktının her tik olması gerektiği ortaya çıkar. Ve CopyTicks() bize bunun tersini söyler. Ama CopyTicks()'i izlemeyin diyorlar :). Ayrıca o yılın sonunda CopyTicks()'i düzeltirken bana iki akıştan bahsettiler. Sadece burada mesele onunla ilgili değil (yine de belki onunla da ilgili, xs).

OnBookEvent()'ten alındığında 0 bayraklı keneler hakkında soru sordular mı?