Description :
- L'idée principale est de développer un Expert Advisor (EA) qui prend des décisions de trading financier automatiquement lors des événements d'actualité. Le Fundamental Trader EA ne peut pas être testé sur des données historiques, mais uniquement en forward testing, car il est conçu pour attendre le prochain événement économique et prendre des décisions de trading basées sur la différence entre les données (réelles vs. prévisions) ou (réelles vs. précédentes).
- Le Fundamental Trader EA est très simple. Après avoir téléchargé le calendrier, il détermine quel événement économique sur le calendrier DailyFX est prévu en premier. Ensuite, il attend la publication de cet événement. Une fois les données publiées, l'EA prend une décision de trading. Le Fundamental Trader EA peut être appliqué à n'importe quel graphique et à n'importe quelle période, car il utilise uniquement le graphique pour exécuter les ordres.
Ce système est configuré pour prendre en charge tous les pays figurant sur le calendrier DailyFX, comme vous pouvez le voir ci-dessous.
NOTE :
- Pour faire fonctionner cet EA, vous DEVEZ suivre les instructions de configuration des fichiers principaux sur le site suivant :
- https://www.mql5.com/en/articles/1502
- Ce EA est construit à partir du code d'un indicateur spécifié dans le lien ci-dessus. Vous DEVEZ d'abord suivre les instructions dans le lien ci-dessus et configurer les fichiers suivants :
- getright_setup.zip
- Time.mq4
- Time.mqh
- Assurez-vous de modifier le répertoire de téléchargement par défaut pour "get right" afin que le calendrier soit téléchargé correctement, sinon cet EA ne fonctionnera pas.
- Veillez à lire cet article très attentivement et à suivre chaque instruction.
- Vous pouvez lire tout sur ce que sont ces (3) fichiers et quelle est leur fonction. Cet article fait un très bon travail pour expliquer ce que fait l'indicateur afin d'afficher les événements d'actualité dans la fenêtre graphique.
- Il est judicieux de d'abord configurer cet indicateur et d'afficher les nouvelles sur votre graphique, après quoi cet EA fonctionnera sans problème.
- Le code source de cet indicateur a été modifié pour devenir un EA, afin de trader les nouvelles et non seulement de les afficher.
- Lorsque vous configurez les fichiers listés ci-dessus, à partir du lien fourni, vous pouvez télécharger cet EA avec "str2double.dll" et cet EA échangera les nouvelles publiées sur DAILYFX. Le fichier "str2double.dll" doit être placé dans le répertoire racine, par exemple C:\Program Files\Interbank FX Trader 4\
Logique de Trading :
- La logique derrière le trading est la suivante : il existe deux types d'événements lors du trading d'actualités.
- 1er : il y a des données économiques réelles qui sont comparées aux données économiques prévisionnelles.
- 2ème : il y a des données économiques réelles qui sont comparées aux données économiques précédentes.
- La différence entre les données économiques peut influencer la direction du prix de la monnaie, et le pourcentage de différence entre les données économiques donne une probabilité plus élevée que l'événement d'actualité ait une réaction du marché dans une direction spécifique.
- Pour plus d'informations sur le trading fondamental, visitez www.pfxglobal.com
- Lorsqu'il y a une différence de pourcentage élevée entre les données économiques, l'EA exécute des ordres avec des lots plus importants.
- Lorsque la différence de pourcentage entre les données économiques est faible, l'EA exécute des ordres avec des lots minimaux.
- Ces tailles de lots sont spécifiées lors de l'application de l'EA au graphique avec les variables suivantes :
- lot1, lot2, lot3, lot4, lot5, lot6......lot18
- La taille de lot spécifique sera choisie par l'EA, en fonction de la différence de pourcentage entre les données économiques.
Ratio Risque/Récompense :
- Le Fundamental Trader EA est configuré avec un ratio risque/récompense de 1:3, les valeurs par défaut sont risque=20, récompense=3.
- Le risque est la valeur PIP StopLoss, et la récompense est le multiplicateur, donc si l'EA risque 20 PIP, il s'attend à gagner 60 PIP.
- Ces valeurs peuvent être modifiées lors de l'application de l'EA au graphique.
Temps d'Attente pour la Publication de l'Événement :
- Les données d'actualités ne sont pas publiées exactement au moment prévu, il est donc nécessaire de configurer un temps d'attente pour que l'EA attende la publication des événements d'actualité.
- Le code suivant détermine le temps que l'EA attendra pour la publication des nouvelles, une fois le temps d'attente écoulé, l'EA passe à l'événement d'actualité suivant.
- xTime est une variable, qui peut être modifiée lors de la première application de l'EA à un graphique. La valeur par défaut est de 27 minutes.
if(Date>(TimeCurrent()-(xTime*60)))
Temps d'Attente pour la Fermeture des Ordres :
- Vous pouvez également configurer un temps d'attente pour que l'EA attende un certain temps avant de fermer un ordre ouvert.
- Par exemple, après la publication d'une nouvelle, et qu'une position a été exécutée, attendez 30 minutes pour fermer l'ordre actuel, qu'il soit en profit ou en perte. Ceci est recommandé par l'utilisateur MQL4 "ebenv".
- Il y a (3) variables qui contrôlent cette fonction :
- MagicNumber | numéro utilisé pour suivre les ordres ouverts
- enable_close_time | défini sur vrai pour permettre à l'EA de surveiller le temps écoulé depuis l'exécution de l'ordre
- wait_time | temps à attendre avant de fermer l'ordre
Support des Pays par le Fundamental Trader :
Le Fundamental Trader EA trade chaque devise qui est supportée sur dailyfx.com/calendar.
Voici le code qui spécifie la devise à trader selon le pays où l'événement d'actualité est publié. La liste des devises est la suivante : EUR, USD, JPY, GBP, CHF, AUD, CAD, NZD
if(stCurrency=="EUR") {ordercurrency="EURUSD";}//trading eurusd
if(stCurrency=="USD") {ordercurrency="EURUSD";}//trading eurusd
if(stCurrency=="JPY") {ordercurrency="USDJPY";}//trading usdjpy
if(stCurrency=="GBP") {ordercurrency="GBPUSD";}//trading usdgbp
if(stCurrency=="CHF") {ordercurrency="USDCHF";}//trading usdchf
if(stCurrency=="AUD") {ordercurrency="AUDUSD";}//trading audusd
if(stCurrency=="CAD") {ordercurrency="USDCAD";}//trading usdcad
if(stCurrency=="NZD") {ordercurrency="NZDUSD";}//trading nzdusd
Décision de Trading :
Le code suivant décrit comment l'EA prend une décision de trading, lorsque l'EA attend les données économiques réelles, lorsque les données économiques prévisionnelles sont disponibles.
Lorsque les données prévisionnelles ne sont pas disponibles, l'EA utilise les données précédentes pour effectuer un trade.
Le code suivant explique comment le trade est exécuté en fonction des données prévisionnelles et des données réelles. Le même algorithme est utilisé lorsque l'EA prend une décision de trading basée sur les données précédentes et réelles.
if(StringToDouble(stActual)>StringToDouble(stForecast))
{
Aert("Stronger(actual vs forecast): "+stCurrency+" "+"Time: "+stTime);
int total=OrdersTotal();
for(int cnt=0; cntLive Trade Open"+OrderTicket());
return(0);
}
}
int historytotal=OrdersHistoryTotal();
for(cnt=0; cntTrade Executed"+OrderTicket());
return(0);
}
}
if(stCurrency=="EUR"||stCurrency=="GBP"||stCurrency=="AUD")
{
double ask=MarketInfo(ordercurrency,MODE_ASK);
double point1=MarketInfo(ordercurrency,MODE_POINT);
OrderSend(ordercurrency, OP_BUY, lot_p, ask, 3, ask-(risk*point1), ask+reward*risk*point1, stCurrency+stActual+stForecast+"BUY");
}
if(stCurrency=="CHF"||stCurrency=="CAD"||stCurrency=="NZD"||stCurrency=="JPY"||stCurrency=="USD")
{
double bid=MarketInfo(ordercurrency,MODE_BID);
double point2=MarketInfo(ordercurrency,MODE_POINT);
OrderSend(ordercurrency, OP_SELL, lot_p, bid, 3, bid+(risk*point2), bid-(reward*risk*point2), stCurrency+stActual+stForecast+"SELL");
}
}
1er : l'EA ne peut exécuter qu'un seul ordre par événement économique, donc il vérifie d'abord si un ordre a été exécuté, et si l'ordre est actuellement ouvert, l'EA sort.
2ème : l'EA détermine si cet ordre a déjà été exécuté et fermé, s'il a été exécuté et fermé avec un profit ou une perte, l'EA sort.
Les (2) vérifications d'ordres garantissent qu'il n'y a pas de duplication d'ordres, ce qui permet à l'EA de ne réaliser qu'un seul trade par événement économique.
Ensuite, il détermine pour quel pays les données sont publiées et ouvre un trade avec les spécifications dans la fonction ordersend lorsque les données économiques sont publiées.
Le code ci-dessus est pour : lorsque les données réelles sont supérieures aux données prévisionnelles, le code est le même lorsque les données réelles sont inférieures aux données prévisionnelles, la seule différence étant la direction du trade.
Le même algorithme s'applique lorsque les données précédentes sont comparées aux données réelles lorsque les données prévisionnelles ne sont pas présentes.
Taille des Lots :
L'EA compare (données réelles aux données prévisionnelles) ou (données réelles aux données précédentes), le pourcentage de différence entre les données d'actualités détermine le montant des lots que l'EA va trader.
Le code suivant montre comment l'EA détermine le pourcentage de différence et spécifie la taille des lots. La taille des lots est un nombre externe qui peut être modifié pour prendre en charge n'importe quel broker EA.
L'utilisateur peut modifier les lots lors de l'application de l'EA sur le graphique. Les valeurs par défaut des tailles de lots sont (0.01, 0.02, 0.03...0.17).
double percent_d_AF=MathAbs((MathAbs(StringToDouble(stActual)-StringToDouble(stForecast))/StringToDouble(stForecast))*100);
double lot_p=0;
if((percent_d_AF>0 && percent_d_AF<=3)){lot_p=lot1;}//0.1 lot
if((percent_d_AF>3 && percent_d_AF<=6)){lot_p=lot2;}//0.2 lots
if((percent_d_AF>6 && percent_d_AF<=9)){lot_p=lot3;}//0.3 lots
if((percent_d_AF>9 && percent_d_AF<=12)){lot_p=lot4;}//0.4 lots
if((percent_d_AF>12 && percent_d_AF<=15)){lot_p=lot5;}//0.5 lots
if((percent_d_AF>15 && percent_d_AF<=18)){lot_p=lot6;}//0.6 lots
if((percent_d_AF>18 && percent_d_AF<=21)){lot_p=lot7;}//0.7 lots
if((percent_d_AF>21 && percent_d_AF<=24)){lot_p=lot8;}//0.8 lots
if((percent_d_AF>24 && percent_d_AF<=27)){lot_p=lot9;}//0.9 lots
if((percent_d_AF>27 && percent_d_AF<=30)){lot_p=lot10;}//1 lots
if((percent_d_AF>30 && percent_d_AF<=40)){lot_p=lot11;}//2 lots
if((percent_d_AF>40 && percent_d_AF<=50)){lot_p=lot12;}//3 lots
if((percent_d_AF>50 && percent_d_AF<=60)){lot_p=lot13;}//4 lots
if((percent_d_AF>60 && percent_d_AF<=70)){lot_p=lot14;}//5 lots
if((percent_d_AF>70 && percent_d_AF<=80)){lot_p=lot15;}//6 lots
if((percent_d_AF>80 && percent_d_AF<=90)){lot_p=lot16;}//7 lots
if((percent_d_AF>90 && percent_d_AF<=100)){lot_p=lot17;}//8 lots
if((percent_d_AF>100)){lot_p=lot18;}//8 lots
Informations sur le Graphique :

Capture d'écran des données économiques fondamentales
Lorsque l'EA est d'abord appliqué au graphique, vous spécifiez "xTime", "risque", "récompense", "MagicNumber", "enable_close_time", "wait_time" et spécifiez vos tailles minimales et maximales de lots. Assurez-vous de laisser le chemin par défaut où "get right" est installé.
L'EA téléchargera le calendrier DailyFX et déterminera quel événement d'actualité est prochain. Il affichera les données suivantes : Date, Heure, Fuseau Horaire, Devise, Description, Importance, Réel, Prévision, et les données de l'événement précédent comme commentaire sur le graphique, comme indiqué dans l'image ci-dessus.
Dans l'image ci-dessus, l'EA attend l'événement d'actualité qui sera publié à 2h00 du matin, et comme vous pouvez le voir, les données économiques précédentes sont connues (73,5%), donc l'EA attend que les données réelles soient publiées. Lorsque les données économiques seront publiées, l'EA comparera les données et prendra une décision de trading basée sur les données précédentes et réelles.
Enfin, l'EA télécharge les données du calendrier minute par minute, à partir du moment où l'événement d'actualité est prévu pour être publié.
Aperçu du Fundamental Trader :
Cet EA trade chaque événement économique qui est publié sur dailyfx.com/calendar, au format CSV.
Le calendrier est téléchargé avec le programme "get right".
L'EA télécharge le calendrier chaque minute lorsque les données d'actualités sont prévues pour être publiées.
L'EA analyse le calendrier et détermine quel événement d'actualité est prochain, puis attend 27 minutes pour que les nouvelles soient publiées.
Une fois que les données économiques sont publiées, il détermine si c'est (réel vs prévision) ou (réel vs précédent).
L'EA détermine la taille des lots, la devise à trader et la direction en fonction de l'événement du calendrier économique, ces données peuvent toutes être trouvées sur le graphique lorsque l'EA est en cours d'exécution.
L'ordre est exécuté avec un ratio risque/récompense de 1:3.
L'EA est configuré pour exécuter uniquement un ordre unique par événement d'actualité. Si "enable_close_time" est activé avec une valeur "true", l'EA attendra le nombre de minutes spécifié par le "wait_time" avant de fermer l'ordre ouvert.
N'oubliez pas de suivre toutes les instructions dans le lien suivant https://www.mql5.com/en/articles/1502, afin que le calendrier soit téléchargé correctement et que l'heure de votre broker soit configurée correctement, pour que les données dailyfx.com/calendar soient traitées, données GMT.
Si vous avez des questions, des commentaires ou des critiques, n'hésitez pas à laisser un commentaire.
Articles connexes
- Générer des Signaux de Trading avec MQL5 Wizard : Étoiles du Matin/du Soir et RSI
- Générez des Signaux de Trading avec MQL5 Wizard : Dark Cloud Cover et Piercing Line
- Utiliser MQL5 Wizard pour Créer un Expert Advisor Basé sur les Modèles de Chandeliers Englobants et MFI
- AOCCI : Un Expert pour MetaTrader 5
- Développez un Expert Advisor avec MQL5 : Signaux de Trading 3 Corbeaux Noirs / 3 Soldats Blancs + RSI