MT5 ve iş başında hız - sayfa 7

 
fxsaber :

Hiçbir şey anlamadın. Bir dönüş yaptığımızda oluşan kuyruğun On-fonksiyonuna giriyoruz. Bu, ilk OrderSend'in doğru ikincisini göndermesinden sonra HEMEN önleyecek bir duraklamaya neden olabilir .

Duraklama/gecikme nedir? 3 yapıyı kopyalarken?

OnTradeTransaction( параметры )
{
        поместить параметры в очередь
        OnMain();
}

Döndükten sonra tüm On-fonksiyonlarını kaydederek, ilk OrderSend'in tamamlanması hakkında bir mesaj içeren On-fonksiyonunu bekleyerek bir kuyruk biriktirmeyi öneriyorsunuz. Ve sonra sadece ikinci OrderSend'i gönderin.

Tüm olayları biriktirmek gerekli değildir . Bir sonraki olayın kopyalanmasını beklemeyin - olayları iade etmeden önce işleyebilir ve bunun için ön koşullar ortaya çıkar çıkmaz ikinci bir Sipariş Gönderimi gönderebilirsiniz.

Aynı zamanda, ilk OrderSend sırasında bir pozisyon alımının gerçekleştirilebileceğini hala anlamıyorsunuz, ancak OnTradeTransaction, ilk OrderSend'deki son OnTradeTransaction'dan daha sonra (aynı mikrosaniyede, ancak daha sonra) sırada olacak.

Böyle bir durumda nasıl yardımcı olabilirsiniz?

 bool HandleNextEvent(ENUM_EVENT_TYPE);

Burada son olacak, orada ne var

 
fxsaber :

Hiçbir şey anlamadın. Bir dönüş yaptığımızda oluşan kuyruğun On-fonksiyonuna giriyoruz. Bu, ilk OrderSend'in doğru ikincisini göndermesinden sonra HEMEN önleyen bir duraklamaya neden olabilir.

Döndükten sonra tüm On-fonksiyonlarını kaydederek, ilk OrderSend'in tamamlanması hakkında bir mesaj içeren On-fonksiyonunu bekleyerek bir kuyruk biriktirmeyi öneriyorsunuz. Ve sonra sadece ikinci OrderSend'i gönderin.

Aynı zamanda, ilk OrderSend sırasında bir pozisyon alımının gerçekleştirilebileceğini hala anlamıyorsunuz, ancak OnTradeTransaction, ilk OrderSend'deki son OnTradeTransaction'dan daha sonra (aynı mikrosaniyede, ancak daha sonra) sırada olacak.

Sıra yok. Yeni olay, mevcut olaydan sonra işlenecek ve bu süre içinde meydana gelen tüm olaylar yok sayılacaktır.

 
Kuyruğu veya yığını siz yaratırsınız, MQ yapmaz.
 

Bence sorunun çözümü, herhangi bir siparişe "abone olma" yeteneği olacaktır. Onlar. böylece terminal, siparişteki herhangi bir işlemin meydana gelmesi üzerine bir olay oluşturur.

Ancak bu, biz değil geliştiriciler tarafından uygulanmalıdır. Tüm kararlarımız, öyle ya da böyle , işlemlerin geçmişine geri dönecek. Mikrosaniyede öyle bir kritikliğim yok ama gerçek

Anlaşmanın geçtiğini/başarısız olduğunu, seviyelerin çalıştığını veya birinin terminalden konumu düzelttiğini öğrenmek için farklı karmaşıklıktaki bisikletleri yazmak can sıkıcıdır.

Her ne kadar basit bir şey gibi görünse de - bir pozisyon için bir anlaşma olayı - ve her şey çok daha basit hale gelecekti.

 
Maksim Emeliashin :

Ancak bu, biz değil geliştiriciler tarafından uygulanmalıdır.

