Gerçek zamanlı keneler - sayfa 12

 
Sergey Chalyshev :

COPY_TICKS_INFO ve COPY_TICKS_ALL olmak üzere iki bağımsız akışın, bilgi ve ticaret akışının OnTick'e ulaştığını ve ön işleme tabi tutulduğunu hatırlatmak isterim.

Bu diziler birbiriyle senkronize değildir, bu nedenle OnBookEvent'i OnTick ile karşılaştırırsanız, TICKS_INFO almanız gerekir .

OnBookEvent tanımı gereği daha hızlı olmalıdır . ön işleme tabi tutulmaz.

Testlerle kimin daha hızlı olduğunu güvenilir bir şekilde belirlemek imkansızdır. kenelerin aksine emir defterinin piyasa saatini bilmiyoruz.

Geliştiricilere birçok kez sorulmasına rağmen, CAM SÜRESİ EKLE! ! !


ps hıza ek olarak, camın OnTick'e göre başka avantajları da vardır,

Daha önce de belirtildiği gibi, OnTick'te en iyi Teklif ve Satış fiyatını almak imkansızdır,

ve diğer sembollerden gelen veriler OnTick'e gelmez , birkaç enstrümanı analiz eden Uzman Danışmanlar için işe yaramaz.


COPY_TICKS_ALL, COPY_TICKS_INFO ile değiştirildi

Sonuç

 2020.01 . 31 19 : 45 : 17.893 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 19 : 45 : 11.360 Ask= 1591.4 
2020.01 . 31 19 : 45 : 17.894 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 19 : 45 : 09.384 Ask= 1591.3 
2020.01 . 31 19 : 45 : 17.973 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 19 : 45 : 11.570 Ask= 1591.1 
2020.01 . 31 19 : 45 : 17.973 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 19 : 45 : 09.384 Ask= 1591.3 
2020.01 . 31 19 : 45 : 18.060 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 19 : 45 : 09.384 Ask= 1591.3 
2020.01 . 31 19 : 45 : 18.077 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 19 : 45 : 11.712 Bid= 1591.4 
2020.01 . 31 19 : 45 : 18.077 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 19 : 45 : 11.712 Bid= 1591.4 
2020.01 . 31 19 : 45 : 18.078 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 19 : 45 : 09.384 Ask= 1591.3 
2020.01 . 31 19 : 45 : 18.356 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 19 : 45 : 10.574 Ask= 1591.2 
2020.01 . 31 19 : 45 : 18.356 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 19 : 45 : 10.742 Bid= 1591.2 
2020.01 . 31 19 : 45 : 18.356 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 19 : 45 : 11.360 Ask= 1591.4 
2020.01 . 31 19 : 45 : 18.356 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 19 : 45 : 11.570 Ask= 1591.1 
2020.01 . 31 19 : 45 : 18.356 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 19 : 45 : 11.570 Ask= 1591.4 
2020.01 . 31 19 : 45 : 18.356 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 19 : 45 : 11.712 Bid= 1591.4 
2020.01 . 31 19 : 45 : 18.356 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 19 : 45 : 11.712 Bid= 1591.4 
2020.01 . 31 19 : 45 : 18.356 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 19 : 45 : 12.14 Ask= 1591.2 

Sarı ile işaretlenmiş - aynı kene!

Belki de kodda hala bir yanlışlık var? ...
 

Bir an için anlama arzunuz varmış gibi göründü ve bu gururu yatıştırmaya yardımcı olacak.
Hayır, sadece görünüyordu.

Genel olarak, sorun çözüldü ve herkes sizinkine, fxsaber'a ve kodlarıma bakabilir ve sonuçlar çıkarabilir.
Sizinle diyaloğu kesiyorum, sizden yüksek sesli çığlıklardan başka bir şey gelmiyor ve beyniniz bilgi almak için hiç çalışmıyor.

FORTS'ta iyi şanslar.

 
Sergey Chalyshev :

COPY_TICKS_INFO ve COPY_TICKS_ALL olmak üzere iki bağımsız akışın, bilgi ve ticaret akışının OnTick'e ulaştığını ve ön işleme tabi tutulduğunu hatırlatmak isterim.

