Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Telegram !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Vues:
62
Note:
(8)
Publié:
Mise à jour:
\MQL5\Include\Forester\
MQL5 Freelance Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance

Bibliothèque pour le contrôle des sessions de trading. Au démarrage, elle compte les heures des sessions de négociation pour les 7 jours de la semaine (il peut y avoir des échanges de crypto-monnaies le samedi et le dimanche), jusqu'à 10 sessions par jour. Ensuite, dans OnTick(), vous pouvez effectuer des vérifications, et si un tick est arrivé en dehors de la session de trading, vous pouvez quitter le traitement ultérieur de celui-ci.

Exemple d'utilisation :

//+------------------------------------------------------------------+
//|testControl_Trade_Sessions.mq5 |
//+------------------------------------------------------------------+
// #define LoadSessionFromInputs // Lire les sessions à partir des entrées
#include <Forester\Control_Trade_Sessions.mqh> // connexion du code pour le contrôle de la session de négociation

int OnInit()  {   return(INIT_SUCCEEDED);  }

void OnTick() {
  static TRADE_SESSIONS TradeSession(_Symbol);// récupère les heures d'ouverture et de fermeture du marché et les enregistre dans des tableaux par jour de la semaine. Appelé une fois lors du lancement du Conseiller Expert (voir statique).
  if(!TradeSession.isSessionTrade(TimeCurrent())){Print("Market closed. OnTick return"); return;}
  
  // vos actions
  }

Le résultat est une impression comme celle-ci :

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
...

Le code a été créé en travaillant sur l'un des projets, j'ai décidé de le séparer dans une bibliothèque pour le connecter à n'importe quel autre projet.
De nouvelles fonctions MQL5 sont utilisées pour lire la session de négociation pour n'importe quel jour, y compris les week-ends.
Travaille aussi vite que possible, seulement 1 vérification est faite sur chaque tick à l'intérieur de la session de négociation :
.
if(time < this.NextTradeStop ) { return true; }
Où NextTradeStop est l'heure de fin de la séance boursière actuelle.

Une vérification est également effectuée pour chaque tick en dehors de la séance boursière :
if(time < this.NextTradeStart ) { return false; }
Ce n'est qu'au moment de la transition entre les sessions que l'on accède aux tableaux pour obtenir l'heure de la prochaine session.

Par exemple, sur mon DC, la session de négociation s'étend de 00:15 à 23:55. Avec le premier tick après 00:15 NextTradeStop sera fixé à 23:55 et ensuite seulement cette condition sera vérifiée toute la journée.

Vos sessions detrading

Vous pouvez aussi spécifier l'heure des sessions de trading manuellement. Pour activer cette option, ajoutez la ligne
.
#define  LoadSessionFromInputs // Lire les sessions à partir des entrées

Elle créera 7 sinputs pour entrer les sessions de trading par jour de la semaine.

Saisissez les heures des séances sans espace, strictement avec : - et ,

Voici à quoi cela ressemble dans l'onglet des paramètres :



Et voici comment cela sera affiché dans le journal :
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 : les ticks réels commencent à partir de 2022.05.10 00:00:00, chaque génération de tick utilisée
2022.01.10 00:05:00 Day : 1 Trade sessions : 1 : 00:15-17:45, 2 : 17:55-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:10-17:45, 2 : 17:55-23:00, 3 : 23:05-23:55
2022.01.10 00:05:00 Jour : 4 séances de travail : 1 : 00:15-17:45, 2 : 17:55-23:55
2022.01.10 00:05:00 Jour : 5 séances de négociation : 1 : 00:15-23:55
2022.01.10 00:05:00 Jour : 6 séances de négociation : 1 : 00:15-23:55
2022.01.10 00:05:00 Marché fermé. OnTick return
...

Si l'heure de fin de la session est inférieure à l'heure de début, par exemple 20:00-8:00, la session se poursuivra jusqu'à 8:00 le jour suivant. Cela peut s'avérer utile lorsque la session de négociation se déroule dans un fuseau horaire différent de celui du serveur.

L'heure des sessions de négociation peut également être spécifiée dans le code sans entrées. La fonction LoadFromInputs() est créée à cet effet. Elle peut être appelée sans entrées, mais directement à partir du code avec un tableau de chaînes, comme dans l'exemple.

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


Si le Conseiller Expert est multidevise et que les différents instruments ont des sessions de trading différentes, vous pouvez créer une instance séparée de TRADE_SESSIONS pour chaque instrument et appeler LoadFromInputs() avec les données de session et vérifier isSessionTrade(). Pour ce faire, vous devrez modifier le code comme dans cet exemple.

Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/48059

Tandem Tandem

Opérations par paire. Couverture. Stratégies neutres par rapport au marché

SetSellStopLimitOrder SetSellStopLimitOrder

Ce script est conçu pour définir l'ordre SellStopLimit avec des valeurs fixes de niveaux de déclenchement, de niveau de stop loss et de niveau de take profit en pips à partir du prix actuel et des prix de déclenchement de l'ordre.

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

Il s'agit d'un indicateur permettant de calculer 14 types de moyennes mobiles sur la base du cours de clôture.

EMDcotir (Décomposition en mode empirique) EMDcotir (Décomposition en mode empirique)

Décomposition en mode empirique de l'instrument actuel.