Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1228
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
Legen Sie es ein. Das habe ich nicht. Es wird in Paketen geöffnet. Magie - sie ignoriert sie.
Wenn Sie Code schreiben, übersetzen Sie dessen Logik ins Russische. Zunächst gibt es einen Zyklus, in dem Vergleiche durchgeführt werden, und wenn der ausgewählte Auftrag kein Marktauftrag ist, dann zur nächsten Iteration; wenn das Symbol nicht EURUSD ist, dann zur nächsten Iteration und wenn die Magie nicht gleich Ihrer Magie ist, zur nächsten Iteration. Am Ende des Zyklus zählen Sie die Anzahl der Iterationen, die bis zum Ende des Zyklus vergangen sind. Der Zyklus ist beendet, und das Programm beginnt, Aufträge entsprechend den Bedingungen zu öffnen. Da eine der Bedingungen immer erfüllt ist, wird ein Auftrag eröffnet. Und das geschieht bei jeder Zecke.
Wenn Sie den Code schreiben, übersetzen Sie seine Logik ins Russische. Sie haben zunächst einen Zyklus, in dem Vergleiche angestellt werden: Wenn der ausgewählte Auftrag kein Marktauftrag ist, dann zur nächsten Iteration; wenn das Instrument nicht der Eurobucks ist, dann zur nächsten Iteration; und wenn die Magie nicht gleich Ihrer Magie ist, dann zur nächsten Iteration. Am Ende des Zyklus zählen Sie die Anzahl der Iterationen, die bis zum Ende des Zyklus vergangen sind. Der Zyklus ist beendet, und das Programm beginnt, die Aufträge entsprechend den Bedingungen zu öffnen. Da eine der Bedingungen immer erfüllt ist, wird ein Auftrag eröffnet. Und das geschieht bei jeder Zecke.
Ich verstehe. Aber in diesem Fall, if(OrderMagicNumber() == MagicNumber)continue, wird die platzierte Order für eine von Magic(o) platzierte Order akzeptiert. Das bedeutet, dass die manuell platzierte Order auf EUROBAX ignoriert werden sollte und eine weitere Order von einem Expert Advisor mit Magic eröffnet werden sollte.
OrdersTotal() - das ist das Problem, das jeder Manipulation mit Magic ein Ende setzt.Das verstehe ich. Aber in diesem Fall: if(OrderMagicNumber() == MagicNumber)continue; Orders, die platziert werden, werden für Orders genommen, die von Magic(s) platziert wurden. Das heißt, eine manuell platzierte Order auf Eurobucks sollte ignoriert werden, und eine andere sollte von einem EA mit Magic eröffnet werden.
OrdersTotal() - dies ist der Befall, der jeder Manipulation des Magiers einen Riegel vorschiebt.Der Code wird von oben nach unten ausgeführt. Nach der Schleife erfolgt die Vergabe von Aufträgen. if(OrderMagicNumber() == MagicNumber)continue; Dadurch wird die Ausführung des Schleifenkörpers unterbrochen und eine neue Schleifeniteration beginnt. Die Schleife wird beendet und die Auftragserteilung beginnt. So haben Sie es geschrieben. Die Gesamtzahl der Aufträge hat damit nichts zu tun. Wenn Sie eine Bedingung festlegen möchten, die besagt, dass, wenn keine Aufträge mit Ihrer Magie und Ihrem Instrument erteilt werden, der Code für die Auftragserteilung anders sein sollte.
Gehen Sie die Bestellnummern durch. Wenn ein Auftrag mit unserer Magie und auf unserem Instrument gefunden wird, dann return - exit from start. Oder eine Flagge, dass Ihre Bestellung ist da und beim Start ontik oder Start Kontrolle auf die Flagge.
Und es ist besser, einen EA aus einer Vorlage zu erstellen, um ein EA-Skript, einen Indikator zu erstellen. Die Hauptcodefelder werden korrekter sein.
Der Code wird von oben nach unten ausgeführt. in einer Schleife nach den Regeln der Schleife. Nach der Schleife haben Sie Aufträge zu erteilen. if(OrderMagicNumber() == MagicNumber)continue; Dadurch wird die Ausführung des Schleifenkörpers unterbrochen und eine neue Schleifeniteration beginnt. Die Schleife wird beendet und die Auftragserteilung beginnt. So haben Sie es geschrieben. Die Gesamtzahl der Aufträge hat damit nichts zu tun. Wenn Sie eine Bedingung festlegen möchten, die besagt, dass, wenn keine Aufträge mit Ihrer Magie und Ihrem Instrument erteilt werden, der Code für die Auftragserteilung anders sein sollte.
Gehen Sie die Bestellnummern durch. Wenn ein Auftrag mit unserer Magie und auf unserem Instrument gefunden wird, dann return - exit from start. Oder eine Flagge, dass Ihre Bestellung ist da und beim Start ontik oder Start Kontrolle auf die Flagge.
Und es ist besser, einen EA aus einer Vorlage zu erstellen, um ein EA-Skript, einen Indikator zu erstellen. Die Hauptcodefelder werden korrekter sein.
Ich vermute, dass dies nicht die Lösung ist, aber in welche Richtung soll ich arbeiten?
Ich habe ein paar Dutzend Varianten ausprobiert. Entweder öffnet eine Bestellung, oder ohne Unterbrechung, tuyvukuchu.
Hier sollte übrigens über OrderSekect - eine Variable vom Typ bool gesetzt werden, sonst wird geflucht.
Das ist keine Lösung, aber welchen Weg soll man einschlagen?
Ich habe schon ein paar Dutzend Varianten ausprobiert. Öffnet entweder einen einzelnen Auftrag oder öffnet ohne Unterbrechung.
Hier sollte übrigens über OrderSekect - eine Variable vom Typ bool gesetzt werden, sonst wird geflucht.
Ja, sie sollte ins Leere laufen.
Sie sollten besser einen Algorithmus schreiben, was Sie auch tun wollen.
Das ist keine Lösung, aber welchen Weg soll man einschlagen?
Ich habe schon ein paar Dutzend Varianten ausprobiert. Öffnet entweder einen einzelnen Auftrag oder öffnet ohne Unterbrechung.
Hier sollte übrigens über OrderSekect - eine Variable vom Typ bool gesetzt werden, sonst wird geflucht.
Anstatt return(0) sollte es continue heißen
Gute und sachkundige Leute! Hilfe bei der Implementierung des Envelopes-Indikators in einen MT5 EA. Der EA selbst muss jeden Tick (ohne Überspringen) verarbeiten. Ich habe einige Varianten ausprobiert, ich habe in der Dokumentation nachgeschaut, ich scheine die Variante zu mögen, aber sie ist für den Handler OnCalculate. Ich habe es noch nicht mit der Standardbibliothek ausprobiert ... Nun, hier ist meine erste Implementierung:
Im visuellen Tester erhalte ich:
Ja, es soll fluchen, es geht ins Leere.
Schreiben Sie lieber den Algorithmus auf, den Sie machen wollen, es ist nicht klar, was Sie brauchen.
In der ersten Nachricht steht der Code. Es ist ganz einfach: Wir durchbrechen das vorherige Hoch/Tief und eröffnen ein Geschäft. Die von diesem EA eröffneten Orders sollten sich nicht mit anderen Orders überschneiden, die manuell oder von einem anderen EA eröffnet wurden, d.h. der EA sollte unabhängig arbeiten.
Ich habe das ganze Internet durchforstet. Es ist ein eher triviales Thema, aber es gibt viele Varianten. Es scheint eine einfache Sache zu sein, die nirgendwo zu finden ist.
In der ersten Nachricht ist der Code. Es ist ganz einfach: Durchbrechen Sie das vorherige Hoch/Tief - eröffnen Sie einen Handel. Die von diesem EA eröffneten Orders sollten sich nicht mit anderen, manuell oder von einem anderen EA eröffneten Orders überschneiden, d.h. der EA sollte unabhängig arbeiten.
Ich habe das ganze Internet durchforstet. Es ist ein eher triviales Thema, aber es gibt viele Varianten. Es scheint eine einfache Sache zu sein, die nirgendwo zu finden ist.
anstelle von return(0) sollte die Bedeutung continue sein