Geliştiricilerin yalnızca araçları sağlaması gerekir. MQL aslında düşük seviyeli bir programlama dilidir (tıpkı C++ gibi). Üzerinde görev açısından değil, hesaplamalar açısından tartışıyorsunuz. Ve tüm üst düzey kararları kendiniz veriyorsunuz. Araçlardan yoksun olabilir, ancak hazır çözümler olmayabilir

 
A100 :

Duraklama/gecikme nedir? 3 yapıyı kopyalarken?

Çeşitli olaylardan oluşan bir sıra işlenirken.

Böyle bir durumda nasıl yardımcı olabilirsiniz?

Burada son olacak, orada ne var

Alımla kapanış hakkında bilgi sahibi olacağım.

 
Алексей Тарабанов :

Sıra yok. Yeni olay, mevcut olaydan sonra işlenecek ve bu süre içinde meydana gelen tüm olaylar yok sayılacaktır.

beceriksiz.

 
fxsaber :

Çeşitli olaylardan oluşan bir sıra işlenirken.

Alımla kapanış hakkında bilgi sahibi olacağım.

Gerçekten ( HandleNextEvent ile kod olmadan) temel şeyleri anlamadığım gerçeği üzerinde duralım.

Son olarak, önerilen HandleNextEvent ile benim yazdıklarım arasındaki farkın özyineleme yoluyla, benimki ise bir döngüden geçtiğine dikkat çekiyorum. Sonuçta, bir ve aynı . Ek olarak, sıram başlangıçta net bir şekilde oluşturulmuştur ve onu yönetebilirsiniz ... bazı olayları hemen işlersiniz, bazılarını daha sonra ertelersiniz - tam özgürlük ve önerilen HandleNextEvent işlevi aracılığıyla - eliniz ve ayağınız bağlanır

 
Bu EA neden uyarmıyor?
 const MqlTick GetMarketWatchTick( void )
{
   MqlTick Tick = { 0 };
  
  :: SymbolInfoTick ( _Symbol , Tick);
  
   return (Tick);
}

const MqlTick GetLastHistoryTick()
{
   MqlTick Tick[ 1 ];
  
  :: CopyTicks ( _Symbol , Tick, COPY_TICKS_ALL , 0 , 1 );
  
   return (Tick[ 0 ]);
}

void OnTick ()
{
   if (GetMarketWatchTick().time_msc > GetLastHistoryTick().time_msc) // Тик из Обзора рынка свежее, чем последний тик из истории.
     Alert ( "Hello!" );
}


Aynı zamanda, aynı kontrol, aynı Terminal'deki savaş ticaret danışmanına bağlandı, Uyarı. Nedeni ne olabilir?

 

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

MT5 ve iş başında hız

Anton , 2020.05.29 16:21

Maksimum ve ortalama süreyi kontrol etmek için komut dosyası:

2474.

        Last tick time. Selected orders: 0 ; max time: 0.187 ms; avr time: 0.022 ms; 100000 iterations
        Last 3 days. Selected orders: 1956 ; max time: 1.832 ms; avr time: 0.301 ms; 100000 iterations
        Orders total: 56561

Çok iyi oldu. Değiştirildiyse - Teşekkürler. Dövüş modundaki performansı takip edeceğim.


Not: Savaş modunda, işlemler yapıldığında hemen hemen her zaman gecikme olur (yalnızca 5 milisaniyeden uzun olan durumları gösteriyorum).

 2020.06 . 03 13 : 57 : 27.895 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 14 ms.
2020.06 . 03 13 : 57 : 47.780 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 5 ms.
2020.06 . 03 14 : 03 : 49.844 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 9 ms.
2020.06 . 03 14 : 03 : 51.063 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 8 ms.
2020.06 . 03 14 : 03 : 55.115 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 12 ms.
2020.06 . 03 14 : 03 : 56.935 Alert : Time[NewTicks.mqh 112 : :: HistorySelect (TimeMsc/ 1000 , INT_MAX )] = 6 ms.

Aksi takdirde, 2470'den çok daha iyi görünüyor.

Neden: