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
Und dann müssen Sie nachschlagen, worauf sich die vier Klammern am unteren Rand beziehen.
Übrigens macht es mich sehr nervös, wenn die Verschachtelung mehr als zwei Ebenen umfasst. Ich versuche, es nie so zu schreiben und den Code über Funktionen zu verteilen.
Und selbst wenn es zwei Verschachtelungsebenen gibt - achten Sie darauf, nach jeder schließenden Klammer einen Kommentar zu schreiben, der angibt, welcher Block verschüttet wird (z. B. ein doppelter Schleifenkopf).
Wie für Stil, hier ist mein Code für die Auswahleiner Geschichte Position für MT5 (von einem bestimmten Magier, Symbol, mit einem bestimmten Datum Bereich):
Die History-Klasse selbst ist ein Abkömmling der abstrakten Schnittstelle CTradeHistoryI:
Durch Auswahl der gewünschten Historie können Sie deren Komponenten (Positionen für MT5 oder Aufträge für MT4) neu berechnen und eine Schnittstelle zu jeder Komponente als abstrakte Schnittstelle erhalten:
Für MT4 gibt es entsprechende History-Klassen, die ebenfalls von diesen Interfaces geerbt werden - damit ist gleichzeitig die Cross-Plattformalität gegeben - ein EA muss nicht herausfinden, wo er arbeitet, die gesamte Arbeit mit der History wird über die abstrakten Interfaces erledigt.
Schreiben Sie keine Funktionen, die immer konstant sind und sich nie ändern, in diesem Stil
Schreiben Sie sie kurz und bündig, niemand schaut sie sich an, und sie brauchen nur halb so viele Zeilen.
Da sich diese Funktionen nicht ändern, warum haben Sie dort einen Haufen unnötiger geschweifter Klammern gesetzt? Entfernen Sie sie, und alles wird komprimiert. Denn Ihr Beispiel wirkt absurd: Sie selbst haben den Code verwischt und erfinden dann Krücken, um ihn zu reduzieren.
Ich stimme zu, man kann 3 weitere Zeilen herausschneiden und den Code kürzen, aber der Zweck war nicht, den Code zu verwenden, er ist nicht einmal meiner, sondern ihn zu kürzen, und man kann fünf solcher Funktionen in einem Bildschirm unterbringen, nicht eine. Danach sind die Programme leichter zu lesen und man muss nicht 150 Mal blättern. Und das Gewicht der Datei sinkt.
Nette Arbeit, gefällt mir, aber ich mag OOP nicht und versuche, darauf zu verzichten. Ich mag keine Prozessoren mit Threadsplitting (z.B. 4 Kerne und 8 Threads). Es muss klar sein, dass Splitting und jede Virtualisierung einen Leistungsverlust und einen Verlust an Maschinenzeit für die Implementierung bedeutet, sei es Threadsplitting im Kernel oder Virtualisierung von Funktionen im Code.
Ich stimme zu, Sie können 3 weitere Zeilen herausschneiden und den Code kürzen, aber der Zweck war nicht, den Code zu verwenden, es ist in der Tat nicht einmal meine, sondern zu verkürzen, und solche Funktionen können fünf in einem Bildschirm, nicht eine gesetzt werden. Danach sind die Programme leichter zu lesen und man muss nicht 150 Mal blättern. Und das Gewicht der Datei wird reduziert.
Mit freundlichen Grüßen.
27"-Arbeitsbildschirm
Ich werde ihn nicht noch einmal lesen, sondern nur zitieren:"Schreiben Sie keine Funktionen, die immer gleich bleiben und sich nie in diesem Stil ändern".
Warum sollte man sich über eine Funktion aufregen, die einmal geschrieben wird, wenn die Plattform freigegeben wird, und die sich in der Zukunft nie ändern wird? Ändern Sie häufig den Code in den Funktionen, um die Losgröße, die Anzahl der Aufträge und die typischen Werte zu erhalten? Warum sollte man sie dann auf 3 Bildschirme eines 32-Zoll-Monitors verteilen?
P.S. Der beigefügte Code ist eine Fälschung von kodobase.
Gegenfrage ))) Ich habe solche Funktionen in der Datei MyFunc.mqh, ich sehe nicht den geringsten Sinn darin, sie zu komprimieren. Warum, um 10-20 KB auf der Festplatte zu sparen? Und offen gesagt, macht mich ein solcher Codestream krank ))
Gegenfrage ))) Ich habe solche Funktionen in der Datei MyFunc.mqh, ich sehe nicht den geringsten Sinn darin, sie zu komprimieren. Warum, um 10-20 KB auf der Festplatte zu sparen? Um ehrlich zu sein, dieser Codestream macht mich krank )).
Was mich betrifft, so sollte der Code klar, kurz und schnell sein und unter allen Bedingungen ohne Fehler funktionieren.
Mit freundlichen Grüßen.
Gegenfrage ))) Ich habe solche Funktionen in der Datei MyFunc.mqh, ich sehe nicht den geringsten Sinn darin, sie zu komprimieren. Warum, um 10-20 KB auf der Festplatte zu sparen? Und ehrlich gesagt, ein solcher Codestream macht mich krank ))
Also, rechnen Sie: 1000 EAs x 10 Kb = 10 Mb - da müssen Sie schon über Einsparungen nachdenken ))
Gegenfrage ))) Ich habe solche Funktionen in der Datei MyFunc.mqh, ich sehe nicht den geringsten Sinn darin, sie zu komprimieren. Warum, um 10-20 KB auf der Festplatte zu sparen? Und offen gesagt, macht mich ein solcher Codestream krank ))
Ich auch, aber ich bin schon vor langer Zeit zu dem Schluss gekommen, dass der Kodex an Orten kompakt sein muss, wo man ihn nie ansieht, wo er nie korrigiert wird und nie korrigiert werden wird.
Das Verteilen von Benutzercode mit all diesen Steckplätzen bereitet zusätzliche Kopfschmerzen, da Sie die Dateien auf verschiedene Terminals ziehen oder gemeinsam nutzen müssen. Natürlich können Sie die Includniks auf alle Terminals übertragen, aber wenn Sie in einem Terminal etwas ändern oder hinzufügen, müssen alle durch ein neues Terminal ersetzt werden.
Die Expert Advisors und Indikatoren sind so klein, dass es keinen Sinn macht, sie vom Hauptteil des Programms zu trennen. Um genau zu sein, sie sind nicht klein, sie sind eine einzige Datei, es ist nicht wie bei einer Website mit 10 000 Seiten, wo man nicht ohne Klassen und Einschübe auskommt. Außerdem gibt es jetzt Strukturen, und die reichen aus, um kompakten, 100 % funktionsfähigen Code zu schreiben.
Übrigens macht es mich sehr nervös, wenn die Verschachtelung mehr als zwei Ebenen umfasst. Ich versuche, es nie so zu schreiben und den Code über Funktionen zu verteilen.
Und selbst wenn es zwei Verschachtelungsebenen gibt - achten Sie darauf, nach jeder schließenden Klammer einen Kommentar zu schreiben, der angibt, welchen Block sie verdeckt (z. B. einen doppelten Schleifenkopf).
Wie für Stil, hier ist mein Code für die Auswahleiner Geschichte Position für MT5 (von bestimmten Magier, Symbol, mit bestimmten Datum Bereich):
Die History-Klasse selbst ist ein Abkömmling der abstrakten Schnittstelle CTradeHistoryI:
Durch Auswahl der gewünschten Historie können Sie deren Komponenten (Positionen für MT5 oder Aufträge für MT4) neu berechnen und eine Schnittstelle zu jeder Komponente als abstrakte Schnittstelle erhalten:
Für MT4 gibt es entsprechende History-Klassen, die ebenfalls von diesen Interfaces erben - damit ist gleichzeitig die Cross-Plattformalität gegeben - der Expert Advisor muss nicht herausfinden, wo er arbeitet, die gesamte Arbeit mit der History wird über abstrakte Interfaces erledigt.
Sieht gut aus, können wir uns auch TRACE_*** und ASSERT ansehen?
Um eine Datei auf ein anderes Terminal zu ziehen und dort abzulegen oder sie freizugeben, müssen Sie nicht nur eine Datei ziehen, sondern mehrere. Natürlich können Sie die Inludes auf alle Terminals übertragen, aber wenn Sie in einem Terminal etwas ändern oder hinzufügen, müssen Sie es in allen Terminals durch ein neues ersetzen.