Bu diziler birbiriyle senkronize değildir, bu nedenle OnBookEvent'i OnTick ile karşılaştırırsanız, TICKS_INFO almanız gerekir .

Sergey, On-fonksiyonlarını sadece bir giriş noktası olarak kullanıyoruz.

Soru, hangi giriş noktasının önce geleceğiydi (son tik hakkında eşit derecede doğru bilgi verirken).

Uzman Danışmanımı çalıştırın ve günlüğe bakın. Olayın zamanı (ms olarak doğru) ve bilinen son onayın zamanı (ms ile de) günlükte görüntülenir.

Sadece "kim önce geldi" için birkaç bireysel keneyi analiz edin.


Sergey Chalyshev :

OnBookEvent tanımı gereği daha hızlı olmalıdır . ön işleme tabi tutulmaz.

OnTik'in bunu geçtiğini sanmıyorum. Ve testler bunu doğruluyor, gecikme yok.


Sergey Chalyshev :

daha önce de belirtildiği gibi, OnTick'te en iyi Teklif ve Satış fiyatını almak imkansızdır.

Belki CopyTicks'in yardımıyla.

Тики в реальном времени
Тики в реальном времени
  • 2020.01.31
  • www.mql5.com
Всем доброго времени суток. Появилась необходимость протестировать торговый алгоритм на реальных тиках брокера "Открытие...
 
Andrey Khatimlianskii :

Uzman Danışmanımı çalıştırın ve günlüğe bakın. Olayın zamanı (ms olarak doğru) ve bilinen son onayın zamanı (ms ile de) günlükte görüntülenir.

Sadece "kim önce geldi" için birkaç bireysel keneyi analiz edin.

Olağan durum, OnBuk'un OnTick ile aynı anda veya 1-2 ms sonra gelmesidir. Ancak gecikmeler de var:


 

5 saatlik çalışma için:

 2020.01 . 31 20 : 45 : 48.214 TestTicks (GOLD- 3.20 ,M15)       63906 USE_BOOK events received
2020.01 . 31 20 : 45 : 52.782 TestTicks (GOLD- 3.20 ,M15)       31199 USE_TICK events received

2 kat daha fazla OnBook etkinliği. Hepsinin bir yük taşımaması üzücü (en iyi teklife/sormaya ve son bir teklife ihtiyacınız varsa).

 
Andrey Khatimlianskii :

Sergey, On-fonksiyonlarını sadece bir giriş noktası olarak kullanıyoruz.

Soru, hangi giriş noktasının önce geleceğiydi (son tik için aynı doğru bilgiyi verirken) .

Uzman Danışmanımı çalıştırın ve günlüğe bakın. Olayın zamanı (ms olarak doğru) ve bilinen son onayın zamanı (ms ile de) günlükte görüntülenir.

Sadece "kim önce geldi" için birkaç bireysel keneyi analiz edin.

Bunu yanlış yapıyorsun. Belki sipariş defteri olayı gelmiştir ama henüz tik tarihine dahil edilmemiştir. Bid Ask fiyatlarını karşılaştırmak ve kenelerin geçmişine girmemek gerekir.

OnTik'in bunu geçtiğini sanmıyorum. Ve testler bunu doğruluyor, gecikme yok.

Tarihe geçmeden önce keneler mutlaka işlenir ve gerekli tüm çizelgelere, göstergelere ve Uzman Danışmanlara dağıtılır. Ve tüm bunlar MT5'te sırayla yapılır (paralelleştirilmez).

Belki CopyTicks'in yardımıyla.

Hayır, CopyTicks ile en iyi fiyatı almak da mümkün değil ve ya siparişiniz en iyi fiyata mal olursa.
 

Просто проанализируйте несколько отдельных тиков на предмет "кто раньше".

Ben farklı anlıyorum:

kene vs kitap

mavi çizgiler OnBook ,

kırmızı OnCalculate = OnTick .

İlgilenirseniz gösterge kodunu gösterebilirim

 
Sergey Chalyshev :

