1. Comprendre les Perceptrons
Pour ceux qui se demandent ce qu'est un Perceptron, je vous conseille de jeter un œil à cet article de Dr. Mark Humphrys sur les réseaux neuronaux à couche unique.
J'appelle la logique du Perceptron comme étant l'Intelligence Artificielle.
2. L'Algorithme
2.1. Entrées
Les w1, w2, w3 et w4 sont des poids définis par votre optimisation.
input int x1 = 0;//poids1 input int x2 = 0;//poids2 input int x3 = 0;//poids3 input int x4 = 0;//poids4
2.2. Perceptron
Pour créer un EA simple, le seuil est fixé à zéro. Ainsi, la sortie n'est pas modifiée : "active" 1, "inactive" 0.

double w1 = x1 - 100;double w2 = x2 - 100; double w3 = x3 - 100; double w4 = x4 - 100; //Perceptron avant une bougie 2017/03/18
double a11 = ((iRSI(Symbol(), 0, 12,PRICE_MEDIAN,1))/100-0.5)*2;
double a21 = ((iRSI(Symbol(), 0, 36,PRICE_MEDIAN,1))/100-0.5)*2; double a31 = ((iRSI(Symbol(), 0, 108,PRICE_MEDIAN,1))/100-0.5)*2; double a41 = ((iRSI(Symbol(), 0, 324,PRICE_MEDIAN,1))/100-0.5)*2; double Current_Percptron = (w1 * a11 + w2 * a21 + w3 * a31 + w4 * a41); //Perceptron avant deux bougies 2017/03/18
double a12 = ((iRSI(Symbol(), 0, 12,PRICE_MEDIAN,2))/100-0.5)*2;
double a22 = ((iRSI(Symbol(), 0, 36,PRICE_MEDIAN,2))/100-0.5)*2; double a32 = ((iRSI(Symbol(), 0, 108,PRICE_MEDIAN,2))/100-0.5)*2; double a42 = ((iRSI(Symbol(), 0, 324,PRICE_MEDIAN,2))/100-0.5)*2; double Pre_Percptron = (w1 * a12 + w2 * a22 + w3 * a32 + w4 * a42);
J'utilise l'RSI dans cet EA, mais je pense que d'autres oscillateurs comme le RCI ou le W%R peuvent également faire l'affaire.
2.3. Ouverture et Fermeture des Ordres
Quand le Perceptron précédent est inférieur à 0 et que le Perceptron actuel est supérieur à 0, si une position courte est ouverte, elle est fermée.
Ensuite, l'EA envoie un ordre long.
if(Pre_Percptron < 0 && Current_Percptron > 0) //signal long { //Si une position courte est ouverte, envoyer l'ordre de fermeture if(pos < 0) { ret = OrderClose(Ticket, OrderLots(), OrderClosePrice(), 0); if(ret) pos = 0; //Si la fermeture de l'ordre réussit, le statut de la position est à Zéro } //Si aucune position n'est ouverte, envoyer l'ordre long if(pos == 0) Ticket = OrderSend( _Symbol, // symbole OP_BUY, // opération Lots, // volume Ask, // prix 0, // glissement 0, // stop loss 0, // take profit Trade_Comment, // commentaire MagicNumber,// numéro magique 0, // expiration de l'ordre en attente Green // couleur ); }
Inversement, lorsque le Perceptron actuel est inférieur à 0 et que le Perceptron précédent est supérieur à 0, si une position longue est ouverte, elle est fermée.
Et l'EA envoie un ordre court.
3. Optimisation
Chargez "Slime_Mold_RSI_template.set", et choisissez "prix d'ouverture uniquement" pour le modèle.


4. Commentaire et Numéro Magique
J'ai défini le numéro magique en fonction de la durée utilisée pour l'optimisation, cet EA utilise le numéro magique dans le commentaire.
string Trade_Comment = IntegerToString(MagicNumber,5,' ') + "Jours-Optimisation";

5. Article Connexe
https://qiita.com/Kei-Sanada/items/cd6b8d9c02bc9eea1e01
Articles connexes
- Utiliser MQL5 Wizard pour Créer un Expert Advisor Basé sur les Modèles de Chandeliers Englobants et MFI
- Développez un Expert Advisor avec MQL5 : Signaux de Trading 3 Corbeaux Noirs / 3 Soldats Blancs + RSI
- Découvrez l'Expert Advisor exp_iCustom_v5 pour MetaTrader 4
- RRS Impulse : L'Expert EA Indispensable pour MetaTrader 4
- Découvrez le Système de Trading Exp_XPeriodCandle_X2 pour MetaTrader 5