Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Facebook!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Ansichten:
47
Rating:
(8)
Veröffentlicht:
Aktualisiert:
\MQL5\Include\Forester\
MQL5 Freelance Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Bibliothek für die Kontrolle von Handelssitzungen. Beim Start zählt sie die Zeiten der Handelssitzungen für alle 7 Tage der Woche (es kann Kryptowährungshandel am Samstag und Sonntag geben), bis zu 10 Sitzungen pro Tag. Dann können Sie in OnTick() Überprüfungen durchführen, und wenn ein Tick außerhalb der Handelssitzung kam, können Sie die weitere Verarbeitung davon beenden.

Beispiel für die Verwendung:

//+------------------------------------------------------------------+
//|testControl_Trade_Sessions.mq5 |
//+------------------------------------------------------------------+
// #define LoadSessionFromInputs // Lesen von Sitzungen aus Eingaben
#include <Forester\Control_Trade_Sessions.mqh> // Verbindung des Codes für die Steuerung der Handelssitzung

int OnInit()  {   return(INIT_SUCCEEDED);  }

void OnTick() {
  static TRADE_SESSIONS TradeSession(_Symbol);// Ermittelt die Eröffnungs- und Schließungszeiten des Marktes und speichert sie in Arrays nach Wochentagen. Wird einmal beim Starten des Expert Advisors aufgerufen (siehe Statik).
  if(!TradeSession.isSessionTrade(TimeCurrent())){Print("Market closed. OnTick return"); return;}
  
  // Ihre Handlungen
  }

Das Ergebnis ist ein Ausdruck wie dieser:

2022.01.10 00:05:00   Day: 0 Trade sessions: 1: 00:00-00:00 - это воскресенье
2022.01.10 00:05:00   Day: 1 Trade sessions: 1: 00:15-23:55
2022.01.10 00:05:00   Day: 2 Trade sessions: 1: 00:15-23:55
2022.01.10 00:05:00   Day: 3 Trade sessions: 1: 00:15-23:55
2022.01.10 00:05:00   Day: 4 Trade sessions: 1: 00:15-23:55
2022.01.10 00:05:00   Day: 5 Trade sessions: 1: 00:15-23:55
2022.01.10 00:05:00   Day: 6 Trade sessions: 1: 00:00-00:00
2022.05.30 00:05:00   Market closed. OnTick return
2022.05.30 00:05:01   Market closed. OnTick return
...
2022.05.30 00:14:36   Market closed. OnTick return
2022.05.30 00:14:40   Market closed. OnTick return
2022.05.30 23:55:00   Market closed. OnTick return
2022.05.30 23:55:00   Market closed. OnTick return
...
2022.05.30 23:59:30   Market closed. OnTick return
2022.05.31 00:00:01   Market closed. OnTick return
...

Der Code wurde während der Arbeit an einem der Projekte erstellt, ich habe mich entschlossen, ihn in eine Bibliothek auszulagern, um ihn mit jedem anderen Projekt verbinden zu können.
Neue MQL5-Funktionen werden verwendet, um die Handelssitzung für jeden Tag, einschließlich der Wochenenden, zu lesen.
Arbeitet so schnell wie möglich, es wird nur 1 Prüfung für jeden Tick innerhalb der Handelssitzung durchgeführt:
.
if(time < this.NextTradeStop ) { return true; }
Dabei ist NextTradeStop die Endzeit der aktuellen Handelssitzung.

Bei jedem Tick außerhalb der Börsensitzung wird ebenfalls 1 Prüfung durchgeführt:
if(time < this.NextTradeStart ) { return false; }
Nur beim Übergang zwischen den Sitzungen wird auf die Arrays zugegriffen, um die Zeit der nächsten Sitzung zu ermitteln.

Auf meinem DC dauert die Handelssitzung beispielsweise von 00:15 bis 23:55. Mit dem ersten Tick nach 00:15 wird NextTradeStop auf 23:55 gesetzt und dann wird den ganzen Tag lang nur diese Bedingung geprüft.

Ihre Handelssitzungen

