Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1489

 
Maksim Burov Kommentar in den EA-Code einfüge?
Welche Möglichkeiten gibt es, dies zu beheben?
Beeinträchtigt es die Geschwindigkeit der Optimierung?

Sie müssen nicht unbedingt Kanvas verwenden.

Damit Comment den Tester bei der Visualisierung nicht verlangsamt, ist es notwendig, dass Comment nicht öfter als 30 Millisekunden aufgerufen wird.

Zum Beispiel so:

   static uint lastCalc= 0 ;
   uint cur= GetTickCount();
   if (cur-lastCalc> 30 ) {
      Comment("blablabla");
      lastCalc=cur; 
   }
Oder verwenden Sie Print anstelle von Comment, wenn es wichtig ist, dass keine Werte übersprungen werden.

Wenn eine bessere Visualisierung der Ausgabe beliebiger Werte wichtig ist, dann ist Kanvas besser.

https://www.mql5.com/ru/forum/277867/page8#comment_19186284
 
Maksim Burov Kommentar hat keinen Einfluss auf die Geschwindigkeit der Optimierung.
 
Maksim Burov #:

Die Informationen ändern sich in regelmäßigen Abständen.
Ich möchte zum Beispiel die Position mit dem niedrigsten Eröffnungskurs sehen. Oder den Tick der letzten geschlossenen Position wissen.
Man kann alles in den Ausdruck schreiben, aber es ist nicht bequem zu sehen, man kann etwas übersehen. Und so kann ich sofort sehen, wo ich Fehler habe.

Die Informationen ändern sich nicht jeden Tick? Nikolay schlug auch vor, dass man die Ausgabe einfach nach einem Timeout machen kann, wodurch die Häufigkeit dieser Ausgabe reduziert wird.
 

Vielen Dank für Ihre Hilfe.
Jetzt habe ich eine weitere Aufgabe.

Es gibt eine Funktion, die den Gewinn aller geschlossenen Aufträge nach einem bestimmten Tick zählt.
Der Zeitpunkt der Schließung des Auftrags (der Position) wurde zur Überprüfung hinzugefügt.
Da alles in MQL4 geschrieben wurde und nun in MQL5 umgeschrieben wird, stellte sich die Frage, wie man diese Überprüfung korrekt und kompetent durchführt.

Einfach gesagt, wie man den Code in MQL5 umschreibt)

double CalculateProfitHistory() 
{
   double profit = 0;
   int  i, ototal = OrdersHistoryTotal();

   for(i = ototal-1; i >=0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
      {
         if(OrderSymbol() == Symbol() && OrderCloseTime() > 0)
         {
            if(OrderType() == OP_BUY || OrderType() == OP_SELL)
            {
               if(OrderMagicNumber() == Magic )
               {
                  if (LockTicket !=0)
                  {
                     if (OrderTicket() >= LockTicket)
                     {
                        profit += OrderProfit()+OrderCommission()+OrderSwap();
                     }                  
                  }
               }
            }
         }
      }
   }
   return(profit);
}
 
Maksim Burov #:

Ich danke Ihnen allen für Ihre Hilfe.
Jetzt eine weitere Herausforderung.

Es gibt eine Funktion, die den Gewinn aller geschlossenen Aufträge nach einem bestimmten Tick zählt.
Der Zeitpunkt der Schließung des Auftrags (der Position) wurde zur Überprüfung hinzugefügt.
Da alles in MQL4 geschrieben wurde und nun in MQL5 neu geschrieben wird, stellte sich die Frage, wie man diese Überprüfung korrekt und kompetent durchführt.

Einfach gesagt, wie man den Code in MQL5 umschreibt)

// сначала выбираем нужный интервал
HistorySelect(TimeStart,TimeCurrent()+10);

// перебираем ордера в интервале
for(i=HistoryOrdersTotal()-1;i>=0;i--)
         {
          ord=HistoryOrderGetTicket(i);

         // далее получаем (или сразу сравниваем) любые свойства ордера, типа
          o_sym=HistoryOrderGetString(ord, ORDER_SYMBOL);
          o_magic=HistoryOrderGetInteger(ord, ORDER_MAGIC);
          ...
         }

Etwa so.

 
Maksim Burov #:

Ich danke Ihnen allen für Ihre Hilfe.
Jetzt eine weitere Herausforderung.

Es gibt eine Funktion, die den Gewinn aller geschlossenen Aufträge nach einem bestimmten Tick zählt.
Der Zeitpunkt der Schließung des Auftrags (der Position) wurde zur Überprüfung hinzugefügt.
Da alles in MQL4 geschrieben wurde und nun in MQL5 neu geschrieben wird, stellte sich die Frage, wie man diese Überprüfung korrekt und kompetent durchführt.

Einfach gesagt, wie man den Code in MQL5 umschreibt)

Da nicht nach Aufträgen (vorheriger Beitrag), sondern nach Geschäften gesucht wird, ist es am bequemsten, diesen Code zu verwenden

HistoryPosition - неопубликованный функционал MQL5-языка.
HistoryPosition - неопубликованный функционал MQL5-языка.
  • 2023.11.22
  • www.mql5.com
HistoryPositionsTotal Возвращает количество всех закрытых позиций в истории. HistorySelect() не влияет на результат данной функции. int HistoryPositionsTotal(); Возвращаемое значение Значение типа
 
JRandomTrader #:

So etwas in der Art.

Ich bin gescheitert( Können Sie das anhand meines Codes etwas näher erläutern.

 
Maksim Burov #:

Ich bin gescheitert( Können Sie das anhand meines Codes etwas näher erläutern.

Vielleicht wäre es besser, sich die Variante von Aleksandr Slavskii anzusehen. Ich habe nicht mit MQL4 gearbeitet, und auch nicht mit Hedging.

Oder beachten Sie hier und, nur für den Fall, hier.

 
JRandomTrader #:

Vielleicht wäre es besser, sich die Variante von Aleksandr Slavskii anzusehen. Ich habe nicht mit MQL4 gearbeitet, und ich habe auch nicht mit Hedging gearbeitet.

Oder beachten Sie hier und, nur für den Fall, hier.

Nicht besser. Das sind die üblichen Funktionen von fxsaber.

Ihre Variante ist durchaus akzeptabel, nur müssen Sie Orders durch Transaktionen ersetzen. Gewinn, Kommission und Swap werden bei Geschäften gespeichert, nicht bei Aufträgen.

 
Hallo, ich habe ein Problem mit dem VPS. Ich erhalte keine Benachrichtigungen auf meinem Telefon, wenn der MT4 ausgeschaltet ist. Wenn die Plattform eingeschaltet ist, funktionieren die Benachrichtigungen. Kann mir bitte jemand einen Rat geben, was falsch sein könnte? Vielen Dank!
Grund der Beschwerde: