[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 556
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
в вашем варианте работает, и ЕТО уже большой прорыв ). только мне нужно условие не (Ask<tmp || Ask>tmp), а просто банально (Ask<=tmp). тоесть как только появиться хоть один тик в другую сторону... и именно с циклом).. я знаю, истина где то рядом))). хотя б на реале работало, бог с ним, с тестером то.
Nun, dasselbe - dieselbe Logik. Vor der Schleife bringen wir die Variable in einen solchen Zustand, in dem die Schleifenbedingung wahr ist. Bei jeder Iteration der Schleife aktualisieren wir die Daten mit RefreshRates() und prüfen, ob das Angebot noch aktuell ist, führen dann eine Aktion durch und unterbrechen die Schleife. Wenn wir wollen, dass der Code, der unterhalb der Schleife liegt, ausgeführt wird, dann brechen wir ihn mit dem Befehl break ab. Wenn wir nicht wollen, dass er ausgeführt wird, unterbrechen wir die Funktion int start() des EA mit dem Befehl return(0)
Ich verstehe die Logik der Vorgehensweise... Ich verstehe nicht, warum keiner der Entwürfe funktioniert und einige weitere in den Abgrund der Versuche gefallen sind.
я логику понимаю, как ето сделать.. я не понимаю почему не работает ни одна конструкция, еще несколько канули в бездну перебора вариантов
Sie müssen die Augen schließen und sich vorstellen, was in jeder Iteration des Zyklus geschieht.
Ihre erste Option:
Das Tempo ist gleich asc. Die Gleichheitsbedingung ist erfüllt, so dass die Schleife eine fast unendliche Anzahl von Iterationen durchläuft. Denn selbst wenn ein neues Zitat eintrifft, ist nicht sicher, dass es den Wahrheitsgehalt des Zyklus durchbrechen wird. Ein paar oder drei fallende Aufstiege hintereinander und wir können warten, bis der Zyklus fast unendlich ist...
Als das MQL4-Tutorial herauskam, habe ich es durchgeblättert und bin nicht mehr darauf zurückgekommen - es gefiel mir nicht, dass der Autor dieses Lehrbuchs überall while()-Schleifen einbaute. Es hat bei vielen Menschen, die versucht haben, MQL aus diesem Buch zu lernen, einen Eindruck hinterlassen.
Sagen Sie mir, dass Ihr Expert Advisor eine so schreckliche Aufgabe hat, dass Sie auf diese Schleife nicht verzichten können? Sie sehen also, wie einfach es ist, diese Schleife für eine unendliche Anzahl von Iterationen laufen zu lassen und dabei die Kontrolle zu verlieren. Können Sie in Ihrem Fall nicht auf die for()-Schleife verzichten? Oder durch das Schreiben einer separaten einfachen Funktion...?
Die Hauptsache ist, dass es funktioniert... Ich bin es leid, ein fallendes Messer zu kaufen. Ich brauche jede Lösung, auch die eleganteste:
Честно-говоря, когда вышел учебник по MQL4, я его пролистал и больше к нему не возвращался - мне не понравилось, что автор этого сочинения суёт там цикл while() везде где ни попадя. Это наложило отпечаток на многих, кто пытался освоить MQL по данной книге.
Вот скажите, что у Ваего советника, такая жуткая задача, что нельзя обойтись без этого цикла? Ну ведь сами видите, насколько легко запустить этот цикл в бескоенчное число итераций, просто потеряв контроль. Циклом for() в Вашем случае обойтись нельзя? Ну или написанием каой-то отдельной простенькой функции?...
Извините, что вмешиваюсь, но в таком виде цикл и будет бесконечным. tmp нужно сделать static с присвоением ей началного значения заведомо большего Ask. Или =0, если использовать предложенную конструкцию с ИЛИ. А так Ask всегда будет = tmp.
Es ist nur nicht klar, warum es hier einen Zyklus gibt. Prüfen Sie bei jedem Preisschritt und handeln Sie entsprechend den Gegebenheiten.