[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 1070

 
dzhini:
Aber es funktioniert nicht :(
Es funktioniert also nicht anderswo, oder ich übersehe etwas.
 
Reshetov:
Es funktioniert also nicht anderswo, oder ich habe etwas übersehen.
Kann ich persönlich an Ihre Tür klopfen?
 
dzhini:
Kann ich persönlich an Ihre Tür klopfen?
Nein. Private Nachrichten sind nur für die persönliche Kommunikation bestimmt. Und Fehler im Code müssen öffentlich diskutiert werden, damit andere nicht die gleichen Fehler machen, oder jemand könnte dann einen Link zu einer fertigen Lösung teilen.
 

Hallo. Dieser einfache Code funktioniert mit einem Fehler. Ich selbst kann den Grund nicht herausfinden.

Der erste Befehl öffnet und verändert, der zweite öffnet und... Ändert sich nicht. Behält sie, bis sie versagt.

Im Protokoll heißt es:

"01:23:22 MarkTrade zum Testen gestartet

01:23:22 2010.01.29 00:00 MarkTrade EURUSD,H1: open #1 buy 1.00 EURUSD at 1.3965 ok

01:23:22 2010.01.29 00:00 MarkTrade EURUSD,H1: modify #1 buy 1.00 EURUSD at 1.3965 sl: 1.3935 tp: 0.0000 ok

01:23:22 2010.01.29 00:28 Tester: Stop Loss #1 bei 1,3935 (1,3935 / 1,3937)

01:23:22 2010.02.01 00:00 MarkTrade EURUSD,H1: open #2 buy 1.00 EURUSD at 1.3877 ok

01:23:22 2010.05.05 13:17 MarkTrade: gestoppt wegen Stop Out

01:23:22 2010.05.05 13:17 Tester: Auftrag #2 ist abgeschlossen

Ich habe einen Fehler gemacht! OrderSend liefert einen nicht-booleschen Wert!

int start()
  {
  int total=OrdersTotal();
  if (total==0)
   {
      if (TimeHour(TimeCurrent())==00&&TimeMinute(TimeCurrent())==00)
      {
      Buy();
      }
   }
return(0);
  }
//////////////////////////
void Buy()
 {
 RefreshRates();
 if (OrderSend(Symbol(), OP_BUY, 1, NormalizeDouble(Ask,Digits), 0,0,0,"",123321,0,Blue)==true)
         {
           Modify();
         }
 }
/////////////////////////////
void Modify()
 {
    int total = OrdersTotal();
      for(int i=total-1;i>=0;i--)
       {
       OrderSelect(i, SELECT_BY_POS,MODE_TRADES);
       if (OrderModify (OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-NormalizeDouble(30*Point,Digits),OrderTakeProfit(),0,CLR_NONE)== false) Modify();
       }
 }
 

Guten Tag

Wie man ein Prüfgerät erstellt, das mit verschiedenen Reframes funktioniert.

und es durch die Geschichte laufen lassen.

 

Guten Morgen!

Bitte klären Sie das. Bei der Optimierung von Expert Advisor ist mir aufgefallen, dass die Einstellung verschiedener TPs bei eingeschaltetem genetischen Algorithmus unterschiedliche Ergebnisse liefert, d.h. wenn ich TP=400 einstelle, optimiere ich in Schritten von 1 bis 400, dann stelle ich 350 ein und optimiere in Schritten von 1 bis 350 und so weiter bis TP=50. Es stellt sich also heraus, dass, wenn ich nur bei TR = 400 laufe, ich die Ergebnisse "überspringe", die bei niedrigeren TP und besser sind ! Liegt es an der Genetik? (Der Artikel https://www.mql5.com/ru/articles/1347 (Erstellt am: 25.12.2009 Autor: Rider) sagt: "...Die Genetik ist sicherlich eine nützliche Sache, aber innerhalb vernünftiger Grenzen. Die Sache ist die, dass der Algorithmus einen grausamen Scherz machen kann - ein aus seiner Sicht vorteilhafter Satz von Parametern wird identifiziert, und alle weiteren Optimierungen werden bis zum Ende "um ihn herum" durchgeführt. Ich denke, es ist klar, was die Konsequenzen sind. Die meisten wirklich guten Varianten, die außerhalb des Optimierungsbereichs funktionieren, werden "draußen" gelassen und erscheinen nicht in der Tabelle "Optimierungsergebnisse".

Es gibt mehrere Auswege. Eine radikale Lösung ist die Ablehnung der Verwendung genetischer Algorithmen bei der Optimierung. Dies ist jedoch aus dem einen oder anderen Grund nicht immer eine gute Lösung. Die nächsten beiden Maßnahmen sind halbherzig, aber immerhin etwas:

- Führen Sie die Optimierung nicht nur einmal, sondern zwei- oder mehrmals durch, das erste Mal z.B. nach "Balance", das nächste Mal nach "Maximalem Drawdown" oder etwas anderem ..."). Um also nicht das beste Ergebnis zu erhalten, sollte ich es mit verschiedenen TPs + durch verschiedene "optimierbare Parameter" und plus, zum Beispiel, 9 Vorwärtstests mit 9 Optimierungen für jeden Test für die Zuverlässigkeit laufen?

 
eddy:

der Zyklus wird aus irgendeinem Grund nicht unterbrochen

Break löst in Ihrem Fall die Schleife nur dann aus und unterbricht sie, wenn die Bedingung erfüllt ist. Wenn die Bedingung nicht erfüllt ist, ist die Schleife unendlich. Versuchen Sie es auf diese Weise.

int sec=Seconds();
       while(true) 
        {if(sec!=Seconds())          // new sec
          { int ms=GetTickCount(); }
       break;
        }
 
volshebnik:

break funktioniertin Ihrem Fall nur, wenn die Bedingung erfüllt ist

Deshalb steht es in if()
 
Hallo! Wie kann ich die Eigenschaften eines Symbols im Terminal ändern? Dort heißt es, dass die Mindestanforderung bei 300 liegt. Ich kann den EA nicht testen.
 
Pro

Um den Spread zu verändern gibt es z.B. das Programm TakeMySpread, aber wie oder womit kann man das "Stop Level" verändern um den EA unter verschiedenen Bedingungen zu testen. Hilfe!