Der große und schreckliche MT4 für immer (oder wie man einen Übergang strategisch plant) - Seite 18

 
PapaYozh:
Nein.
Das Ergebnis ist nicht garantiert.

Wenn es genug Pfennige gibt, ist es garantiert

 
fxsaber:

Ich muss ein Skript für einen MT5 schreiben, das 100 Positionen auf einem leeren Konto eröffnet.


Auf MT4 habe ich das so gelöst.


Wer hat eine Lösung für MT5?

Ist eine Teilleistung möglich?
 
SanAlex:

Wenn es genug Pfennige gibt, ist es garantiert.

Sie haben die Teilleistung nicht berücksichtigt, und wenn Sie dies tun, müssen Sie auch die Doppelzählung berücksichtigen

 
Alexey Viktorov:
Ist eine teilweise Ausführung möglich?

Gehen wir davon aus, dass es keine Teilausführung gibt. Während das Skript läuft, kann es jedoch vorkommen, dass jemand versehentlich auf das Kreuz in der Positionstabelle klickt und eine oder mehrere Positionen schließt. Am Ende der Skriptausführung sollten jedoch immer noch genau 100 Positionen vorhanden sein.


Die MT4-Variante ist wahnsinnig einfach. Deshalb habe ich in diesem Thread geschrieben.

 
fxsaber:

Wer hat eine Lösung für MT5?

Ohne ein Synchronisationsgerät geht es nicht.

Dabei kann es zu elementaren Re-Quotierungen oder zum Verlust der Konnektivität kommen. 100 Aufträge ergeben nicht immer 100 Abschlüsse.

 
Andrey Khatimlianskii:

Ohne ein Synchronisationsgerät geht es nicht.

Dabei kann es zu elementaren Re-Quotierungen oder Kommunikationsverlusten kommen. 100 Aufträge führen nicht immer zu 100 Geschäften.

Der Synchronisator stellt nur sicher, dass die Werte von PositionsTotal und OrdersTotal nicht übereinstimmen. Gerade weil sie in der Zeit liegen, gibt es die Doppelzählungen.

Im Prinzip ist das Synchronisiergerät eine einzige Leitung. Und wenn man nicht auf den Mechanismus achtet, ist die Umsetzung einfach.


Aber auch mit dem Synchronizer ist alles sehr kompliziert. Sie können eine solche Bedingung verwenden:

while (OrdersTotal() + PositionsTotal < 100)

Diese Bedingung wird jedoch zu einem totalen Reinfall, wenn jemand Folgendes tut.

fxsaber:

Gehen wir davon aus, dass es keine Teilausführung gibt. Während das Skript läuft, kann es jedoch vorkommen , dass jemand versehentlich auf ein Kreuz in der Positionstabelle klickt und so ein oder mehrere Kreuze schließt. Am Ende der Skriptausführung sollten jedoch noch genau 100 Positionen vorhanden sein.


D.h. eine elementare Aufgabe, die in MT4 in zwei Zeilen gelöst wird, ist in MT5 nicht einfach zu lösen. Deshalb regiert MT4-style+Synchronizer in MT5. Aus diesem Grund verstehe ich nicht ganz, wie andere EAs in MT5 geschrieben werden können, von denen es so viele auf dem Markt gibt.

 
fxsaber:

Der Synchronisator stellt nur sicher, dass die Werte von PositionsTotal und OrdersTotal nicht übereinstimmen. Gerade weil sie vorübergehend falsch sind, führen sie zu Doppeleinträgen.

Im Prinzip ist das Synchronisiergerät eine einzige Leitung. Und wenn man nicht auf den Mechanismus achtet, ist die Umsetzung einfach.


Aber auch mit dem Synchronizer ist alles sehr kompliziert. Sie können eine solche Bedingung verwenden:

Diese Bedingung wird jedoch zu einem totalen Reinfall, wenn jemand Folgendes tut.


D.h. ein elementares Problem, das in MT4 in zwei Zeilen gelöst wird, ist in MT5 nicht einfach zu lösen. Deshalb regiert MT4-style+Synchronizer in MT5. Aus diesem Grund verstehe ich nicht, wie andere EAs in MT5 geschrieben werden können, von denen es so viele auf dem Markt gibt.

In MT5 wird alles auf die gleiche Weise gelöst wie in MT4 und ist oft viel einfacher, weil die Sprache und die API viel umfangreicher sind. Genauer gesagt, die Sprachen sind fast gleich, hier hat Metacquotes eine großartige Arbeit für die Kompatibilität geleistet, aber die APIs sind recht unterschiedlich. Renat (Direktor von Metakvotes) sagte einmal in Foren, dass MT4 tot ist und nicht weiterentwickelt wird. Aber anscheinend waren kommerzielle Interessen wichtiger, und trotzdem werden Updates veröffentlicht. Hauptsächlich handelt es sich aber um die Behebung von Fehlern und neue Funktionen von MKL 5. Also die Entwickler gut gemacht, ich ziehe meinen Hut, was ich nicht tue.))

