Bibliotheken: MT4Orders - Seite 50

 
// Liste ändern:
// 10.06.2020
// Hinzufügen: Millisekunden hinzugefügt und Rundung von Preisen und Volumen in OrderPrint() entfernt.
// 13.08.2020
// Hinzufügen: Möglichkeit hinzugefügt, die Leistung von Bibliotheksteilen über das Makro MT4ORDERS_BENCHMARK_MINTIME zu überprüfen.
 

Die Anzahl der Verzögerungen ist so hoch, dass ich dies tue.

sinput int inMT4OrdersMinTimeAlert = 0; // Alarmschwelle in Millisekunden
  
#define  MT4ORDERS_BENCHMARK_MINTIME inMT4OrdersMinTimeAlert // Mindest-Alarm-Produktivität Spratabyte Zeit.

Ich filtere die Warnungen nach kleinen Verzögerungen.

 
fxsaber:

Filterung der Auslösung des Alarms bei geringfügigen Verzögerungen.

Ein ähnliches Ergebnis ist bei der Ausgabe von Verzögerungen > 30 ms zu sehen.

2020.08.18 05:12:20.760 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 45 ms.
2020.08.18 06:08:07.116 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 06:44:57.080 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 59 ms.
2020.08.18 07:01:37.171 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 07:04:19.996 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 07:04:55.020 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 43 ms.
2020.08.18 07:30:07.414 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 37 ms.
2020.08.18 07:38:31.913 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 07:44:08.415 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 36 ms.
2020.08.18 07:45:22.918 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 38 ms.
2020.08.18 08:00:37.016 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 40 ms.
2020.08.18 08:01:36.007 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:08:26.948 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 34 ms.
2020.08.18 08:18:41.664 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 33 ms.
2020.08.18 08:48:51.114 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 32 ms.
2020.08.18 09:12:33.762 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 49 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 47 ms.
2020.08.18 09:28:42.364 Alert: Time[MT4Orders.mqh 1808: ::PositionSelectByTicket(Ticket)] = 38 ms.
2020.08.18 09:30:30.665 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 40 ms.
2020.08.18 09:33:50.114 Alert: Time[MT4Orders.mqh 1746: ::PositionGetTicket(Index)] = 44 ms.
2020.08.18 09:38:41.204 Alert: Time[MT4Orders.mqh 1675: ::PositionSelectByTicket(::OrderGetInteger(ORDER_TICKET))] = 77 ms.
 

Für diejenigen, die mit asynchronen Operationen arbeiten, wird es nützlich sein, die Einstellungen für die maximal mögliche Anzahl von unbearbeiteten asynchronen Operationen auf ihrem Konto zu kennen.

Es ist nicht schwer, das herauszufinden.

Alert: 60 - Too many trade requests


Seien Sie vorsichtig, Sie könnten an eine Grenze stoßen.


Eine mögliche Variante, solche Informationen zu erhalten.

// Im Falle von true enthält Amount die maximal mögliche Menge
// unbearbeitete asynchrone Anfragen für das gesamte Terminal.
bool GetMaxAsync( const TICKET_TYPE TicketPending, int &Amount )
{
  const bool Res = OrderSelect(TicketPending);
  
  if (Res)
    for (Amount = 0; !IsStopped() && OrderDeleteAsync(TicketPending); Amount++)
      ;
      
  return(Res);
}

void OnStart()
{
  for (int i = OrdersTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS) && (OrderType() > OP_SELL))
    {
      int Amount = 0;
      
      if (GetMaxAsync(OrderTicket(), Amount))
        Alert((string)Amount + " - " + MT4ORDERS::LastTradeResult.comment);
                
      break;
    }
}
 
// Liste ändern:
// 20.08.2020
// Korrektur: Berücksichtigung der festgestellten Besonderheiten bei der Ausführung von Teilaufträgen.

Es war keine einfache Sache. Nur eine der Funktionen.

ZY Mehr als vier Jahre sind vergangen, seit die Bibliothek veröffentlicht wurde. Und sie wird immer noch zur Fertigstellung gezwungen. Kein einfacher MT5.

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2020.08.02
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 

Eine interessante Variante der Popularisierung von MT5 in Foren.

Ein mq4 Multicurrency Expert Advisor wird gepostet, auf Demo gestellt und überwacht. Ein Thread wird unterhalten. Die Leute diskutieren.

Die mq5-Variante wird über den Anschluss von Konvertierungsbibliotheken gepostet. Die Leute werden gezwungen, den MT5-Tester mit echten Ticks laufen zu lassen und bleiben dabei stecken (Multicurrency). Gleichzeitig wird klar, dass es genauso einfach ist, für MT5 zu schreiben wie für 4.

 
fxsaber:

Interessante Möglichkeit, MT5 in den Foren bekannt zu machen.

Ein mq4 Multicurrency Expert Advisor wird gepostet, auf Demo gestellt und überwacht. Ein Thread wird gepflegt. Die Leute diskutieren darüber.

Die mq5-Variante wird durch die Anbindung von Konvertierungsbibliotheken gepostet. Die Leute sind gezwungen, den MT5-Tester auf echten Ticks laufen zu lassen und bleiben stecken. Gleichzeitig wird klar, dass es genauso einfach ist, für MT5 zu schreiben wie für 4.

Ja, und mt5-Tester ist mehrere Dutzend Mal informativer und besser in Bezug auf die Testqualität.

Vielen Dank für die Bibliothek!

 
fxsaber:

Der mq4 Multicurrency Expert Advisor wird gepostet, auf Demo gestellt und überwacht. Es gibt einen Zweig. Die Leute diskutieren.

ach, das ist ein Mangel an Bildung der Händler, es ist ein sehr häufiges Missverständnis, dass das Testen in Strategie-Tester unterscheidet sich von der Prüfung auf Demo-Konto für ein paar Wochen, multicurrency Expert Advisors haben nichts damit zu tun.

fxsaber:

Die Leute sind gezwungen (Multi-Währung), MT5-Tester auf echten Ticks laufen zu lassen und bleiben stecken. Gleichzeitig stellen sie fest, dass es unter MT5 genauso einfach ist zu schreiben wie unter 4.

MK Stolz erlaubt Ihnen nicht, eine angemessene Entscheidung zu treffen, Sie in einem machte einen Job, der Ihnen erlaubt, Handelsstrategien auf MT5 zu schreiben, ohne Zeit zu verbringen, um MT5-Order-System zu studieren, aber leider " Schütteln Skills von Semi-Programmierer" auf diesem Forum hat eine höhere Priorität als die Entwicklung und Prüfung von Handelsstrategien, imho.

 
Igor Makanu:

Es ist ein weit verbreiteter Irrglaube, dass das Testen in einem Strategietester sich von dem Testen auf einem Demokonto für ein paar Wochen unterscheidet, der Handel mit mehreren Währungen hat damit nichts zu tun.

MK Stolz erlaubt es nicht, eine adäquate Entscheidung zu treffen, Sie haben einen Job gemacht, der es Ihnen erlaubt, Handelsstrategien auf MT5 zu schreiben, ohne Zeit für das Studium des MT5-Ordersystems aufwenden zu müssen, aber leider hat das "Schütteln der Fähigkeiten von Halbprogrammierern" in diesem Forum eine höhere Priorität als die Entwicklung und das Testen von Handelsstrategien, imho.

Wo ist die Verbindung?

 
Vitaly Muzichenko:

Worin besteht der Zusammenhang?

in der Kürze und Einfachheit des Order-Systems von 4 - es erlaubt Ihnen, Strategien "on the fly" zu schreiben, ohne durch die Lösung von elementaren Aktionen mit Orders abgelenkt zu werden.

Wenn Sie wollen, können Sie mit dem MT5-Order-System üben, einfache Aktionen mit Orders durchzuführen:


Igor Makanu:

wie man ein gespeichertes Ticket verwendet

herausfinden:

1. ob die Position geschlossen ist?

2. Um welche Art von Transaktion handelt es sich bei der geschlossenen Position?

3. ob die gleichzeitige Arbeit mit 9 Aufträgen erforderlich ist

Ich habe diese Frage im Thema "Fragen von MT5-Anfängern" gestellt, die Antworten waren im Stil von "warum brauchen Sie das?", die Lösung im MT5-Ordersystem konnte nur von einer Person geschrieben werden - dem Autor dieses Themas ;)