Sie können die Zeit der Handelssitzungen auch manuell festlegen. Um diese Option zu aktivieren, fügen Sie die Zeile
hinzu.
#define  LoadSessionFromInputs // Sitzungen aus Eingaben lesen

Es werden 7 Eingänge für die Eingabe von Handelssitzungen nach Wochentagen erstellt.

Geben Sie die Sitzungszeiten ohne Leerzeichen ein, ausschließlich mit : - und ,

In der Registerkarte Parameter sieht das so aus:



Und so wird es im Protokoll ausgegeben:
TradeSessionsMonday=00:15-17:45,17:55-23:55
TradeSessionsTuesday=00:15-23:55
TradeSessionsWednesday=00:10-17:45,17:55-23:00,23:05-23:55
TradeSessionsThursday=00:15-17:45,17:55-23:55
TradeSessionsFriday=00:15-23:55
TradeSessionsSaturday=00:15-23:55
TradeSessionsSunday=
EURUSD : echte Ticks beginnen ab 2022.05.10 00:00:00, jede Tick-Generierung verwendet
2022.01.10 00:05:00 Tag: 1 Handelssitzungen: 1: 00:15-17:45, 2: 17:55-23:55
2022.01.10 00:05:00 Tag: 2 Handelssitzungen: 1: 00:15-23:55
2022.01.10 00:05:00 Tag: 3 Handelssitzungen: 1: 00:10-17:45, 2: 17:55-23:00, 3: 23:05-23:55
2022.01.10 00:05:00 Tag: 4 Handelssitzungen: 1: 00:15-17:45, 2: 17:55-23:55
2022.01.10 00:05:00 Tag: 5 Handelssitzungen: 1: 00:15-23:55
2022.01.10 00:05:00 Tag: 6 Handelssitzungen: 1: 00:15-23:55
2022.01.10 00:05:00 Markt geschlossen. OnTick Rückgabe
...

Wenn die Endzeit der Sitzung kürzer ist als die Startzeit, z. B. 20:00-8:00, dann wird die Sitzung bis 8:00 des nächsten Tages fortgesetzt. Dies kann nützlich sein, wenn die Handelssitzung in einer anderen Zeitzone liegt als die Serverzeit.

Die Zeit der Handelssitzungen kann auch im Code ohne Eingaben angegeben werden. Zu diesem Zweck wurde die Funktion LoadFromInputs() geschaffen. Sie kann ohne Inputs, sondern direkt aus dem Code mit einem String-Array aufgerufen werden, wie im Beispiel.

string s=["00:15-17:45,17:55-23:55","00:00-24:00",....] 
void LoadFromInputs(string &s[]){...}


Wenn der Expert Advisor mehrwährungsfähig ist und verschiedene Instrumente unterschiedliche Handelssitzungszeiten haben, können Sie eine separate Instanz von TRADE_SESSIONS für jedes Instrument erstellen und LoadFromInputs() mit Sitzungsdaten aufrufen und isSessionTrade() überprüfen. Zu diesem Zweck müssen Sie den Code ähnlich wie in diesem Beispiel ändern.

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/48059

Candle Fitness Candle Fitness

Das Candlestick-Fitness-Konzept wird bei der Codierung von HFT-Algos auf der Grundlage von Populationsoptimierungsalgorithmen verwendet.

PHSB-Screener PHSB-Screener

Dieser Screener wurde entwickelt, um den Prozess der Suche nach Vermögenswerten, die zu vergünstigten Preisen gehandelt werden, zu vereinfachen. Die anfängliche Nutzung kann aufgrund des Ladevorgangs der Daten für alle ausgewählten Instrumente etwas länger dauern. Das Tool kann alle verfügbaren Broker-Assets scannen oder auf bestimmte Assetklassen beschränkt werden.

Moving Averages-14 different types Moving Averages-14 different types

Dies ist ein Indikator zur Berechnung von 14 Arten von gleitenden Durchschnitten auf Basis des Schlusskurses.

Confluence Index Stoch+RSI+MACD Confluence Index Stoch+RSI+MACD

MULTI TF Confluence Index Stoch+RSI+MACD