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

 
uncleVic:

11110000000000000111111b=> 31457535 (dezimal)

Verbot des Handels von 00 bis 07 Uhr

Geschäftszeiten zwischen 08:00 und 20:00 Uhr

Verbot von 21.00 bis 23.00 Uhr.

Dankeschön
 

Wahrscheinlich ist es eine Dummy-Frage, ich bin immer noch nicht sehr vertraut mit der mql5-Syntax (wie auch alles andere). Kann eine Funktion mehr als einen Wert zurückgeben, oder ein Array oder eine andere Struktur?

Etwa so:

int testfunc(int x, int Y)

{

  z = x + y;

  n =  x * y;

  return(z, n);

}

test = testfunc(5,10);

Print(test.x,test.y);

 
Lone_Irbis:

Wahrscheinlich ist es eine Dummy-Frage, ich bin immer noch nicht sehr vertraut mit der mql5-Syntax (wie auch alles andere). Kann eine Funktion mehr als einen Wert zurückgeben, oder ein Array oder eine andere Struktur?

Nein, Sie können ein Array global beschreiben und seine Werte in einer Funktion ändern.
 
zfs:
Nein, das Array kann global beschrieben werden und seine Werte können in einer Funktion geändert werden.
Danke, ich werde es ausprobieren)
 

Bitte geben Sie mir Tipps, wie ich das Signal abbestellen kann, und einen Tag später habe ich es wieder abonniert. Das Signal ist in den Abonnements aktiv, ich habe in den Einstellungen ein Häkchen gesetzt, um das Abonnement zu aktivieren, dann OK, aber dann öffne ich die Einstellungen erneut und es gibt kein Häkchen.

 
Lone_Irbis:

Wahrscheinlich ist es eine Dummy-Frage, ich bin immer noch nicht sehr vertraut mit der mql5-Syntax (wie auch alles andere). Kann eine Funktion mehr als einen Wert zurückgeben, oder ein Array oder eine andere Struktur?

Etwa so:

Einfache (keine Klassenobjekte, Strings und dynamische Arrays enthaltende) Strukturen können von Funktionen zurückgegeben werden.

 

Danke, ich habe es geschafft, das Problem ohne Arrays zu lösen - nur mit globalen Variablen ohne vordefinierte Werte (die Tür war offen, wie immer).

Ich habe jedoch eine neue, vielleicht weniger typische Frage: Ich weiß, dass mql5 alle möglichen eingebauten Funktionen zur Steuerung von Strategietestern hat. Aber ich kann keine von ihnen finden, die es erlaubt, Optimierungsergebnisse in einer vorbereiteten Weise zu behandeln. Angenommen, ich möchte einen durchschnittlichen Gewinnwert für alle Ergebnisse finden, bei denen alle Parameterwerte außer Х in einem bestimmten Bereich liegen.

Oder ist es möglich, dies nur von Hand in Excel zu tun? Ich weiß, wie man das in Excel macht, wenn überhaupt. Ich habe gerade eine Idee für eine kleine Recherche (rein für mich, aus Interesse), für die ich mich sehr routinemäßig und identisch durch einen ganzen Berg von Tabellen wühlen müsste, und ich möchte das irgendwie automatisieren...

 
Lone_Irbis:

Danke, ich habe es geschafft, das Problem ohne Arrays zu lösen - nur mit globalen Variablen ohne vordefinierte Werte (die Tür war offen, wie immer).

Ich habe jedoch eine neue, vielleicht weniger typische Frage: Ich weiß, dass mql5 alle möglichen eingebauten Funktionen zur Steuerung von Strategietestern hat. Aber ich kann keine von ihnen finden, die es erlaubt, Optimierungsergebnisse in einer vorbereiteten Weise zu behandeln. Angenommen, ich möchte einen durchschnittlichen Gewinnwert für alle Ergebnisse finden, bei denen alle Parameterwerte außer Х in einem bestimmten Bereich liegen.

Oder ist es möglich, dies nur von Hand in Excel zu tun? Ich weiß, wie man das in Excel macht, wenn überhaupt. Es gibt da nur eine Idee für eine kleine Recherche (rein für mich, aus Interesse), für die ich mich sehr routinemäßig und identisch durch einen ganzen Berg von Tabellen wühlen müsste, und ich möchte das irgendwie automatisieren...

Lesen Sie hier: https://www.mql5.com/ru/docs/optimization_frames


Und dann suchen Sie im Forum nach Anwendungsbeispielen.

Документация по MQL5: Работа с результатами оптимизации
Документация по MQL5: Работа с результатами оптимизации
  • www.mql5.com
Работа с результатами оптимизации - Документация по MQL5
 
MetaDriver:

Lesen Sie es hier: https://www.mql5.com/ru/docs/optimization_frames


Und dann suchen Sie im Forum nach Anwendungsbeispielen.

Ja, das ist mir schon ein paar Mal begegnet, und Beispiele wie dieses. Aber aus irgendeinem Grund schien es nicht genau das zu sein, wonach ich gesucht hatte. Aber vielleicht liegt es auch nur daran, dass ich noch nicht weiß, wie man sie macht :)

Wie auch immer, es ist noch nicht relevant, solange die unglückliche Eule nicht richtig zum Laufen gebracht werden kann...

Die letzte Frage für die nahe Zukunft (hoffe ich zumindest) lautet also: Wie bekomme ich den Eröffnungskurs für den letzten Auftrag einer Position richtig?

Meine Testeulen stammen nicht wirklich von mir, sondern von einer kürzlich gefundenen Eule eines unbekannten Autors. Diese Eule hatte anfangs einen merkwürdigen Fehler: Sie funktioniert im Tester einwandfrei, erhält aber in der Demo nicht den Wert des letzten Bestellpreises.

double FindLastPrice(long PositionID, bool IsSell) {

   int  i = 0, Total;
   long Ticket, OldTicket = 0, PosID, Magic, Type;
   double OrderPrice = 0;

   HistorySelect(0, TimeCurrent());
   Total = HistoryOrdersTotal();  

   for (i = 0; i < Total; i++) {
      Ticket = (int)HistoryOrderGetTicket(i);
      PosID  = HistoryOrderGetInteger(Ticket, ORDER_POSITION_ID);
      Magic  = HistoryOrderGetInteger(Ticket, ORDER_MAGIC);
      Type   = HistoryOrderGetInteger(Ticket, ORDER_TYPE);
      

      if (IsSell) {
         if ((PosID == PositionID) && (Magic == MagicNumber) && (Type == ORDER_TYPE_SELL)) {
            if (Ticket > OldTicket) {
                OrderPrice = HistoryOrderGetDouble(Ticket, ORDER_PRICE_OPEN);
                OldTicket = Ticket;
            }
         }
      }

      else {
         if ((PosID == PositionID) && (Magic == MagicNumber) && (Type == ORDER_TYPE_BUY)) {
            if (Ticket > OldTicket) {
                OrderPrice = HistoryOrderGetDouble(Ticket, ORDER_PRICE_OPEN);
                OldTicket = Ticket;
            }
         }
      }
   }

   if(!OrderPrice) {
         Print("Ошибка ",GetLastError());
         Sleep(5000);
   }
   return(OrderPrice);
}

Es erzeugt den Fehler 4753 (Auftrag nicht gefunden) und gibt in der Demo null zurück (im Testgerät wird alles wie erwartet zurückgegeben). Und dies trotz der Tatsache, dass der Test Print schlägt vor, dass es scheint zu erreichenHistoryOrderGetDouble Verarbeitung und hat sogar ein Ticket, das nicht leer ist...

 

Sagen Sie mir, wer hat 5000, wenn er jede Woche 100 Dollar bekommt?

Grund der Beschwerde: