Ist die lineare Verlangsamung ein Programmierfehler oder ein Merkmal von MT4? - Seite 4

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
allein die Konstruktion unten ist es wert.
ein bisschen mehr
und wir wissen bereits, was in welcher Reihenfolge ausgeführt wird. Dies ist nur eine Formatierung. Sie können den Code aber auch in logisch konsistente Operationen zerlegen und diese in separate Funktionen aufteilen. Dadurch wird der Hauptalgorithmus von einem Haufen durcheinandergewürfelten Codes befreit.
Das Problem ist die Verdoppelung des Codes und die übermäßige Anzahl von bedingten Anweisungen. Tatsächlich besteht der Code zu 99 % aus Zeilen, die irgendwie den bedingten If-Operator einschließen; ich bin sicher, wenn Sie sich damit befassen, könnte die Anzahl der Vergleiche um das Zehnfache reduziert werden. Das verlangsamt nicht nur die Ausführung, sondern dieser Code ist auch schwer zu lesen. Eine Person, die Ergänzungen vornimmt, hat mindestens 2 Hauptaufgaben:
1 - es nicht kaputt zu machen
2 - Hinzufügen der erforderlichen Funktionen.
Unleserlicher Code verursacht ohnehin zusätzliche Duplizierung aller möglichen Prüfungen und Vergleiche - und das ist wiederum ein zusätzlicher Aufwand. Wenn ich mir den Code ansehe, erinnere ich mich persönlich an die Zeit vor 25 Jahren, als ich gerade mit dem Programmieren angefangen habe und es aus dem Handbuch für den Atari 800XL PC gelernt habe, ohne Lehrer, einfach weil es interessant war.
Natürlich ist es interessant, über welches "wenn" wir sprechen, es gibt wahrscheinlich mein TOR - wo ich schreibe "wenn so, dann so", und der Programmierer interpretiert es im Code, und es gibt "wenn" in Bezug auf die direkte Arbeit mit Aufträgen, und es gibt eine Menge von Operationen mit Aufträgen...
Ich dachte natürlich, es handele sich um eine Art Schleife, deren Ausführung zu einer mehrfachen Überprüfung der Auftragsbedingungen führt. Und es stellt sich heraus, dass die Situation nur korrigiert werden kann, indem der Code von Grund auf neu geschrieben wird?
allein die Konstruktion unten ist es wert.
ein bisschen mehr
und wir wissen bereits, was in welcher Reihenfolge ausgeführt wird. Dies ist nur eine Formatierung. Sie können den Code aber auch in logisch konsistente Operationen zerlegen und diese in separate Funktionen aufteilen. Auf diese Weise wird der Hauptalgorithmus von einem Haufen durcheinandergewürfelten Codes befreit.
Aber beeinträchtigt das nicht die Leistung in irgendeiner Weise?
Probleme mit doppeltem Code
allein die Konstruktion unten ist es wert.
ein bisschen mehr
und wir wissen bereits, was in welcher Reihenfolge ausgeführt wird. Dies ist nur eine Formatierung. Sie können den Code aber auch in logisch konsistente Operationen zerlegen und diese in separate Funktionen aufteilen. Dadurch wird der Hauptalgorithmus von einem Haufen durcheinandergewürfelten Codes befreit.
rev. 1.1
Für die Festlegung eines Stop-Loss und die Filterung von Pending Orders verwenden wir zwei Varianten von Mirror MA.
maMirror - wird mit der Standard-iMA-Funktion berechnet, funktioniert einmal pro Balken, die Daten werden von den Eröffnungskursen des Balkens übernommen
Berechnungsalgorithmus:
Zu verkaufen:
Ausgangsberechnungspunkt maMirror=iMA+pipsXHmaM(o/b)
anschließender Berechnungspunkt maMirror=maMirror(1)-(iMA(0)+pipsXHmaM(o/b)-iMA(1)+pipsXHmaM(o/b))
die Berechnung ist nach dem Berechnungsendpunkt abgeschlossen.
Zu kaufen:
Ausgangsberechnungspunkt maMirror=iMA-pipsXHmaL
anschließender Berechnungspunkt maMirror=maMirror(1)-(iMA(0)-pipsXLmaM-iMA(1)-pipsXLmaM)
Die Berechnung wird nach dem Endpunkt der Berechnung abgebrochen.
Um die ToR zu vereinfachen, ist es notwendig, zwei Berechnungsblöcke einzufügen, die in ihrer Arbeitsweise und ihren Variablen unabhängig voneinander sind und vom Benutzer eingestellt werden können
maMBlock=0 - keine Blöcke verwenden (Standard-Stop-Loss wird verwendet)
maMBlock=1 - nur Block #1 verwenden.
maMBlock=2 - nur Block #2 verwenden (Standard-Stop-Loss wird verwendet)
maMBlock=3 - beide Blöcke verwenden
Block 1
Berechnung des Stop-Loss. Der Stop-Loss wird neu berechnet und die Order wird bei jedem Takt um den Wert von maMirror aktualisiert.
1 Die Variable StartPoint wird verwendet, um den Startpunkt für die Berechnung zu bestimmen, wenn StartPoint=1 (die Berechnung wird nach der Berührung von maT durchgeführt), wenn StartPoint=2 (die Berechnung wird nach der Eröffnung des Auftrags durchgeführt).
1.1 Wenn StartPointO=1 ist, wird die Berechnung abgeschlossen, nachdem maT berührt wurde;
1.2 Wenn StartPointO=2, wird die Abrechnung nach Abschluss des Auftrags beendet;
1.3 Kann der Stop Loss von maMirror nicht gesetzt werden, wird die Order geschlossen.
1.4 Levl_Zerro=0 (nicht verwendet), Levl_Zerro!=0 (der Stop-Loss wird auf den angegebenen Höchstwert aktualisiert, ausgehend vom Eröffnungskurs, ein negativer Wert bedeutet, dass der Stop-Loss in einen positiven Wert umgewandelt wird)
Block 2
Berechnung der Filterung für schwebende Aufträge
0.1 Um eine Order zu kaufen, wird die Order platziert, wenn maMirror>offener Preis der schwebenden Order
0.2 Zum Verkauf werden die Aufträge platziert, wenn maMirror<offener Preis des anhängigen Auftrags
1 Die Variable StartPoint wird verwendet, um den Startpunkt für die Berechnung zu bestimmen, wenn StartPoint=1 (die Berechnung wird nach der Berührung von maT durchgeführt), wenn StartPoint=2 (die Berechnung wird nach der Eröffnung des Auftrags durchgeführt).
1.1 Wenn StartPointB=1 ist, wird die Berechnung abgeschlossen, nachdem maT berührt wurde;
1.2 Wenn StartPointB=2 (die Abrechnung endet nach Abschluss des Auftrags);
2. Wenn maMirrorDell=0 (nicht verwendet) maMirrorDell=1 (alle offenen Aufträge werden gelöscht, wenn die Bedingungen von Punkt 0 nicht zutreffen)
Benutzer-Variablen
maMirrorO (Einstellungen von iMA)
maMirrorB (iMA-Einstellungen)
StartPointO
StartPointB
pipsXHmaMo
pipsXLmaMo
pipsXHmaMb
pipsXLmaMb
maMBlock
maMirrorDell
Hilfe bei der Schätzung des Auftrags, Kunde möchte einen neuen Auftrag, weiß nicht, wie viel er schätzen soll) Da ich kein Programmierer bin, bin ich Ingenieur der Luft- und Raumfahrtakademie)
Beeinträchtigt dies die Leistung in irgendeiner Weise?
Sehr starke Argumente, Ihr Code, wo kann ich einen erfahrenen Programmierer sehen?
Die Vervielfältigung hat nichts damit zu tun, auch nicht die Wenns. Die wirkliche Verlangsamung ist durch die Arbeit mit Aufträgen gegeben.
Arbeiten mit Aufträgen im TK-Code, oder vielleicht TK selbst, oder MT4 arbeiten mit Aufträgen im Allgemeinen?