Accueil Trading Systématique Publication

EA Perceptron Simple : Optimisez votre Trading sur MetaTrader 4

Pièce jointe
18987.zip (1.98 KB, Télécharger 0 fois)

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.

La Règle

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.

Entrées

Optimisation


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";

Commentaire


5. Article Connexe

https://qiita.com/Kei-Sanada/items/cd6b8d9c02bc9eea1e01

Articles connexes

Commentaire (0)