Ben farklı anlıyorum:


mavi çizgiler OnBook ,

kırmızı OnTick .

İlgilenirseniz gösterge kodunu gösterebilirim

Serezha yok!

Kabul edilmelidir ki OnBookEvent() ve OnTick() tüm keneler aynıdır (kodda bir hata vardı),

ancak diğer DOM değişiklikleri hiçbir şekilde OnTick()'e yansıtılmaz

Bu FOREX yatırımcıları için önemli değildir.(Yukarıdaki mesajdan dikkatli alıntı: " 2 kat daha fazla OnBook olayı var. Hepsinin bir yük taşımaması üzücü (en iyi teklif/sor ve son bir teklife ihtiyacınız varsa)" . )

Düzeltilmiş kod:

 //+------------------------------------------------------------------+
//|                                                   Ticks_test.mq5 |
//|                                      Copyright 2019 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019 prostotrader"
#property link        "https://www.mql5.com"
#property version    "1.00"
//---
bool is_book;
MqlTick ticks[];
ulong last_time, mem_cnt, tot_cnt;
bool is_first;
int t_cnt, result;
enum ENUM_BOOK_OR_TICK
{
        USE_BOOK,       // Use OnBookEvent
        USE_TICK         // Use OnTick
};

input ENUM_BOOK_OR_TICK Mode = USE_BOOK;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
{
  tot_cnt = 0 ;
   if (Mode == USE_BOOK) is_book = MarketBookAdd ( Symbol ());
  result = CopyTicks ( Symbol (), ticks, COPY_TICKS_ALL , 0 , 1 );
   if (result > 0 )
  {
    last_time = ulong (ticks[ 0 ].time_msc); //запоминаем время последнего известного тика
    is_first = true ;
  }
   else
  {
    is_first = false ;
     Alert ( "No start time!" );
     return ( INIT_FAILED );
  } 
   ArraySetAsSeries (ticks, true );  
   return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+ 
//| возвращает строковое описание тика                               | 
//+------------------------------------------------------------------+ 
string GetTickDescription( MqlTick &tick) 
  { 
   string res = string (tick.time) + "." +   string (tick.time_msc% 1000 ); 
// 
   bool buy_tick = ((tick.flags& TICK_FLAG_BUY )== TICK_FLAG_BUY ); 
   bool sell_tick = ((tick.flags& TICK_FLAG_SELL )== TICK_FLAG_SELL ); 
   bool ask_tick = ((tick.flags& TICK_FLAG_ASK )== TICK_FLAG_ASK ); 
   bool bid_tick = ((tick.flags& TICK_FLAG_BID )== TICK_FLAG_BID ); 
   bool last_tick = ((tick.flags& TICK_FLAG_LAST )== TICK_FLAG_LAST ); 
   bool volume_tick = ((tick.flags& TICK_FLAG_VOLUME )== TICK_FLAG_VOLUME ); 
// 
   if ((buy_tick== true ) || (sell_tick == true )) 
   { 
     res = res + (buy_tick? StringFormat ( " Buy Tick: Last=%G Volume=%d " ,tick.last,tick.volume): "" ); 
     res = res + (sell_tick? StringFormat ( " Sell Tick: Last=%G Volume=%d " ,tick.last,tick.volume): "" ); 
     res = res + (ask_tick? StringFormat ( " Ask=%G " ,tick.ask): "" ); 
     res = res + (bid_tick? StringFormat ( " Bid=%G " ,tick.bid): "" ); 
   } 
   else 
   { 
     res = res + (ask_tick? StringFormat ( " Ask=%G " ,tick.ask): "" ); 
     res = res + (bid_tick? StringFormat ( " Bid=%G " ,tick.bid): "" ); 
     res = res + (last_tick? StringFormat ( " Last=%G " ,tick.last): "" ); 
     res = res + (volume_tick? StringFormat ( " Volume=%d " ,tick.volume): "" ); 
   } 
   return res; 
  } 
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
   if (Mode == USE_BOOK)
  {
     Print ( "USE_BOOK ticks received: " , tot_cnt);
     if (is_book == true ) MarketBookRelease ( Symbol ());
  }
   else
  {
     Print ( "USE_TICK ticks received: " , tot_cnt);
  }  
}
//+------------------------------------------------------------------+
//| BookEvent function                                               |
//+------------------------------------------------------------------+
void OnBookEvent ( const string &symbol)
{
   if ( Mode != USE_BOOK || symbol != Symbol () ) return ;
  tot_cnt++;
   if (is_first == true )
  {
    result = CopyTicks ( Symbol (), ticks, COPY_TICKS_ALL , last_time, 0 ); //копируем все вновь пришедшие тики от последнего известного времени
     if (result > 0 )
    {
      t_cnt = 0 ;
       for ( int i= 0 ; i<result; i++)
      {
         if (ticks[i].time_msc == ticks[ 0 ].time_msc) t_cnt++;             //Считаем кол-во тиков с одинаковым временем
         Print ( __FUNCTION__ , ": " ,GetTickDescription(ticks[i]));
      }
      is_first = false ;
      last_time = ulong (ticks[ 0 ].time_msc);                             //Запоминаем время последнего тика
    } 
  }
   else
  {
    result = CopyTicks ( Symbol (), ticks, COPY_TICKS_ALL , last_time, 0 ); //забираем тики из последнего (посчитанного пакета тикив и считываем тики из нового пакета)
     if (result > 0 )
    {
       if (result > t_cnt)
      {
        mem_cnt = t_cnt;
        t_cnt = 0 ;
         for ( int i= 0 ; i<(result - int (mem_cnt)); i++)
        {
           if (ticks[i].time_msc == ticks[ 0 ].time_msc) t_cnt++;           //Считаем кол-во тиков с одинаковым временем
           Print ( __FUNCTION__ , ": " ,GetTickDescription(ticks[i]));
        } 
         if (last_time == ulong (ticks[ 0 ].time_msc))
        {
          t_cnt += int (mem_cnt);
        }
         else last_time = ulong (ticks[ 0 ].time_msc);
      }
       else
      {
         Print ( __FUNCTION__ , ": Pending order!" );                           //Изменения стакана (добавлен/удален отложенный ордер)
      }
    }
     else
    {
       Print ( __FUNCTION__ , ": Pending order!" );                             //Изменения стакана (добавлен/удален отложенный ордер)
    }
  }
}
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick ()
{
   if ( Mode != USE_TICK ) return ;
  tot_cnt++;
   if (is_first == true )
  {
    result = CopyTicks ( Symbol (), ticks, COPY_TICKS_ALL , last_time, 0 ); //копируем все вновь пришедшие тики от последнего известного времени
     if (result > 0 )
    {
      t_cnt = 0 ;
       for ( int i= 0 ; i<result; i++)
      {
         if (ticks[i].time_msc == ticks[ 0 ].time_msc) t_cnt++;             //Считаем кол-во тиков с одинаковым временем
         Print ( __FUNCTION__ , ": " ,GetTickDescription(ticks[i]));
      }
      is_first = false ;
      last_time = ulong (ticks[ 0 ].time_msc);                             //Запоминаем время последнего тика
    } 
  }
   else
  {
    result = CopyTicks ( Symbol (), ticks, COPY_TICKS_ALL , last_time, 0 ); //забираем тики из последнего (посчитанного пакета тикив и считываем тики из нового пакета)
     if (result > 0 )
    {
       if (result > t_cnt)
      {
        mem_cnt = t_cnt;
        t_cnt = 0 ;
         for ( int i= 0 ; i<(result - int (mem_cnt)); i++)
        {
           if (ticks[i].time_msc == ticks[ 0 ].time_msc) t_cnt++;           //Считаем кол-во тиков с одинаковым временем
           Print ( __FUNCTION__ , ": " ,GetTickDescription(ticks[i]));
        } 
         if (last_time == ulong (ticks[ 0 ].time_msc))
        {
          t_cnt += int (mem_cnt);
        }
         else last_time = ulong (ticks[ 0 ].time_msc);
      }
       else
      {
         Print ( __FUNCTION__ , ": Pending order!" );                           //Изменения стакана (добавлен/удален отложенный ордер)
      }
    }
     else
    {
       Print ( __FUNCTION__ , ": Pending order!" );                           //Изменения стакана (добавлен/удален отложенный ордер)
    }
  }
}
//+------------------------------------------------------------------+
Результат (фрагмент)
 2020.01 . 31 23 : 35 : 24.092 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 23 : 35 : 17.571 Bid= 1593.7 
2020.01 . 31 23 : 35 : 24.093 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 23 : 35 : 17.571 Bid= 1593.7 
2020.01 . 31 23 : 35 : 24.144 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 24.163 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 24.844 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 24.851 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 24.865 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 25.215 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 25.222 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 25.241 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 25.254 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 25.286 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 25.462 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 25.474 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 25.482 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 25.503 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 25.545 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 25.995 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 26.003 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 23 : 35 : 19.483 Buy Tick: Last= 1593.8 Volume= 1 
2020.01 . 31 23 : 35 : 26.003 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 23 : 35 : 19.483 Buy Tick: Last= 1593.8 Volume= 1 
2020.01 . 31 23 : 35 : 26.003 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 23 : 35 : 19.483 Buy Tick: Last= 1593.8 Volume= 1 
2020.01 . 31 23 : 35 : 26.003 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 23 : 35 : 19.483 Buy Tick: Last= 1593.8 Volume= 1 
2020.01 . 31 23 : 35 : 26.003 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 23 : 35 : 19.483 Buy Tick: Last= 1593.8 Volume= 1 
2020.01 . 31 23 : 35 : 26.003 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 23 : 35 : 19.483 Buy Tick: Last= 1593.8 Volume= 1 
2020.01 . 31 23 : 35 : 26.003 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 23 : 35 : 19.483 Buy Tick: Last= 1593.8 Volume= 1 
2020.01 . 31 23 : 35 : 26.004 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 23 : 35 : 19.483 Buy Tick: Last= 1593.8 Volume= 1 
2020.01 . 31 23 : 35 : 26.004 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 23 : 35 : 19.483 Buy Tick: Last= 1593.8 Volume= 1 
2020.01 . 31 23 : 35 : 26.004 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 23 : 35 : 19.483 Buy Tick: Last= 1593.8 Volume= 1 
2020.01 . 31 23 : 35 : 26.004 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 23 : 35 : 19.483 Buy Tick: Last= 1593.8 Volume= 1 
2020.01 . 31 23 : 35 : 26.004 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 23 : 35 : 19.483 Buy Tick: Last= 1593.8 Volume= 1 
2020.01 . 31 23 : 35 : 26.004 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 23 : 35 : 19.483 Buy Tick: Last= 1593.8 Volume= 1 
2020.01 . 31 23 : 35 : 26.004 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 23 : 35 : 19.483 Buy Tick: Last= 1593.8 Volume= 1 
2020.01 . 31 23 : 35 : 26.011 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 23 : 35 : 19.484 Ask= 1593.9   Bid= 1593.8 
2020.01 . 31 23 : 35 : 26.012 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 23 : 35 : 19.484 Ask= 1593.9   Bid= 1593.8 
2020.01 . 31 23 : 35 : 26.061 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 26.075 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 26.142 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 26.155 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 26.162 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 26.191 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 26.213 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 27.293 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 27.345 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 27.936 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 27.943 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 28.166 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 28.172 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 23 : 35 : 21.657 Ask= 1594.1   Bid= 1593.9 
2020.01 . 31 23 : 35 : 28.172 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 23 : 35 : 21.650 Buy Tick: Last= 1593.9 Volume= 1 
2020.01 . 31 23 : 35 : 28.172 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 23 : 35 : 21.650 Buy Tick: Last= 1593.9 Volume= 1 
2020.01 . 31 23 : 35 : 28.172 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 23 : 35 : 21.650 Buy Tick: Last= 1593.9 Volume= 1 
2020.01 . 31 23 : 35 : 28.172 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 23 : 35 : 21.650 Buy Tick: Last= 1593.9 Volume= 1 
2020.01 . 31 23 : 35 : 28.172 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 23 : 35 : 21.650 Buy Tick: Last= 1593.9 Volume= 1 
2020.01 . 31 23 : 35 : 28.173 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 23 : 35 : 21.657 Ask= 1594.1   Bid= 1593.9 
2020.01 . 31 23 : 35 : 28.173 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 23 : 35 : 21.650 Buy Tick: Last= 1593.9 Volume= 1 
2020.01 . 31 23 : 35 : 28.173 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 23 : 35 : 21.650 Buy Tick: Last= 1593.9 Volume= 1 
2020.01 . 31 23 : 35 : 28.173 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 23 : 35 : 21.650 Buy Tick: Last= 1593.9 Volume= 1 
2020.01 . 31 23 : 35 : 28.173 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 23 : 35 : 21.650 Buy Tick: Last= 1593.9 Volume= 1 
2020.01 . 31 23 : 35 : 28.173 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 23 : 35 : 21.650 Buy Tick: Last= 1593.9 Volume= 1 
2020.01 . 31 23 : 35 : 28.191 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 23 : 35 : 21.661 Ask= 1594 
2020.01 . 31 23 : 35 : 28.192 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : 2020.01 . 31 23 : 35 : 21.661 Ask= 1594 
2020.01 . 31 23 : 35 : 28.255 Ticks_test (GOLD- 3.20 ,M1)       OnBookEvent : Pending order!
2020.01 . 31 23 : 35 : 29.516 Ticks_test (GOLD- 3.20 ,M1)       USE_BOOK ticks received: 153
2020.01 . 31 23 : 35 : 29.892 Ticks_test (GOLD- 3.20 ,M1)       OnTick : 2020.01 . 31 23 : 35 : 23.367 Ask= 1594.1 
2020.01 . 31 23 : 35 : 31.660 Ticks_test (GOLD- 3.20 ,M1)       USE_TICK ticks received: 27
 
prostotrader :

Serezha yok!

Kabul edilmelidir ki OnBookEvent() ve OnTick() tüm keneler aynıdır (kodda bir hata vardı),

ancak diğer DOM değişiklikleri hiçbir şekilde OnTick()'e yansıtılmaz

Bu FOREX yatırımcıları için önemli değildir.(Yukarıdaki mesajdan dikkatli alıntı: " 2 kat daha fazla OnBook olayı var. Hepsinin bir yük taşımaması üzücü (en iyi teklif/sor ve son bir teklife ihtiyacınız varsa)" . )

Düzeltilmiş kod:

Sonuç (parça)

Tarihteki keneler elbette çakışacaktır, ancak yukarıdaki resimde, OnCalculat'ta tüm bilgi kenelerinin tarihe düşmediği veya atlanmadığı ortaya çıkıyor.

Bir yanlışlık var mı bilmiyorum, şimdi pazartesi halledeceğim.

 
prostotrader :


Ya da belki gerçek zamanlı olarak, yerine

 MqlTick ticks[];
result = CopyTicks ( Symbol (), ticks, COPY_TICKS_ALL , 0 , 1 );

kullanmak

 MqlTick ticks[ 1 ];
bool success = SymbolInfoTick ( _Symbol , ticks); //Возвращает текущие цены.

Mevcut fiyatı hemen alabilecekseniz neden kopyalayasınız?
Teorik olarak, CopyTicks'in iç kısımlarında, fonksiyon gövdesindeki kodun uzunluğunu artıran ek parametre kontrolleri vardır.
Ve SymbolInfoTick'in ek parametresi yoktur ve teoride bu işlevin uygulanması daha az kod içermelidir.
Daha az kod - daha hızlı yürütme.

Tek kötü yanı, SymbolInfoTick işlevi hakkında CopyTicks'in sahip olduğu gibi ayrıntılı bir belge bulunmaması ve nasıl çalıştığı tam olarak açık olmamasıdır.
Önbellekler, ya da ham olanı hemen verir.