Diskussion zum Artikel "Wie man den Berechnungsblock eines Indikators in den Code eines Expert Advisors überträgt"
Danke, gut gemacht.
bool CIndicator::LoadHistory(void) { datetime cur_date=(datetime)SeriesInfoInteger(m_Symbol,m_Timeframe,SERIES_LASTBAR_DATE); if(m_last_load>=cur_date && ArraySize(m_source_data)>=m_history_len) return true;
Aus diesem Code stellt sich heraus, dass es keine Neuberechnung auf Ticks sein wird. Nur beim Erscheinen neuer Balken. Oder habe ich die Implementierung nicht gut verstanden?
Vielen Dank, gut gemacht.
Aus diesem Code geht hervor, dass es keine Neuberechnung bei Ticks gibt. Nur beim Erscheinen eines neuen Balkens. Oder habe ich die Implementierung nicht richtig verstanden?
Ja, in dem Artikel wird gleich gesagt, dass die Berechnung auf geschlossenen Candlesticks basiert. Um die Berechnung für jeden Tick vorzunehmen, muss man die Prüfung der Eröffnung eines neuen Balkens aus dem Code entfernen und die Historie vom Balken "0" und nicht vom Balken "1" kopieren, wie es jetzt der Fall ist.
Es ist schade, dass sie den Vergleich nicht im Tick-Modus gemacht haben.
Außerdem können wir in diesem Modus nicht ohne CopyTicks in der Implementierung auskommen, damit die "Indikatoren" richtig funktionieren.
Schade, dass sie den Vergleich nicht in Potic gemacht haben.
Außerdem kann man in diesem Modus nicht ohne CopyTicks in der Implementierung auskommen, damit die "Indikatoren" richtig funktionieren.
Ich weiß nicht, über welchen Indikator wir sprechen. Aber normalerweise arbeiten die Indikatoren mit den Bar-Preisen und zeichnen den letzten Bar neu. In diesem Fall können Sie keine CopyTicks laden, sondern das gleiche Laden der historischen Daten verwenden. In diesem Fall müssen Sie jedoch die Neuberechnung des letzten Wertes in der Klasse hinzufügen.
Ich weiß nicht, über welchen Indikator wir sprechen. Aber in der Regel Indikatoren arbeiten auf bar Preise und neu zu zeichnen, die letzte Bar. In diesem Fall können Sie nicht CopyTicks laden, sondern das gleiche Laden von historischen Daten verwenden. In diesem Fall müssen Sie jedoch die Neuberechnung des letzten Wertes in die Klasse aufnehmen.
Der in den Expert Advisor integrierte Indikator überspringt Ticks. Um dies zu verhindern, benötigen wir CopyTicks, um Ticks zwischen benachbarten Aufrufen OnTick, OnTimer usw. zu erhalten.
Andernfalls können Sie ernsthaft Informationen verlieren.
Handelsaufträgen (mehrmals pro Minute) und 100 ms Ping im Standard-Betriebsmodus verliert ~5% der Ticks.
Der in den EA integrierte Indikator überspringt Ticks. Um dies zu verhindern, benötigen wir CopyTicks, um Ticks zwischen benachbarten Aufrufen OnTick, OnTimer, etc. zu erhalten.
Andernfalls können Sie ernsthaft Informationen verlieren
Ja, es besteht ein großes Risiko, Tick-Informationen zu verlieren. Aber die Frage ist, welchen Wert diese Informationen für die Strategie haben. Schließlich berechnet ein gewöhnlicher Indikator (wie der in diesem Artikel vorgestellte) Balken, nicht Ticks. Und am Ende werden nur die endgültigen Candlestick-Daten verwendet, Zwischen-Ticks werden einfach "überschrieben". Eine andere Frage ist, ob Sie Tick-Informationen in Ihrem Indikator speichern und verwenden, d. h. den Indikator nicht nach Balken, sondern nach Ticks aufbauen.
Hallo! Vielen Dank für Ihren Artikel.
Sie schreiben: "Am Anfang des Indikatorcodes werden Arrays-Puffer für den Datenaustausch mit anderen Programmen deklariert. Bei diesen Arrays handelt es sich um Zeitreihen, deren Elemente eine Verbindung zu Preisbalken haben. Diese Verbindung wird direkt vom Terminal unterstützt. Der Indikator speichert die Ergebnisse der Berechnungen in diesen Arrays, ohne sich um die Änderung ihrer Größe und die Übertragung von Daten zu kümmern, wenn eine neue Kerze erscheint. Im Expert Advisor gibt es keine derartigen Arrays, d.h. wenn Sie den Code des Indikators in den Expert Advisor übertragen, müssen Sie sie selbst erstellen. Neben dem eigentlichen Berechnungsteil ist es notwendig, die Verbindung zwischen den Array-Elementen und den Balken im Chart zu organisieren ".
Leider ist in den Testbeispielen gerade die Organisation der Verbindung zwischen Array-Elementen und Balken im Chart nicht klar und nicht sichtbar, alles andere ist klar. Wie genau kann man die notwendigen Punkte (oder Symbole) im Diagramm anordnen und sehen? Ich würde diesen Punkt gerne klären. Nochmals vielen Dank!!!
Hallo, ich danke Ihnen für Ihren Artikel.
Sie schreiben: "Am Anfang des Indikatorcodes werden Arrays-Puffer für den Datenaustausch mit anderen Programmen deklariert. Bei diesen Arrays handelt es sich um Zeitreihen, deren Elemente eine Verbindung zu Preisbalken haben. Diese Verbindung wird direkt vom Terminal unterstützt. Der Indikator speichert die Ergebnisse der Berechnungen in diesen Arrays, ohne sich um die Änderung ihrer Größe und die Übertragung von Daten zu kümmern, wenn eine neue Kerze erscheint. Im Expert Advisor gibt es keine derartigen Arrays, was bedeutet, dass Sie sie bei der Übertragung des Indikatorcodes in den Expert Advisor erstellen müssen. Neben dem eigentlichen Berechnungsteil ist es notwendig, die Verbindung zwischen den Array-Elementen und den Balken im Chart zu organisieren.
Leider ist in den Testbeispielen gerade die Organisation der Verbindung zwischen Array-Elementen und Balken im Chart nicht klar und nicht sichtbar, alles andere ist klar. Wie genau kann man die notwendigen Punkte (oder Symbole) im Diagramm anordnen und sehen? Ich würde diesen Punkt gerne klären. Nochmals vielen Dank!!!
Guten Tag, Yuri.
Zunächst einmal möchte ich mich für die verspätete Antwort entschuldigen. In MQL ist es üblich, beim Zugriff auf Zeitreihen den aktuellen Balken mit dem Index "0" zu betrachten, und historische Daten mit steigendem Index. Sie können mehr darüber in der Dokumentation unter dem Link lesen. Ein ähnlicher Ansatz wurde beim Zugriff auf die berechneten Daten des Indikators gewählt. D.h. beim Zugriff auf die Daten der letzten geschlossenen Kerze geben Sie zu jedem Zeitpunkt den Index "1" an.
Hallo, zunächst einmal herzlichen Glückwunsch zu Ihrem Artikel.
Ich habe eine einfache Frage.
In einem Artikel wurde ein Indikator mit einem einzigen Puffer verwendet. Wie geht man bei Indikatoren mit mehr als 1 Puffer vor? Müssen wir für jeden Indikator eine CArrayBuffer-Klasse erstellen?
Haben Sie irgendwelche Beispiele?
Vielen Dank für Ihre Hilfe.

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel Wie man den Berechnungsblock eines Indikators in den Code eines Expert Advisors überträgt :
Für die Übertragung des Codes eines Indikators in einen Expert Advisor kann es unterschiedliche Gründe geben. Aber wie kann man Vor- und Nachteile eines solchen Ansatzes bewerten? In diesem Artikel wird eine Technologie für die Übertragung des Codes eines Indikators in einen Expert Advisor vorgestellt. Es wurden mehrere Experimente hinsichtlich der Arbeitsgeschwindigkeit des Expert Advisors durchgeführt.
Die Testergebnisse haben eine Zeiteinsparung bei der Verwendung der Berechnungen im Expert Advisor gezeigt. Besonders zeitaufwendig ist es, die Daten von einem benutzerdefinierten Indikator zu erhalten.
Bitte beachten: im Experiment wurde der МА nach dem Close-Preis berechnet. Der Berechnungsblock eines solchen Indikators ist relativ einfach. Es stellt sich die Frage: wird sich die Situation bei komplizierteren Berechnungen ändern? Finden wir es heraus, indem wir noch ein Experiment durchführen.
Autor: Dmitriy Gizlyk