MT5 und Geschwindigkeit in Aktion - Seite 32

 
Renat Fatkhullin:

Bitte antworten Sie auf den Status dieser Spalte.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Neue Version von MetaTrader 5 build 2560: Verbesserungen im eingebetteten Lernsystem

fxsaber, 2020.08.16 23:02

Handelsverlauf -> Positionen -> Kommentarspalte ist bei allen Geschäften leer. Das muss ein Irrtum sein.

Er ist nicht nur leer, sondern nimmt auch einen großen Teil des nutzbaren Raums in Anspruch.

 
fxsaber:

https://www.mql5.com/ru/docs/constants/tradingconstants/orderproperties#enum_order_state

Tritt der Started-Status nicht nach einem erfolgreichen OrderSendAsync auf?

Der Status kann auftreten, das Ticket jedoch nicht.

Der Auftrag wurde lediglich auf formale Korrektheit geprüft, nicht einmal auf eine Übereinstimmung mit dem Markt. Der asynchrone Auftrag wurde einfach an die Pipeline weitergegeben und sein Schicksal wird an anderer Stelle entschieden.

 
fxsaber:

Bitte antworten Sie auf den Status dieser Spalte.

Er ist nicht nur leer, sondern nimmt auch einen großen Teil des nutzbaren Platzes in Anspruch.

Ja, das ist richtig.

Sie haben vergessen, den Kommentar korrekt zu verschieben, wenn sie virtuelle Positionen von Geschäften in der Historie sammeln. Bringen wir es in Ordnung.

 
Renat Fatkhullin:

Der Zustand kann eintreten, aber das Ticket nicht.

Dieser Zustand ist nicht sichtbar, da sich OrdersTotal() nicht ändert.

 
fxsaber:

Dieser Zustand ist nicht sichtbar, da sich OrdersTotal() nicht ändert.

Klopfen Sie nicht an eine fehlende Tür.

Ich habe ausführlich erklärt - "die Bestellung wurde auf formale Korrektheit geprüft und irgendwo hingeschickt". Dieser Auftrag hat keine Nummer, er wurde nur an die nächste Stufe des Fließbandes weitergegeben. Sie erhält erst dann eine Nummer, wenn sie die Ausführungswarteschlange passiert.

Sie können keine weiteren Informationen über das asynchrone Paket erhalten. Ihr Markt-/Handelsstatus wird sich erst ändern, wenn Sie nach einiger Zeit eine schrittweise Angabe zu Ihrer asynchronen Anfrage erhalten, die Sie in OnTradeTransaction abrufen können.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 
Renat Fatkhullin:

Klopfen Sie nicht an eine abwesende Tür.

Ich habe ausführlich erklärt - "die Bestellung wurde auf formale Korrektheit geprüft und irgendwo hingeschickt". Dieser Auftrag hat keine Nummer, er wurde einfach an die nächste Stufe des Fließbandes weitergegeben. Sie erhält erst dann eine Nummer, wenn sie die Ausführungswarteschlange passiert.

Sie können keine weiteren Informationen über das asynchrone Paket erhalten. Ihr Markt-/Handelsstatus wird sich erst ändern, wenn Sie nach einiger Zeit ein schrittweises Detail zu Ihrer asynchronen Anfrage erhalten, das Sie in OnTradeTransaction erfassen können.

Danke für die Klarstellung, ich werde das überprüfen.

 

Die Geschichte mag sich weiterentwickelt haben.

Aber auf b2617 ist dieser EA wieder zu Alarmen zurückgekehrt.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

MT5 und Geschwindigkeit in Aktion

fxsaber, 2020.09.08 19:46

// Демонстрация полного (не частичного) пересбора 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));
}
 

Prüfen Sie bitte die Beta 2619.

Wir haben eine Reihe von Optimierungen vorgenommen, um das History Sampling zu beschleunigen. Es gab einen Fall von erzwungener Cache-Invalidierung.

 
Renat Fatkhullin:

Prüfen Sie bitte die Beta 2619.

Wir haben eine Reihe von Optimierungen vorgenommen, um das History Sampling zu beschleunigen. Es gab einen Fall von erzwungener Cache-Invalidierung.

Die Beschleunigung ist erfolgt, aber leider ist die Cache-Aktualisierung aus irgendeinem Grund nicht in einer Millisekunde, so dass bei jedem Schritt, bei dem der Verlauf aktualisiert wurde, eine Warnung ausgegeben wird.

2020.09.24 05:17:49.541 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:49.543 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:50.526 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:50.527 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:51.569 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:51.571 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:52.530 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.
2020.09.24 05:17:52.532 Alert: Time[Test6.mq5 460: HistorySelect(0,INT_MAX)] = 1 ms.


Bitte versuchen Sie es mit einer großen Geschichte.


Ich nehme an, dass diese Millisekunde auf die Speicherzuweisung für die Cache-Aktualisierung zurückzuführen ist. Nichts anderes scheint ihn zu verlangsamen.

 
fxsaber:

Vielen Dank für die Klarstellung, ich werde mich damit befassen.

Haltet die Fahnen hoch, es ist ein altes Thema.