Bibliotheken: TradeState - Der Umschalter des Handelnmodus des Experten je nachdem, in welcher Zeit es ist.

 

TradeState - Der Umschalter des Handelnmodus des Experten je nachdem, in welcher Zeit es ist.:

Die Klasse beschränkt das Handeln des Experten durch die Zeit. Es verfügt eine flexible Konfiguration, so dass man eine beliebige Anzahl von Zeitzonen eingeben kann und das Handeln nur an bestimmten Tagen der Woche erlauben.

ZeitModusBeschreibung
10:00 - 10:01TRADE_WAITDie Öffnungszeit des Marktes. Der Moment der Öffnung wird durch eine hohe Volatilität und starken Preissteigerungen geprägt. Die Handelsaktivitäten in diesen Momenten sind mit einem hohen Risiko verbunden, so dass ist es die ersten Minuten des Handels besser, auf das Handeln zu verzichten, weswegen man den Experten in diesem Moment lieber um das Wartungsmodus umstellen soll.
14:00 - 14:03TRADE_WAITDie Einführungszeit der Zwischen-Clearing. Während dieser Zeit funktioniert der Markt nicht, deshalb muss der Handelsexperte auch im Modus TRADE_WAIT gesetzt werden.
18:45 - 18:49TRADE_WAITDie Einführungszeit der Haupt-Clearing. In diesem Moment ist der Markt auch geschlossen und das Handeln ist nicht gestattet. Es gilt das Modus TRADE_WAIT.
23:50 - 9:59TRADE_WAITDer Markt ist geschlossen, das Handeln ist nicht gestattet. Das Modus des Experten TRADE_WAIT.
Freitag, von 15:00TRADE_NO_NEW_ENTRYFreitag — der letzte Handelstag in der Woche. Um keine offenen Positionen am Wochenende zu lassen, müssen Sie sie am letzten Tag des Handels schließen. Deshalb macht es keinen Sinn, um neue Positionen am letzten Handelstag zu öffnen, wenn sie sowieso in ein paar Stunden wieder geschlossen werden müssen. Eben zu diesen Zwecken wird das Modus NO_NEW_ENTRY verwendet. Jeden Freitag, von 15:00 Uhr, werden neue Eingangssignale abgelehnt. Die geltenden Positionen können nur geschlossen werden.
Freitag, 23:40-23:50TRADE_STOPDie Zeit, die vor der Schließung des Marktes auftritt. Zu dieser Zeit müssen alle Positionen geschlossen werden. Der Experte im Modus TRADE_STOP schließt seine offene Position um 23.40 Uhr und schaltet den Wartungsmodus.
Samstag, SonntagTRADE_WAITAm Wochenende wird keine Handeln durchgeführt. Wegen der Verschiebung einiger Feiertage an Samstagen können sie Arbeitstage werden. An diesen Tagen arbeitet man an der Börse. Dies passiert sehr selten, und diese "Arbeitstage" sollten aufgrund der geringen Volatilität und der statistischen Unsicherheit vermieden werden. Das Handeln an diesen Tagen muss verboten sein, unabhängig davon, ob es ein Arbeitstag ist oder nicht.

 

Autor: Vasiliy Sokolov

 

Gestohlen. Jetzt können Sie einen Zeitplan für die Woche erstellen.

Hier ist eine Situation. Ich habe lange gebraucht, um einen Wochenplan zu erstellen. Alles funktioniert. Plötzlich, hallo, Silvester. Feiertage. Wir brauchen einen Zeitplan, der die Feiertage berücksichtigt. Es ist schade, den Wochenplan zu zerstören. Lösung: Ich erstelle eine zusätzliche Instanz des Wochenplans mit dem Verbot des Handels an Feiertagen. Frage: Soll ich m_state auf die Größe des Jahrhunderts des Jahres erweitern? Oder wie lösen Sie dieses Problem über eine Woche hinaus?

 
Konstantin Gruzdev:

Gestohlen. Jetzt können Sie einen Zeitplan für die Woche erstellen.

Hier ist eine Situation. Ich habe lange gebraucht, um einen Wochenplan zu erstellen. Alles funktioniert. Plötzlich, hallo, Silvester. Feiertage. Wir brauchen einen Zeitplan, der die Feiertage berücksichtigt. Es ist schade, den Wochenplan zu zerstören. Lösung: Ich erstelle eine zusätzliche Instanz des Wochenplans mit dem Verbot des Handels an Feiertagen. Frage: Sollte ich m_state auf die Größe des Jahres Jahrhunderts erweitern? Oder wie lösen Sie dieses Problem über eine Woche hinaus?

Ja, es gibt eine solche Aufgabe. Ich bin noch am Überlegen, wie ich das machen soll. Ich bin noch nicht auf eine schöne Lösung gekommen. Aber ich habe eine Vorstellung davon, wie sie aussehen sollte.

  1. Die Schnittstelle SetTradeState(...) selbst legt nahe, dass, wenn wir das Datum in den Variablen time_begin und time_end im Format D'hh:mm' setzen, dieser Modus die ganze Zeit über für alle Tage gilt, die die day_of_week-Bedingung erfüllen. Wird das Datum spezifisch gesetzt, indem Jahr, Monat und Tag im Format D'YYYYY.MM.DD hh:mm' angegeben werden, dann muss der gesetzte Modus speziell auf diesen Zeitbereich wirken.
  2. Offensichtlich muss die zweite Zeitvariante in einem anderen Datentyp untergebracht werden (es kann sich um ein Array von Strukturen oder etwas anderes handeln). Dann müssen wir den Handelsmodus auf zwei verschiedene Arten in zwei verschiedenen Sammlungen suchen und die Modi vergleichen, um zu entscheiden, welcher Modus wirken soll. In diesem Fall sollte die GetTradeState-Schnittstelle unverändert bleiben.

Zu den Feinheiten gehört, dass Sie das Laden von Handelszuständen aus XML implementieren können. Sie können alle Feiertage einmal in XML eingeben, und zwar für ein Jahr im Voraus, und dann werden sie automatisch in alle Expert Advisors geladen. Dies ist recht einfach, da es in MQL5 bereits eine ausgezeichnete Bibliothek für die Arbeit mit XML gibt.
 

+5

day_of_week - häufiger ist es eine Gruppe von Tagen: PN..PT oder "außer Freitag" oder "außer Montag und Freitag".

 
Alexander Puzanov:

+5

day_of_week - häufiger ist es eine Gruppe von Tagen: PN..PT oder "außer Freitag" oder "außer Montag und Freitag".

Die Gruppe von Tagen wird wie folgt gebildet: Nehmen wir an, wir wollen montags, dienstags und freitags handeln. Dann verbieten wir den Handel am Mittwoch und Donnerstag:

//+------------------------------------------------------------------+
//|TestTradeState.mq5 |
//|Copyright 2015, Vasiliy Sokolov. |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Vasiliy Sokolov."
#property link      "http://www.mql5.com"
#property version   "1.00"
#include <Strategy\TradeState.mqh>

CTradeState TradeState(TRADE_BUY_AND_SELL);  // Standardmodus Kaufen und Verkaufen einstellen
//+------------------------------------------------------------------+
//| Skript-Programmstartfunktion|
//+------------------------------------------------------------------+
void OnStart()
{
   TradeState.SetTradeState(D'00:00', D'23:59', WEDNESDAY, TRADE_STOP);
   TradeState.SetTradeState(D'00:00', D'23:59', THURSDAY, TRADE_STOP);
}
D.h. jeder Wochentag wird einzeln und minutengenau konfiguriert.
 
Ich hab's.
 
Der mql5 Master sieht es nicht, warum?
 
Ich denke, wir sollten den Bereich des typischen Spreads einführen. Während des Rollover und der ersten Stunde danach kann sich der Spread zum Beispiel um das 2-3fache erhöhen. Nachtskalierer könnten eine solche Ausweitung verarbeiten und genauer handeln.
Ich implementiere dies in meinen Expert Advisors, allerdings nicht in der Klasse.
 

wie ersetzt man D'00:00' durch normale Ziffern 00:00 ?????? datetime ist lästig(((((

In TradeState.SetTradeState(D'00:00:00', D'23:59', WEDNESDAY, TRADE_STOP);

 
ponochka:

wie ändert man D'00:00' in die üblichen Ziffern 00:00 ????? datetime is annoying((((((

In TradeState.SetTradeState(D'00:00:00', D'23:59', WEDNESDAY, TRADE_STOP);

bitte:

TradeState.SetTradeState(0, 86399, WEDNESDAY, TRADE_STOP);
 
#include <Strategy\TradeState.mqh>
CTradeState TradeState(TRADE_BUY_AND_SELL);

void OnTick()
  {
     ......здесь работаем с закрытием (тралом и прочим)....
 TradeState.SetTradeState(ontime, offtime, ALL_DAYS_OF_WEEK, TRADE_NO_NEW_ENTRY);
     ......остальной код, в частности для открытия....
  }

die richtige Stelle des Codes?

Ich entschuldige mich im Voraus für dumme Fragen!!! ich bin ein Neuling)))))))