AutoGraf Series 4 - MQL-Funktionen. - Seite 34

 

Wenn Sie die Datei über include einbinden, können Sie externe Variablen deklarieren und brauchen keine Parameterübergabe. Um Verwechslungen mit den Namen von Variablen und Funktionen zu vermeiden, ist es notwendig, für jede Strategie unterschiedliche Präfixe in den Namen zu verwenden.

Sorry für die Unterbrechung, aber eine so lange Agonie über eine so einfache Frage nicht gleichgültig lassen:)

 
Integer >> :

Wenn Sie die Datei über include einbinden, können Sie externe Variablen deklarieren und brauchen keine Parameterübergabe. Um Verwechslungen mit den Namen von Variablen und Funktionen zu vermeiden, ist es notwendig, für jede Strategie unterschiedliche Präfixe in den Namen zu verwenden.

Tut mir leid, aber solch lange Qualen über eine so einfache Frage lassen einen nicht gleichgültig:)

>> Danke. >> Wir werden es versuchen.

 
Integer писал(а) >>

Wenn Sie die Datei über include einbinden, können Sie externe Variablen deklarieren und brauchen keine Parameterübergabe. Um Verwechslungen mit den Namen von Variablen und Funktionen zu vermeiden, ist es notwendig, für jede Strategie unterschiedliche Präfixe in den Namen zu verwenden.

Entschuldigen Sie die Unterbrechung, aber so lange Qualen über eine so einfache Frage lassen Sie nicht gleichgültig:)

Es geht um den Import von Funktionen in den kompilierten EA (ex4).
 
SK. писал(а) >>
Es geht um den Import von Funktionen in den kompilierten EA (ex4).

Es tut mir leid, wie immer rede ich nicht über... Wie wäre es mit dem Importieren aus einer kompilierten Bibliothek?

-

Wenn das Hauptmodul kompiliert ist, dann ist es kein Problem, Inculcator mit Strategy zu verwenden, alles wird kompiliert. Wenn das Hauptmodul quelloffen ist, aber die Strategie kompiliert ist, dann können Sie einen Adapter in Form von quelloffenen Inculdnik machen.

 

Sehr geehrte Damen und Herren!

Ich erwäge das folgende Diagramm einer Verbindungskette:



Die Funktion AG_AT ist ein Schalter zur Auswahl der zu verbindenden Strategien.

 

Meine Damen und Herren!

Bitte beantworten Sie eine Frage.

Wenn die AT-Funktion kein Schalter ist, sondern Strategiecode enthält (obwohl ich weiß, dass das keinen Unterschied macht), wie unterscheidet die Anwendung dann, dass die AT-Funktion eine Anweisung (z. B. an das Terminal) an sie weitergibt und nicht selbst handelt?

Von der Beschreibung zur Anwendung:

Исполнение функции АТ связано с двумя основными возможностями.

Erstens kann die AT-Funktion selbständig handeln, d. h. Handelsaufträge erstellen und an den Server senden. Gleichzeitig kann die Funktion keine von der Anwendung empfangenen Daten (oder einen Teil dieser Daten) verarbeiten, aber sie kann ihre eigenen Berechnungen durchführen und dabei alle Möglichkeiten von MQL4 nutzen, einschließlich des Aufrufs des Terminals für die Bearbeitung der Aufträge, des Abrufs aktueller Kurse, der Berechnung von Handelskriterien, der Verwaltung grafischer Objekte usw.

Die zweite Funktion ist direkt mit der Anwendung AutoGraf 4 verbunden. Mit dieser Funktion kann die Anwendung AutoGraf 4 angewiesen werden, alle erforderlichen Instrumente mit voreingestellten Einstellungen auf bestimmten Aufträgen oder einem Preisdiagramm zu installieren, die allgemeinen Einstellungen der Anwendung zu ändern, Instrumente zu löschen, dem Benutzer Meldungen anzuzeigen usw. (Ausgabeparameter). (Ausgabeparameter).

Wenn die AT-Funktion einen Handelsauftrag generiert hat und es keine Codezeile gibt, die in der Anwendung berücksichtigt werden muss, dann handelt sie selbst. In diesem Fall sendet die Anwendung den Auftrag einfach an das Terminal, ohne dass eine Abrechnung oder Verarbeitung erfolgt.

Wenn dies der Fall ist, geht der Auftrag durch die Anwendung in den Parametern der AT-Funktion, die über die Verbindung übergeben werden.

Verstehe ich das richtig?

 
Integer писал(а) >>

Tut mir leid, so habe ich das nicht gemeint, wie immer... Wie wäre es mit dem Importieren aus einer kompilierten Bibliothek?

-

Wenn das Hauptmodul kompiliert ist, dann ist es kein Problem, Inculcator mit Strategy zu verwenden, alles wird kompiliert. Wenn das Hauptmodul quelloffen ist, aber die Strategie kompiliert ist, können Sie einen Adapter in Form eines quelloffenen Inkulators erstellen.

Sie brauchen sich nicht zu entschuldigen, die Diskussion ist in Ordnung.

--

Ein wenig Terminologie. Es gibt zwei Spiegelkonzepte - Export und Import. Sie werden in Bezug auf unser eigenes Gebiet verwendet.

Exporte werden von uns außerhalb unserer Grenzen getätigt. Zum Beispiel die Gasexporte von Russland nach Europa.

Importiert wird aus dem Ausland in unsere Grenzen. Zum Beispiel die Einfuhr von Sand aus Afrika nach Sibirien.

In diesem Fall handelt es sich um Einfuhren. Unser Gebiet ist hier der Experte AG_exp.ex4. Dies ist die Grundlage für die AutoGraf 4-Anwendung, die dem Benutzer als kompilierte Datei zur Verfügung gestellt wird. Der Quellcode des Expert Advisors wird nicht mitgeliefert (da die Anwendung kommerziell vertrieben wird, obwohl sie kostenlos ist), und daher können dem Expert Advisor keine Module über Inclide (durch den Benutzer-Programmierer) hinzugefügt werden.

--

Die Aufgabe bestand darin, dem Benutzer die Möglichkeit zu geben, seine eigenen Handelsalgorithmen, die in MQL4 geschrieben und als .ex4-Dateien von Strategien ausgeführt werden, an die AutoGraf 4-Anwendung anzuhängen. Um dieses Problem zu lösen, enthält der Expert Advisor AG_exp.ex4 Code, der die Funktion des automatischen Handels AG_AT in den Expert Advisor importiert, der sowohl als .ex4- als auch als mq4-Datei verfügbar ist. Darüber hinaus kann der Nutzer selbst entscheiden, wie er die Codes anordnet. Eine der beiden Möglichkeiten ist die bequemste:

1. Um Ihren eigenen Code direkt in die Funktion AG_AT() zu schreiben und die Datei AG_AT.mq4 mit dem gleichen Namen zu kompilieren, holen Sie sich AG_AT.eq4.

Пример: http://autograf.dp.ua/Pages/2/26/267/26711/26711_1.htm, примеры 1-15: http://autograf.dp.ua/Pages/2/26/267/2679/2679_1.htm

2. Schreiben Sie Ihren eigenen Code für die neue Funktion in eine separate Strategiedatei, z. B. My_Strategy() in der Datei My_Strategy.mq4. Schreiben Sie in AG_AT() den Import der Funktion My_Strategy() aus der Datei My_Strategy.eq4 (moderne Version). Примеры http://autograf.dp.ua/Pages/2/26/267/26712/26712_1.htm, http://autograf.dp.ua/Pages/2/26/267/26712/26712_2.htm

.

In keiner dieser Varianten ist es möglich, externe Variablen so zu schreiben, dass sie für den Benutzer verfügbar sind. Die einzige Möglichkeit, externe Variablen zu spezifizieren, besteht darin, sie während der Entwurfsphase in AG_exp.ex4 zu schreiben, was auch getan wird. Die Werte der Variablen werden über AG_AT() an den Benutzer My_Strategy() im Array Instrument übergeben. Diese Technologie wird in der neuesten Version von AutoGraf 4 verwendet und funktioniert einwandfrei.

--

Was bedeutet das alles für den Nutzer? Das bedeutet, dass jeder Benutzer seine eigene Strategie schreiben und in einer AutoGraf 4-Umgebung ausführen kann. Gleichzeitig wird seine eigene Strategie funktionieren und alle Funktionen von AutoGraf 4 werden dem Benutzer zur Verfügung stehen. Insbesondere können alle AutoGraf 4 (!)-Werkzeuge wie Klimmzüge, Überschläge, Geräusche usw. über die Strategie gesteuert werden.

Für professionelle Programmierer bietet die Technologie die Möglichkeit, eine anpassbare Kennwortvariable in die Strategiedatei zu übertragen. Das bedeutet, dass Programmierer Strategien für AutoGraf 4 schreiben und diese auf kommerzieller Basis (z.B. nur für eine bestimmte Punktzahl) vertreiben können.

 
LeonidSB писал(а) >>

Sehr geehrte Damen und Herren!

Ich erwäge das folgende Diagramm einer Verbindungskette:

Die Funktion AG_AT ist ein Schalter zur Auswahl der zu verbindenden Strategien.

Ja, das ist richtig.

 
LeonidSB писал(а) >>

Meine Damen und Herren!

Bitte beantworten Sie eine Frage.

Wenn die AT-Funktion kein Schalter ist, sondern einen Strategiecode enthält, wie unterscheidet die Anwendung dann (obwohl ich verstehe, dass es keinen Unterschied macht), dass die AT-Funktion ihr Anweisungen gibt (z. B. auf das Terminal verweist) und nicht selbst handelt?

Die Strategie kann an die Anwendung weitergegeben werden:

- Werte der gängigen einstellbaren Parameter (SL, TP, Lots, etc.)

- Parameter der zu installierenden oder zu löschenden Instrumente

Die Strategie überträgt keine Aufträge zum Öffnen und Schließen von Aufträgen an die Anwendung (dies ist in AG 5 auf der Grundlage der Fähigkeiten von MQL 5 geplant), und derzeit (in AG 4) ist dies nicht unbedingt erforderlich. Die Strategie kann und sollte Aufträge nach dem eigenen Algorithmus des Benutzers öffnen und schließen.

Wenn die AT-Funktion einen Handelsauftrag generiert und es keine Codezeile gibt, die in der Anwendung registriert werden muss, wird die Strategie selbständig handeln. In diesem Fall sendet die Anwendung den Auftrag einfach an das Terminal, ohne dass eine Abrechnung oder Verarbeitung erfolgt.

Wenn dies der Fall ist, wird der Auftrag in den über die Verknüpfung übergebenen Parametern der AT-Funktion durch die Anwendung geleitet.

Verstehe ich das richtig?

Es ist nicht ganz klar, was Sie als "eine in der Anwendung zu berücksichtigende Codezeile" bezeichnen.

Die Anwendung verbucht die Aufträge immer dann, wenn sie die Kontrolle zurückerhält. Bei jeder Iteration eines großen Zyklus wird die neu berechnete Reihe von Aufträgen an AG_AT und dann an die Strategie übergeben. Auf der Grundlage der Anzahl der Aufträge kann die Strategie die geeigneten Kontrollmaßnahmen berechnen. Die Strategieanwendung sollte häufiger aktualisiert werden, damit die Strategie immer über eine aktuelle Orderbuchführung verfügt.

Ein Handelsauftrag aus einem beliebigen Teil des Programms (Anwendung oder AG_AT oder eine Strategie) geht direkt an das MT4-Terminal und direkt an den Server. Nach der Ausführung des Auftrags auf dem Server kehrt die Steuerung auf die gleiche Weise zur Sendestelle des Handelsauftrags zurück. Während die Bestellung auf dem Server verarbeitet wird, ist alles still und wartet auf die Antwort - nichts passiert (wenn ich mich nicht irre, wird diese Technologie in MT5 geändert - wir werden nicht warten, wir werden arbeiten:)

 
Ich danke Ihnen!