Öffnen, Schließen in einem von MQL5 Wizard generierten Expert Advisor - Seite 2

 
PeretsCHILI:

Ich habe mich für die Formulierung des Problems entschieden:

open long: schneller MA kreuzt langsamen MA von unten nach oben, plus Zeitfilter

close long: schnelles МА schneidet langsames MA von oben nach unten

Offener Kurzschluss: schneller МА schneidet langsamen MA von oben und plus Zeitfilter

enge Shorts: der schnelle МА schneidet den langsamen MA von unten nach oben.

In dem zuvor erwähnten Beispiel wurden hierfür CheckOpenLong, CheckCloseLong, CheckOpenShort bzw. CheckCloseShort verwendet.

Wenn Sie zwei Module erstellen, eines mit Signalen für das Öffnen und eines für das Schließen, würde das erste LongCondition und ShortCondition verwenden, wie in der Standardmodulbibliothek. Was soll im zweiten Modul zum Abschluss verwendet werden?


Und vor allem, wo? Was bedeutet "... kreuzt ..."? Das ist das Schöne daran :)

 

Mann, ich bin nur noch verwirrter)) Im Artikel"Erstellen Sie einen Handelsroboter in 6 Schritten!" wurde gerade das erste Modul mit Signalen zur Eröffnung bei Überschreiten zweier MAs vorgestellt.

https://www.mql5.com/ru/articles/367

Was meinen Sie mit "Crossover"? Wenn die Differenz zwischen dem FastMA-SlowMA auf dem ersten Balken größer als Null und auf dem zweiten Balken kleiner als Null ist, kreuzt der schnelle МА den langsamen MA von unten nach oben. Von oben nach unten ist, wenn die Differenz zwischen dem ersten Balken kleiner als Null und dem zweiten Balken größer als Null ist.

Sie sagten, dass das Problem durch die Erstellung zweier Module mit Öffnungs- und Schließsignalen gelöst werden kann. Kann ich das Modul aus dem Artikel als Grundlage für die Erstellung eines Moduls mit Schließsignalen verwenden?

Создай торгового робота за 6 шагов!
Создай торгового робота за 6 шагов!
  • 2012.06.01
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы не знаете, как устроены торговые классы, и пугаетесь слов "Объектно-ориентированное программирование"? На самом деле вовсе не обязательно всё это знать, чтобы написать свой собственный модуль торговых сигналов - достаточно следовать простым правилам. Всё остальное сделает Мастер MQL5, и вы получите готовый торговый робот!
 
PeretsCHILI:

...

Was bedeutet "Kreuze"? Ein FastMA kreuzt einen SlowMA von unten nach oben, wenn die Differenz zwischen FastMA und SlowMA beim ersten Balken größer als Null und beim zweiten Balken kleiner als Null ist. Top-down ist, wenn die Differenz der FastMA-SlowMA-Werte beim ersten Balken kleiner als Null und beim zweiten Balken größer als Null ist.

...


Das ist gut. Wenn die Aufgabe spezifiziert ist, ist sie sehr gut.


PeretsCHILI:

...

Sie haben gesagt, dass das Problem durch die Erstellung zweier Module mit Öffnungs- und Schließsignalen gelöst werden kann. Kann das Modul mit Signalen zum Schließen als Grundlage für das Modul aus dem obigen Artikel verwendet werden?

Ich habe es nicht richtig gemeint. Das Modul für Handelssignale erzeugt Signale "Es ist Zeit, KAUFEN zu ERÖFFNEN" und "Es ist Zeit, VERKAUFEN zu ERÖFFNEN". Das heißt, sie geben ein Signal für OPEN. Der Rest ist eine Entscheidung von CExpert: eine bestehende Position zu schließen und umzukehren oder eine Position zu eröffnen.



Nehmen Sie das Modul aus dem ArtikelErstellen Sie einen Handelsroboter in 6 Schritten!- Was haben Sie für ein Problem damit?

 

Ich möchte also ein Modul mit Eröffnungssignalen schreiben, indem ich zwei MAs mit einem Zeitfilter kreuzt, und das Schließen erfolgt in folgenden Fällen: Ankunft des entgegengesetzten Signals; Erreichen des SL; Erreichen des TP. Sie können ein Modul (nennen wir es Cross2MA) gemäß dem Artikel schreiben und einen Expert Advisor mit den Modulen Cross2MA und SignalITF generieren, aber das wird nicht funktionieren, weil der SignalITF-Filter auch beim Schließen geprüft wird.

Zum Beispiel: Wir haben 2MA und SignalITF hat einen Handel nur am Montag. Ein Kaufsignal wird am Montag empfangen und eine Kaufposition wird eröffnet; wenn die Zeit am Dienstag abläuft und weder Sl noch TP erreicht wird, kommt es zu einer umgekehrten Kreuzung der 2MA und die Kaufposition sollte geschlossen werden, aber sie wird nicht geschlossen, weil es der nächste Tag der Woche ist.

So sollte es sein: gleiche Bedingungen, 2MA, Handel am Montag: Montag gibt es ein Kaufsignal, wir eröffnen eine Kaufposition, am Dienstag bekommen wir ein Verkaufssignal, aber weil es Dienstag ist, eröffnen wir keine Verkaufsposition, wir schließen nur eine Kaufposition.

Es scheint, dass es in LongCondition zwei Befehle gibt: Öffnen von Buy und Schließen von Sell. Wir müssen sie irgendwie trennen)

 

"Fliegen trennen, Koteletts trennen".


PeretsCHILI:

Ich möchte also ein Modul mit Signalen schreiben, die beim Überschreiten von zwei MAs mit einem Zeitfilter öffnen und in folgenden Fällen schließen: Ankunft des entgegengesetzten Signals; Ankunft des SL; Ankunft des TP. ...

DasModul für Handelssignale kann nur zwei Arten von Signalen anzeigen: "Es ist Zeit, KAUFEN zu eröffnen" und "Es ist Zeit, VERKAUFEN zu eröffnen".

Wir werden Stop-Loss und Take-Profit nicht kontrollieren - denn wenn eine Stop-Loss- oder Take-Profit-Position geschlossen wird, bedeutet das nur eines: Die Position ist geschlossen, und es ist an der Zeit zu sehen, was das Handelssignalmodul erzeugt (mit anderen Worten, wenn die Anzahl der Positionen Null ist, beginnen wir einen Kreis: Wir warten auf ein Signal).

Außerdem: Dies ist eine Fehlinterpretation der Funktionsweise der Module, da es kein "entgegengesetztes Signal" gibt - es kann wie folgt aussehen:

  1. wir haben eine offene BUY-Position und erhalten ein"PAY TO open SELL"-Signal
  2. oder eine offene SELL-Position haben und das Signal"PAY to BUY" erscheint
In beiden Fällen wird die aktuelle Position geschlossen und eine neue Position eröffnet.


 
Andy:
LongCondition kann nur ein Kauf öffnen und halten Sie es unabhängig von allen Bedingungen, und haben es bei Stop-Profit oder manuell schließen?

LongCondition Klasse CExpertSignal kann im Prinzip nichts "halten". CExpertSignal gibt nur zwei Signale:"Zeit zum KAUFEN" und "Zeit zum VERKAUFEN".


Möchten Sie, dass Ihr vom Assistenten erstellter Expert Advisor nie geschlossen wird? Ändern Sie dann den Eingabeparameter des Expert Advisors "// Signalschwellenwert zum Schließen [0...100]" - setzen Sie den Balken der Skalen zum Schließen auf "100".

 
Andy:
Was verschließt sie dann?

Objekt der Klasse CExpert - es fragt alle Signalmodule ab, bewertet ihre Gewichte und summiert die resultierende Punktzahl: Signalgewicht




 

Ich verstehe die Interpretation der Module. All dieses Tanzen ist, weil ich meinen Expert Advisor wie folgt optimieren werde: 1. die Optimierung von zwei MA (Periode, Verschiebung, Glättung), Stopps und Abnahmen durch Null; 2. 3. die Optimierung des Nachlaufs.

Das Problem ist folgendes: Wenn ich einen Expert Advisor mit Cross2MA und SignalITF-Filter generiere, funktioniert er wie folgt (gleiche Bedingungen, null Stops und Takeaways)

Montag, FastMA kreuzt SlowMA von unten nach oben, eröffnet Kaufposition, Position wird bis zum nächsten Montag gehalten, am nächsten Montag könnte es 3 Varianten geben:

1. der FastMA kreuzt den SlowMA von oben nach unten - die aktuelle Position wird geschlossen, die Verkaufsposition wird geöffnet.

2. Es werden keine Überschneidungen beobachtet - die Position wird beibehalten.

3. die FastMA schneidet die SlowMA von unten nach oben - die Position wird beibehalten.

Und so weiter, bis zum nächsten Montag. Zwischen den Montagen kann viel passieren, 2 MAs können mehrmals gekreuzt werden und der Kurs wird fallen.

Können wir folgendes implementieren (gleiche Bedingungen): Am Dienstag kreuzt der FastMA den SlowMA von oben nach unten, und die Verkaufsposition wird nicht eröffnet, weil es Dienstag und nicht Montag ist, sondern die aktuelle Position wird geschlossen.

 

Ich glaube, ich habe herausgefunden, wie man dies durch Anwendung von Schwellenwerten erreichen kann.

Cross2MA soll 80 und SignalITF soll 40 ergeben.

Der Schwellenwert für das Öffnen liegt bei 50, der Schwellenwert für das Schließen bei 30.

Wenn beide Module ein Signal liefern, wird das arithmetische Mittel 60 ergeben, was über dem Schwellenwert von 50 liegt, und die Position wird eröffnet.

Wenn nur Cross2MA auslöst, ist das arithmetische Mittel 40, ist es größer als 30, wird die aktuelle Position geschlossen; ist es kleiner als 50, wird keine neue Position eröffnet.

Richtig?

Außer SignalITF gibt empty_value zurück.

 
PeretsCHILI:

Ich glaube, ich habe herausgefunden, wie man dies durch Anwendung von Schwellenwerten erreichen kann.

Cross2MA soll 80 und SignalITF soll 40 ergeben.

Der Schwellenwert für das Öffnen liegt bei 50, der Schwellenwert für das Schließen bei 30.

Wenn beide Module ein Signal liefern, wird das arithmetische Mittel 60 ergeben, wenn es über dem Schwellenwert 50 liegt, wird die Position geöffnet.

Wenn nur Cross2MA auslöst, ist das arithmetische Mittel 40, ist es größer als 30, wird die aktuelle Position geschlossen; ist es kleiner als 50, wird keine neue Position eröffnet.

Richtig?

Außer SignalITF gibt empty_value zurück.


Sie sind auf dem richtigen Weg :) Alle Kontrollen für die Öffnungs- und Schließungsschwellen erfolgen über die Eingabeparameter des vom MQL5-Assistenten generierten Expert Advisors.

Grund der Beschwerde: