Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 589
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Als ich den Indikator Schritt für Schritt überprüfte, fand ich in der Unterroutine hinter dem if {} einen Sprung, in dem es kein W gibt. Hier ist ein vereinfachter Code, um den Punkt zu verdeutlichen:
//--- Eingabeparameter
Eingabe int w=10;
//---
{
int i;
//---
int co=0;
for(i=0;i<=w;i++)if(w==10){co++; Alert(co);}
//--- Rückgabewert von prev_calculated für den nächsten Aufruf
return(rates_total);
}
Ergebnis (Arlets):
2016.05.30 00:45:14.064 1 (EURUSD,H1) 11
2016.05.30 01:10:35.972 1 (EURUSD,H1) 10
........... usw. auf 1.
2016.05.30 00:45:14.064 1 (EURUSD,H1) 1
Regel: Wenn der Ausdruck in der Klammer wahr ist, wird der Operator1 ausgeführt.
Im Code: operator1 wird IMMER ausgeführt.
Ich denke, if() sollte nur einmal funktionieren, wenn die eingeklammerte Bedingung wahr ist. Sie erfolgt jedoch bei jeder Prüfung, so dass alle Ausdrücke in {} bei jedem Schritt ausgeführt werden und Maschinenzeit verschlingen.
Fragen: WARUM ist die Variable CO während der Schleife von 0 auf 11 gestiegen? Warum wird bei jedem Schritt ein Alert ausgelöst?
Wie oft muss ich Ihnen das noch sagen?
Sehen Sie: Sie haben w gleich 10,
Sie prüfen w auf 10: "if(w==10){co++; Alert(co);}" Glauben Sie, dass dieser Ausdruck wahr ist?
Warum haben Sie dann diese Frage?
Als ich den Indikator Schritt für Schritt überprüfte, entdeckte ich einen Sprung in der Unterroutine hinter dem if {}, in der es kein W gibt. Hier ist ein vereinfachter Code, um die Sache zu verdeutlichen:
//--- Eingabeparameter
Eingabe int w=10;
//---
{
int i;
//---
int co=0;
for(i=0;i<=w;i++)if(w==10){co++; Alert(co);}
//--- Rückgabewert von prev_calculated für den nächsten Aufruf
return(rates_total);
}
Ergebnis (arlet):
2016.05.30 00:45:14.064 1 (EURUSD,H1) 11
2016.05.30 01:10:35.972 1 (EURUSD,H1) 10
........... usw. auf 1.
2016.05.30 00:45:14.064 1 (EURUSD,H1) 1
Regel: Wenn der Ausdruck in der Klammer wahr ist, wird der Operator1 ausgeführt.
Im Code: operator1 wird IMMER ausgeführt.
Ich denke, if() sollte nur einmal funktionieren, wenn die eingeklammerte Bedingung wahr ist. Sie erfolgt jedoch bei jeder Prüfung, so dass alle Ausdrücke in {} bei jedem Schritt ausgeführt werden und Maschinenzeit verschlingen.
Fragen: WARUM ist die Variable CO während der Schleife von 0 auf 11 gestiegen? Warum wird bei jedem Schritt ein Alert ausgelöst?
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Wanzen, Wanzen, Fragen
Andrey Barinov, 2016.05.30 10:38
Offensichtlich haben Sie sich im Code vertippt und wollten das so schreiben:
Hallo meine Herren! Ich habe ein kleines Problem beim Schreiben eines EA(( Der EA öffnet schwebende Aufträge meist alles in Ordnung, aber manchmal muss ich Aufträge sehr nah an den aktuellen Preis zu öffnen, so wie zu verschreiben, dass schwebende Aufträge so nah wie möglich öffnen würde?
Wie oft muss ich Ihnen das noch sagen?
Schauen Sie: Sie haben w gleich 10,
Sie prüfen w auf gleich 10: "if(w==10){co++; Alert(co);}" Glauben Sie, dass dieser Ausdruck wahr ist?
Warum haben Sie dann diese Frage?
Ich entschuldige mich für die dumme Frage und danke Ihnen für Ihre Geduld und Ihr Verständnis. Ich wurde im Stich gelassen, indem ich die Sonde mechanisch if(w==10){ Alert(I,"/",F); durch das Programm bewegte, um einen Fehler in den Schritten zu finden. Das passiert manchmal, wenn man gegen eine Mauer der eigenen Unwissenheit über den Grund stößt, aber wenn man sich eine Weile von dem Problem abwendet, verschwindet die Frage irgendwie von selbst. Was Sie als "störend" empfinden, entpuppt sich in Wirklichkeit als eine nicht begründete Anforderung aus einem anderen Teil des Programms. Mit Dank, Vladimir.
Hallo, können Sie mir bitte bei den Rechenaufgaben helfen?
Wie kann man wissen, was das Los der fünften Stelle sein wird, wenn man das Los der ersten Stelle kennt und weiß, dass das Los jeder neuen Stelle in arithmetischer Progression zunimmt.
Die zweite Möglichkeit ist, dass das Los mit der geometrischen Progression zunimmt.
Hallo, können Sie mir bitte bei den Rechenaufgaben helfen?
Wie kann man wissen, was das Los der fünften Stelle sein wird, wenn man das Los der ersten Stelle kennt und weiß, dass das Los jeder neuen Stelle in arithmetischer Progression zunimmt.
Die zweite Möglichkeit ist, dass das Los mit der geometrischen Progression zunimmt.
Wurden Sie von Google verbannt? Es tut mir leid, warum sind Sie so grausam? ))
Die arithmetische Progression wird durch eine Formel definiert.
Diegeometrische Progression ergibt sich aus der Formel
Ich verstehe nicht, dass es theoretisch für die erste Variante ausreicht, das erste Los mit 5 zu multiplizieren, wenn es sich um das Startlos erhöht
Für die zweite Option: das Los der ersten Position* Multiplikator*5 ...aber
Ich verstehe das nicht, theoretisch muss man für die erste Option nur die erste Partie mit 5 multiplizieren.
Bei der zweiten Option ist die Partie der ersten Position * Koeffizient * 5 ...aber
Schon gut, ich habe die Mathematik selbst seit der Schule vergessen )) Ich habe ein Buch über Mathematik ausgegraben und die Definition von Arithmetik und Progression abgetippt.
-------------
Eine Folge von Zahlen, von denen jede, beginnend mit der zweiten, durch Addition einer konstanten Zahl d, die als Differenz einer arithmetischen Progression bezeichnet wird, aus der vorhergehenden gewonnen wird.
Wenn der erste Term a1 ist, dann hat das arith. prog. mit der Länge n die Form:
a1, a1+d, a1+2*d, ...., a1 + n*d
Der Code in MQL ist wie folgt, ich habe ein einfaches Beispiel erstellt
Schon gut, ich habe Mathe selbst seit der Schule vergessen ))