Home Systeemhandel Bericht

Eenvoudige Single Layer Perceptron EA voor MetaTrader 4

Bijlage
18987.zip (1.98 KB, Downloaden 2 keer)

1. Wat zijn Perceptrons?

Perceptrons zijn een essentieel onderdeel van kunstmatige intelligentie. Voor meer informatie, kijk op de website van Dr. Mark Humphrys.

Ik beschouw "Kunstmatige Intelligentie" als de logica achter de Perceptron.


2. Algoritme

2.1. Invoer

De w1, w2, w3 en w4 zijn gewichten die de waarden instellen die door jouw optimalisatie zijn bepaald.

input int    x1 = 0;//gewicht1
input int   x2 = 0;//gewicht2
input int   x3 = 0;//gewicht3
input int    x4 = 0;//gewicht4


2.2. Perceptron

Voor het maken van een eenvoudige EA is de drempelwaarde nul. De output verandert niet: "vuur" is 1, "vuur niet" is 0.

De Regel

double w1 = x1 - 100;
double w2 = x2 - 100;
double w3 = x3 - 100;
double w4 = x4 - 100;

//Perceptron voor één bar 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 voor twee baren 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);

Ik gebruik RSI in deze EA, maar andere oscillatoren zoals RCI en W%R kunnen ook prima werken.


2.3. Order openen en sluiten

Wanneer de vorige Perceptron onder 0 ligt en de huidige Perceptron boven 0, wordt er een korte positie gesloten.

En de EA stuurt een kooporder.

if(Pre_Percptron < 0 && Current_Percptron > 0) //koop signaal
   {
      //Als er een korte positie is, sluit de order
      if(pos < 0)
      {
         ret = OrderClose(Ticket, OrderLots(), OrderClosePrice(), 0);
         if(ret) pos = 0; //Als de order sluiten lukt, is de positie status nul
      }
      //Als er geen positie is, stuur een kooporder
      if(pos == 0) Ticket = OrderSend(
                                       _Symbol,              // symbool
                                       OP_BUY,                 // operatie
                                       Lots,              // volume
                                       Ask,              // prijs
                                       0,            // slippage
                                       0,          // stop loss
                                       0,          // take profit
                                       Trade_Comment,        // commentaar
                                       MagicNumber,// magic nummer
                                       0,        // vervaldatum van de pending order
                                       Green  // kleur
                                       );
   }

Omgekeerd, wanneer de huidige Perceptron onder 0 ligt en de vorige Perceptron boven 0, wordt er een lange positie gesloten.

En de EA stuurt een verkooporder.


3. Optimalisatie

Laad "Slime_Mold_RSI_template.set" en kies "open prijs alleen" voor het model.

Invoer

Optimalisatie


4. Opmerking en Magic Nummer

Ik stel het Magic Nummer in op de duur die gebruikt is voor optimalisatie; deze EA gebruikt het Magic Nummer in de commentaarsectie.

string Trade_Comment = IntegerToString(MagicNumber,5,' ') + "Dagen-Optimalisatie";

Opmerking


5. Gerelateerd artikel

Hier vind je een gerelateerd artikel.

Gerelateerde berichten

Reactie (0)