Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1802
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
Dobro. Lassen Sie es mich in einfachen russischen Worten ausdrücken.
Du gehst angeln.
Oder Sie nehmen gleich alles, was Sie brauchen, aus der Speisekammer (OnInit), fischen, ohne herumzulaufen, und räumen, wenn Sie nach Hause kommen, alles in die Speisekammer und den Kühlschrank (OnDeinit).
Vielleicht haben Sie hier im Forum davon erfahren. Man muss nur manchmal zuhören und hören, was einem gesagt wird.
Andernfalls erhalten Sie eine Frage, eine Antwort, sagen "Blödsinn" und machen, was Sie denken.
Sie müssen zunächst über die Frage nachdenken, Fragen stellen und dann mit der Bearbeitung beginnen.
Ist Ihnen bewusst, dass das einfachste am Programmieren das Drucken von Code ist? Und der Löwenanteil der Entwicklung ist das Nachdenken über die Logik.
Das ist eine lächerliche Analogie. In diesem Fall sollten wir alle Variablen, Klassenobjekte usw. global machen und sie nicht bei Bedarf erstellen oder vielleicht ist ein grafisches Objekt etwas anderes (sicherlich keine Angelrute oder ein Netz :)) ? Mein Ansatz ist also durchaus rational und gerechtfertigt, es ist nur so, dass mql oder metatrader versagt.
Auf diese Weise wird das Signal übersehen.
Entweder bin ich begriffsstutzig, oder es gibt keine Bedingung, wenn es offene Aufträge UND ein Signal gibt und der Balken bereits neu ist.
Wenn die Signale lang sind, d.h. mehr als einen Balken lang, funktioniert es auch beim ersten Tick des Balkens.
Die einzige Frage ist, wann eine Order eröffnet werden soll: wenn das Signal erscheint oder beim ersten Tick des nächsten Balkens.Entweder bin ich begriffsstutzig, oder es gibt keine Bedingung, wenn es offene Aufträge UND ein Signal gibt und der Balken bereits neu ist.
Wenn die Signale lang sind, d.h. mehr als einen Balken lang, funktioniert es auch beim ersten Tick des Balkens.
Die einzige Frage ist, wann die Order eröffnet werden soll: zum Zeitpunkt des Signals oder zum ersten Tick des nächsten Balkens.Der Code sieht nun wie folgt aus:
Prüfen Sie vor dem Öffnen, ob es eine offene Position auf dieser Kerze gibt. Wenn nicht, öffnen Sie sie.
Im Prinzip würde ein offener Auftrag normalerweise auf den Ticks eines bereits offenen Balkens schließen. MakarFX und Artem haben richtig festgestellt. Deshalb wäre es richtig, dies zu tun:
Im Prinzip würde ein offener Auftrag normalerweise auf den Ticks eines bereits offenen Balkens schließen. MakarFX und Artem haben richtig festgestellt. Deshalb ist es richtig, Folgendes zu tun:
Artem hat Recht, so sollte es sein
Du hast Recht, Artem, so sollte es sein.
Das Ergebnis wird auch hier dasselbe sein. Nur der Code ist etwas komplizierter. Sie schreiben denselben Code in zwei verschiedenen Funktionen, was die Lesbarkeit beeinträchtigt. Aber jeder schreibt so, wie er will oder wie er sich wohlfühlt...
Hier ist eine Menge los.
Eine offene Stelle hat eine Öffnungszeit. Die Eröffnungszeit kann mit der Zeit einer Kerze verglichen werden, um herauszufinden, ob der Zeitpunkt der Positionseröffnung innerhalb der Kerze liegt (und dies ist die aktuelle Kerze).
Und warum finden Sie bei allen Beispielen immer die Anzahl der Aufträge heraus? Und wenn es keine Aufträge gibt, dann öffnen Sie sie. Dies schränkt die Möglichkeiten stark ein.
Im Allgemeinen sollten wir uns nur auf die Anzahl der Aufträge/Positionen für eine sehr enge Strategierichtung konzentrieren.
Das Ergebnis wird hier dasselbe sein. Nur der Code ist noch verwirrender. Sie schreiben denselben Code in zwei verschiedenen Funktionen, was die Lesbarkeit beeinträchtigt. Aber jeder schreibt so, wie er will oder wie er sich wohlfühlt...
Ihr Code
(Eine Bar ist geöffnet und es wurde keine Bestellung aufgegeben)
auf ein Signal geprüft - kein Signal
... warten wir auf den nächsten Takt.
Sie haben denselben Fehler wie beim letzten Mal wiederholt
P.S.
dies ist
muss nach der Eröffnung des Auftrags durchgeführt werdenDu hast Recht, Artem, es sollte so sein
Wenn in Ihrem Code eine Position geöffnet ist, wird eine andere nicht durch das entgegengesetzte Signal geöffnet. Das heißt, wenn das Signal eintrifft, müssen Sie zunächst prüfen, ob es eine Gegenposition gibt und diese schließen.
Aber auch hier schränkt dies die Möglichkeiten zur Verbesserung der Strategien stark ein.
Es sollte vermieden werden, sich an das Vorhandensein/Fehlen von Aufträgen zu binden (insbesondere bei vier - ausstehenden Aufträgen (was richtig ist) und Positionen (was falsch ist)).
Nein, es ist richtig und notwendig, die Anzahl der Aufträge und Positionen nach ihrer Art zur Verfügung zu haben. Aber es ist falsch, sich nur auf das Fehlen von Aufträgen für die Signale zu verlassen.
Im Allgemeinen ist es richtig, Funktionen zum Zählen von Aufträgen und Positionen (eine Funktion, die die Struktur füllt, wenn sich die Anzahl der Aufträge und Positionen ändert), Funktionen zum Öffnen/Schließen von Positionen, Funktionen zum Setzen von Aufträgen und Alarmfunktionen zu haben. Funktionen der verschiedenen Schleppnetze und Datengewinnung aus Indikatoren. Plus - Möglichkeit, die Daten einer Position (offen oder geschlossen) mit einigen Werten zu vergleichen.
Jede beliebige Strategie kann aus diesem Set aufgebaut werden.