Und generell verstehe ich das Gejammer einiger Kameraden nicht, wie schwierig der Umstieg auf MKL5 ist. Es gibt keine Komplikationen, auch eine andere API, so gibt es detaillierte Quellen, ich bevorzuge es, von ihnen zu lernen. Wer noch nicht genug Wissen hat, kann gerne helfen, es ist kurz aber klar. In jedem Fall fünfte ist schneller als vierte mindestens 10 mal, und im Optimierungsmodus in der Regel nutzt alle Kerne der CPU Sie erlaubt und mit modernen Grafikkarte schlägt vierte in Hunderten von Zeiten. Also kein Grund, traurige Lieder zu schreiben. ))

 
Andrei Trukhanovich:

Sie haben die Teilleistung nicht berücksichtigt, und wenn Sie das tun, müssen Sie auch die Überschreitung berücksichtigen.

und das ist auch nicht richtig? - Ich verstehe zwar nicht, was man von dieser Funktion will - aber sie erfüllt ihren Zweck zu 100 Prozent!!!

//+------------------------------------------------------------------+
//|                                                    maxLimits.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
#include <Trade\Trade.mqh>
//---
CTrade m_trade; // trading object
//---
sinput uint   maxLimits = 3;    // Кол-во Позиции Открыть в одну сторону
sinput double InpLots   = 0.01; // Lots
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   const string symbol=NULL;
   double price=0.0;
   const double sl=0.0;
   const double tp=0.0;
   const string comment="";
//--- check symbol
   string symbol_name=(symbol==NULL) ? Symbol() : symbol;
//--- check price
   if(price==0.0)
      price=SymbolInfoDouble(symbol_name,SYMBOL_ASK);
//---
   for(uint i=0; i<maxLimits; i++)
     {
      //--- open position
      if(m_trade.PositionOpen(Symbol(),ORDER_TYPE_BUY,InpLots,price,sl,tp))
         printf("Position by %s to be opened",Symbol());
      else
        {
         printf("Error opening BUY position by %s : '%s'",Symbol(),m_trade.ResultComment());
         printf("Open parameters : price=%f,SL=%f,TP=%f",price,sl,tp);
        }
     }
  }
//+------------------------------------------------------------------+
//---
   for(uint i=0; i<maxLimits; i++)
     {
      //--- open position
      if(m_trade.Buy(InpLots,symbol_name,price,sl,tp,comment))
      //if(m_trade.PositionOpen(Symbol(),ORDER_TYPE_BUY,InpLots,price,sl,tp))
         printf("Position by %s to be opened",Symbol());
      else
        {
         printf("Error opening BUY position by %s : '%s'",Symbol(),m_trade.ResultComment());
         printf("Open parameters : price=%f,SL=%f,TP=%f",price,sl,tp);
        }
     }
 
fxsaber:

Gehen wir davon aus, dass es keine Teilausführung gibt. Während das Skript läuft, kann es jedoch vorkommen , dass jemand versehentlich auf das Kreuz in der Positionstabelle klickt und eine oder mehrere Positionen schließt. Am Ende der Skriptausführung sollten jedoch immer noch genau 100 Positionen vorhanden sein.


Die MT4-Version ist wahnsinnig einfach. Das ist der Grund, warum ich in diesem Thread geschrieben habe.

Also, für MQL5 setzen Sie solche Bedingungen, dass jemand herumspielen kann, während für MQL4 Sie nicht tun? Was ist, wenn ich mich von einem anderen Computer aus mit dem Konto verbinde und ein paar Pips platziere... was wird MQL4 öffnen?

Wollen Sie es ohne Kontrolle vermasseln? Befürworten Sie Freizügigkeit bei der Programmierung oder versuchen Sie nur, MQL5 aus eigennützigen Interessen zu verleumden?

Schreiben Sie dasselbe in mql4 mit Kontrollen und narrensicher.

 
Alexey Viktorov:

Also für MQL5 setzen Sie solche Bedingungen, dass jemand herumspielen kann, aber nicht für MQL4? Was ist, wenn ich mich von einem anderen Computer aus mit meinem Konto verbinde und ein paar Pips platziere... was wird MQL4 öffnen?

Die Bedingungen für MT4 und MT5 sind die gleichen.

Wollen Sie es vermasseln, ohne eine Kontrolle durchzuführen? Befürworten Sie Freizügigkeit bei der Programmierung oder versuchen Sie nur, MQL5 aus eigennützigen Interessen zu verleumden?

Wenn Sie nicht wissen, wie man das macht, müssen Sie die gleichen Probleme mit mql4 mit Zecken und foolproof zeigen.

Ich mache alles nur auf MT5. Ich will damit nur sagen, dass MT5 nicht komplizierter ist als MT4. Es ist VIEL komplizierter als das! Nur in dieser Woche gibt es eine Lösung für die Umkehrung der Position, und die funktioniert nicht zu 100 %.

Seit vielen Jahren weiß jeder über das Backtesting Bescheid und kommt zu... Schlaf. Weil es SEHR kompliziert ist. Viele Besonderheiten der Handels-API, die im Forum angesprochen wurden, sind den Entwicklern nicht bekannt, oder sie haben sich nicht dazu geäußert.


Niemand kritisiert MT5. Ich habe anhand von Beispielen einige Probleme beim Lösen elementarer Probleme aufgezeigt.