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

 
fxsaber :

Hangi Terminalin daha fazla CPU tükettiğini düşünüyorsunuz?

2. ve işte neden

 
fxsaber :

CPU'yu azaltmak için, Terminal'in tüm alt pencerelerini (Market Watch, Navigator, Tools, vb.) kapatmanızı, tüm çizelgeleri en aza indirmenizi ve Terminal'in kendisini en aza indirmenizi öneririm.

Kullanılmayan tüm sembolleri Market Watch'tan kaldırın. Özellikle VPS'leriyle alakalı.


Bu eylemleri bir şekilde otomatikleştirmeyi öneriyorum. VPS'den çıkmadan önce basıp çıktım. Girdiğinizde - tıkladığınızda her şeyi görürsünüz.

Algoritmik tüccarların tüm bu ayarlamalar olmadan terminalin farklı bir versiyonuna ihtiyacı olduğunu uzun zamandır söylüyorum!

Yukarıdakilerin tümüne ek olarak, her danışmana şunları ekledim:

 ChartSetInteger ( 0 , CHART_SHOW , false );

Hala fren :(

 
A100 :

2. ve işte neden

Evet, ikinci.

 
SymbolInfoTick mimari olarak nasıl düzenlenir? Neden onlarca milisaniye boyunca yürütülebildiğine dair bir anlayış yok.
 

b2560, b2592 ile karşılaştırıldığında performansta büyük kayıp. Hata düzeltmesini bekliyorum.

Konu faydalı oldu.

 
fxsaber :

b2560, b2592 ile karşılaştırıldığında performansta çok büyük kayıp. Hata düzeltmesini bekliyorum.

b2593 - düzeltildi. Teşekkür ederim!

 
İşlem geçmişine bir emir/anlaşma eklemek, HistorySelect önbelleğinin kısmi değil, tamamen yeniden oluşturulmasına neden olur. Bu nedenle, gecikmeler tetiklendiğinde gecikmeler.
 // Демонстрация полного (не частичного) пересбора HistorySelect-кеша.
#include <fxsaber\Benchmark.mqh> // https://c.mql5.com/3/321/Benchmark.mqh

input int inAlertTime = 1 ; // Нижний порог в миллисекундах

#define _B2(A) _B(A, inAlertTime)

const bool Init = EventSetTimer ( 1 );

void OnTimer ()
{
   static MqlTradeRequest Request = { 0 };
   static MqlTradeResult Result = { 0 };

   if ( PositionSelectByTicket (Result.order)) // Если позиция открыта - закрываем.
  {
    Request.type = ORDER_TYPE_SELL ;
    Request.price = SymbolInfoDouble ( _Symbol , SYMBOL_BID );
    Request.position = Result.order;
  }
   else // Иначе - открываем.
  {
    Request.action = TRADE_ACTION_DEAL ;
    Request.type = ORDER_TYPE_BUY ;
    Request.symbol = _Symbol ;
    Request.volume = 0.1 ;
    Request.price = SymbolInfoDouble ( _Symbol , SYMBOL_ASK );
    Request.position = 0 ;
  }

   if ( OrderSend (Request, Result))
    _B2( HistorySelect ( 0 , INT_MAX ));
}

Sonuç.
 2020.09 . 08 20 : 23 : 32.103 Alert : Time[Test6.mq5 411 : HistorySelect ( 0 , INT_MAX )] = 5 ms.
2020.09 . 08 20 : 23 : 32.239 Alert : Time[Test6.mq5 411 : HistorySelect ( 0 , INT_MAX )] = 5 ms.
2020.09 . 08 20 : 31 : 59.863 Alert : Time[Test6.mq5 433 : HistorySelect ( 0 , INT_MAX )] = 9 ms.
2020.09 . 08 20 : 32 : 00.845 Alert : Time[Test6.mq5 433 : HistorySelect ( 0 , INT_MAX )] = 5 ms.
2020.09 . 08 20 : 32 : 01.856 Alert : Time[Test6.mq5 433 : HistorySelect ( 0 , INT_MAX )] = 4 ms.
2020.09 . 08 20 : 32 : 02.846 Alert : Time[Test6.mq5 433 : HistorySelect ( 0 , INT_MAX )] = 7 ms.


Neden önemli? Bir HFT robotunun çalıştığını hayal edin. Aynı hesapta, elle bir işlem yapılır. İşte bu kadar, HistorySelect önbelleği HFT robotunda ilgili sonuçlarla sıfırlandı. Tabii ki, HFT robotunun tarihi sefil bir 10K sipariş/işlem değil, çok daha fazlası. Böyle bir geçmiş için tüm önbelleği yeniden oluşturmak pahalıdır. Bu nedenle, eklemek mantıklıdır.


Manuel ticaretin robotları yavaşlatmaması gerektiği açıktır. Saf algoritmik ticaret için sorun, gecikmeler tetiklendiğinde ortaya çıkar.

 

Mevcut ticaret ortamının (pozisyonlar ve emirler) tam (yapı dizileri) anlık görüntülerini almaya izin veren çok az işlev vardır.

Pozisyon* ve Emir* işlevleri aracılığıyla seçenek, bu iki listeyi bir döngüde geçirirken çarpışmalara (aktif ticaret) neden olur. Bir şey eksik veya dikkate alınmadı.

Anında tam anlık görüntüler bu tür sorunları önleyecektir.


Tehdit Piyasa İncelemesi için tam anlık görüntüler - henüz talebi değerlendirmeyin. MT5'i HFT'ye (HFT) daha yakın hale getirmek.

 

Terminali (ve hiçbirini) CPU'nun %100 olduğu ve OrderSend zaman aşımının bir saniyeden fazla olduğu bir duruma sürmek (bilerek değil) mümkündü.

Muhtemelen nedenini bulmak kolay değil.


ZY Böyle bir frenin benzer bir tasarımdan kaynaklandığı görülüyor.

 void OnTrade ()
{
   OnTick ();
}

Çoğaltmak için kodu oluşturamadım.


Aslında, Terminal'i ticaret emirlerinin saniyeler içinde (Terminal günlüğü) 50 ms'lik bir ping ile yürütüleceği bir duruma getirmek için Uzman Danışmanları kullanmak mümkündür. Alım satım emirleri 100 ms içinde yürütülmeye başladığından, yalnızca danışmanları kaldırmanız gerekir.

 
fxsaber :

Mevcut ticaret ortamının (pozisyonlar ve emirler) tam (yapı dizileri) anlık görüntülerini almaya izin veren çok az işlev vardır.

Pozisyon* ve Emir* işlevleri aracılığıyla seçenek, bu iki listeyi bir döngüde geçirirken çarpışmalara (aktif ticaret) neden olur. Bir şey eksik veya dikkate alınmadı.

Anında tam anlık görüntüler bu tür sorunları önleyecektir.


Tehdit Piyasa İncelemesi için tam anlık görüntüler - henüz talebi değerlendirmeyin. MT5'i HFT'ye (HFT) daha yakın hale getirmek.

Ve ne tür bir sipariş olduğunu ve işlem şartlarını anlamak için sipariş-anlaşma-pozisyonunu bilete ve pozisyon biletine göre ters yönde izlemenin düzenli işlevleri. Tarihin durumunu izlemek şeytani bir gerçektir.

Tıklandığında tam surround iyidir, ancak görünüşe göre pahalıdır ve çoğu zaman gerekli değildir. piyasa çökse bile

Kendim için emri ve emri bölüyorum. Bir emri yerine getirme emri , bir ertelemedir. Piyasa düzeni kafa karıştırıcı.

Profesyonel olmayan görüşleri kesinlikle yargılamayın.