Fragen zum MQL5-Assistenten und zur Standardbibliothek der Handelsklassen - Seite 10

 
Sevrer:

Hallo.

Ich habe mich entschlossen, mein eigenes Signalmodul zu schreiben, rein aus kognitiven Gründen. Ich bin mit einem Problem konfrontiert worden. Ich habe verstanden, dass dies über CExpertSignal::OpenLongParams(...) erfolgen kann. Aber ich habe ein Problem - mein Tester warnt vor einem ungültigen Ablaufdatum. Nachdem ich mich in den Quellcode vertieft habe, habe ich festgestellt, dass wir außerORDER_TIME_SPECIFIED keinen anderen Zeittyp erhalten können und wir ORDER_TIME_GTC wünschen.

Ich habe bisher einen klugen Zug gemacht, aber er ist nicht ganz richtig. Ich habe die Funktion in der Bibliothek korrigiert:

Was können Sie mir raten?

Hallo.

Sie haben völlig Recht. Ich habe die Nullverfallzeiten nicht berücksichtigt.

Ihre Lösung ist gut. Ich werde entsprechende Änderungen an der Standardbibliothek vornehmen.

Ich danke Ihnen.

 
uncleVic:

Hallo.

Sie haben völlig Recht. Ich habe den Null-Ablauf nicht berücksichtigt.

Ihre Lösung ist gut. Ich werde entsprechende Änderungen an der Standardbibliothek vornehmen.

Ich danke Ihnen.

Das wird schon werden, aber in der Zwischenzeit habe ich in dieser Situation einen anderen Ausweg gefunden, den richtigen :) Indem ich eine von CExpert geerbte Klasse erstellt habe, in der ich die Funktionen CheckOpenLong() und CheckOpenShort() überschrieben habe, und ich habe dort Korrekturen dieser Art vorgenommen:

        if (expiration == TimeCurrent() || expiration == 0)
        {
                m_expiration = 0;
                m_trade.SetOrderTypeTime(ORDER_TIME_GTC);
        }
        else
        {
              if(!m_trade.SetOrderExpiration(expiration))
        	{
         		 m_expiration=expiration;
        	}
        }
 
Sevrer:

Aber in der Zwischenzeit habe ich einen anderen Ausweg aus dieser Situation gefunden - den richtigen :) Indem ich eine von CExpert geerbte Klasse erstellt habe, in der ich die Funktionen CheckOpenLong() und CheckOpenShort() überschrieben habe, und dort Korrekturen dieser Art vorgenommen habe:


Die Vererbung ist der richtige Ansatz.
 

Bitte erklären Sie die Logik des Parameters Expert_EveryTick

Wenn Expert_EveryTick=true, verarbeitet der Expert Advisor jeden Tick? D.h. es prüft die Ein- und Ausstiegsbedingungen und die Positionsverfolgung (Trawl) bei jedem neuen Tick, richtig?

Und wenn Expert_EveryTick=fasle - nur beim ersten Tick eines neuen Balkens? Und der Trail wird auch nur beim ersten Tick ausgelöst?

Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 
mr.Taras:

Bitte erklären Sie die Logik des Parameters Expert_EveryTick

Wenn Expert_EveryTick=true, verarbeitet der Expert Advisor jeden Tick? D.h. es prüft die Ein- und Ausstiegsbedingungen und die Positionsverfolgung (Trawl) bei jedem neuen Tick, richtig?

Und wenn Expert_EveryTick=fasle - nur beim ersten Tick eines neuen Balkens? Und das Schleppnetz wird auch nur beim ersten Tick ausgelöst?


Ja, Sie haben richtig verstanden.
 

Weitere Fragen zur Logik des Expert Advisors:


es gibt eine offene Position, z.B. Kauf, und ein festes Los, z.B. 1.

Es gibt ein Signal an die andere Seite, zu verkaufen.

Was wird der EA tun? werden zwei Geschäfte von 1 Lot jeder (die erste wird um 1 Lot schließen) oder ein Geschäft von 2 Lots? gibt es einen Unterschied zwischen gewinnen und verlieren den aktuellen Kauf?


Wenn es eine Kaufposition und wieder ein Kaufsignal gibt, welche Methoden sollte ich neu definieren, um sie zu schließen?

 
mr.Taras:

Weitere Fragen zur Logik des Expert Advisors:


1. Es gibt eine offene Position, z.B. Kauf, und ein festes Los, z.B. 1.

gibt es ein Signal an die andere Seite, zu verkaufen.

Was sollte der Expert Advisor tun? wird er zwei Geschäfte von je 1 Lot eröffnen (das erste wird um 1 Lot geschlossen) oder ein Geschäft von 2 Lots? gibt es einen Unterschied, wenn der aktuelle Kauf im roten Bereich oder im Überschuss ist?


2. der EA wird nicht selbst lang gehen, d.h. wenn es eine Kaufposition und wieder ein Signal zu kaufen? welche Methoden sollte ich neu definieren, damit es lang gehen, CheckOpenLong()?


1. zwei Schwellenwerte für die Auslösung (Einstellungen des Expert Advisors) Wenn der Schwellenwert für Close überschritten wird, wird die Position einfach geschlossen, wenn zwei Schwellenwerte überschritten werden (Close und Open), wird die Position umgekehrt. -/+ Es gibt keinen Unterschied.

2. die Verarbeitungsmethode

 
uncleVic:

1. zwei Triggerschwellen (EA-Einstellungen). Wird die Close-Schwelle überschritten, wird die Position einfach geschlossen. Werden zwei Schwellenwerte überschritten (Close und Open), wird die Position umgekehrt. -/+ Es gibt keinen Unterschied.

2. die Verarbeitungsmethode

Die Schwellenwerte für "Close" und "Open" sind das Ergebnis einer "Abstimmung". Was liefern ShortCondition() oder LongCondition() im Signalmodul?

 
mr.Taras:

Sind die Schwellenwerte für "Close" und "Open" das Ergebnis der "Abstimmung" darüber, was ShortCondition() oder LongCondition() im Signalmodul zurückgibt?

Schwellenwerte sind Parameter (Signal_ThresholdOpen und Signal_ThresholdClose), mit denen das Ergebnis der "Abstimmung" verglichen wird.
 

Drei Fragen:

  1. Wie kann man erreichen, dass das Signalmodul nur bei Eröffnungskursen und nicht bei jedem Tick funktioniert?
  2. Wie erhalte ich die Abstimmungswerte des Signalmoduls im Modul Positionsbestimmung? Sie müssen sich auf ein bereits berechnetes Signal stützen und nicht ein weiteres Signalmodul dazu erfinden.
  3. Wie erhält man die Abstimmungswerte des Alarmmoduls im Geld- und Risikomanagementmodul? Sie müssen die Volumina gemäß den bereits berechneten Handelssignalen öffnen und nicht ein weiteres Signalmodul für die Volumenberechnung zusammenstellen.

Theoretisch können wir den EA natürlich auch mit dem Assistenten erstellen und dann all diese Funktionen manuell zum Code hinzufügen. Es ist jedoch wünschenswert, dass all dies in Form von Standardmethoden implementiert wurde, d. h. für Dummies, die den Assistenten verwenden möchten, damit sie nicht in den Code einsteigen und ihn bearbeiten müssen, wenn sie z. B. ein Signalmodul durch ein anderes ersetzen möchten.