Réseaux neuronaux artificiels. - page 14

 

Salut,

Je vais essayer de vous dire comment j'ai fait le NS.

J'ai fait un perceptron (par Kohonen), des variations pour le signal induit et la sortie (par Grosberg).

Tous les paramètres sont dynamiques - le prix ne reste pas à un seul endroit.

bool var2  - и здес разписал разные варианты .

// Логика для покупка
      if ((var2 && perceptron()>BL) 
      ||  (var3 && perceptron()>BL2) 
      ||  (var4 && perceptron()>BL3)) 

         NewPosition=OP_BUY; 

// Логика для продажа
      if ((war2 && perceptron()<SL) 
      ||  (war3 && perceptron()<SL2) 
      ||  (war4 && perceptron()<SL3)) 

         NewPosition=OP_SELL;

Tout commence à fonctionner dès l'ouverture des marchés (Europe, Amérique, Asie).

Je pense que c'est clair pour tout le monde, mais l'alimentation en données est dynamique.

BL, BL2, BL3 Bien, et le calcul, par lequel devrait passer le perceptron, donc il y avait un signal (Grosberg).

Comment passer la porte.

Eh bien, je pense que le schéma est clair pour vous.

 

Je mettrai le code, posté récemment pour le prix le jour suivant.

Le code est pour MT4 (je pense qu'il peut facilement être fait pour MT5), comme EA pour le test.

//+------------------------------------------------------------------+
//|                                                    statistic.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
//Ну как сама формула:
//Close Tomorrow = Close Today + (Close Today - Close Yesterday) * Alfa
//+------------------------------------------------------------------+
int init(){return(0);}
int deinit(){Comment("");return(0);}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//+------------------------------------------------------------------+                    
   double spead = MarketInfo(Symbol(),MODE_SPREAD);
   
   double open_d = iOpen(Symbol(),PERIOD_D1,0);
   double open_w = iOpen(Symbol(),PERIOD_W1,0);
   double open_m = iOpen(Symbol(),PERIOD_MN1,0);
   
   double open_d1 = iOpen(Symbol(),PERIOD_D1,1);
   double open_w1 = iOpen(Symbol(),PERIOD_W1,1);
   double open_m1 = iOpen(Symbol(),PERIOD_MN1,1);
   
   double clos_d = iClose(Symbol(),PERIOD_D1,1);
   double clos_w = iClose(Symbol(),PERIOD_W1,1);
   double clos_m = iClose(Symbol(),PERIOD_MN1,1);
   
   double perc_d = NormalizeDouble((((Close[0] - open_d)/open_d)*100),2);
   double perc_w = NormalizeDouble((((Close[0] - open_w)/open_w)*100),2);
   double perc_m = NormalizeDouble((((Close[0] - open_m)/open_m)*100),2);
   double perc_d_pr = NormalizeDouble((((clos_d - open_d1)/open_d1)*100),2);
   double perc_w_pr = NormalizeDouble((((clos_w - open_w1)/open_w1)*100),2);
   double perc_m_pr = NormalizeDouble((((clos_m - open_m1)/open_m1)*100),2);
//+------------------------------------------------------------------+
   double perc_y,perc_y_pr,open_y;
   datetime month;
   if(Month() > 1) month = Month()-1;else month = Month();
   open_y = iOpen(Symbol(),PERIOD_MN1,month);
   perc_y = NormalizeDouble((((Close[0] - open_y)/open_y)*100),2);
   perc_y_pr = NormalizeDouble((((clos_m - open_y)/open_y)*100),2);                                             
//+------------------------------------------------------------------+
   if(iVolume(Symbol(),PERIOD_D1,0) > 0 && iVolume(Symbol(),PERIOD_D1,0) < 2){
      Print("perc_d_pr = ",perc_d_pr);}
   if(iVolume(Symbol(),PERIOD_W1,0) > 0 && iVolume(Symbol(),PERIOD_W1,0) < 2){
      Print("perc_w_pr = ",perc_w_pr);}
   if(Month() > 1 && iVolume(Symbol(),PERIOD_MN1,0) > 0 && iVolume(Symbol(),PERIOD_MN1,0) < 2){
      Print("perc_m_pr = ",perc_m_pr,"perc_y_pr = ",perc_y_pr);}

   Comment("\nВреме на брокера: ",TimeToStr(TimeCurrent(),TIME_SECONDS),", Локално време: "+TimeToStr(TimeLocal(),TIME_SECONDS),
           "\nТекущ спред: ",DoubleToStr(spead/10,1),
           "\n perc_d:        ",perc_d,
           "\n perc_w:       ",perc_w,
           "\n perc_m:       ",perc_m,
           "\n perc_y:        ",perc_y
             );
   return(0);
  }
//+------------------------------------------------------------------+
 

Désolé, mauvais fichier - codesupérieur pour le pourcentage de changement de prix.

C'est la bonne :

//+------------------------------------------------------------------+
//|                                              statistic_1.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
//Ну как сама формула:
//Close Tomorrow = Close Today + (Close Today - Close Yesterday) * Alfa
//+------------------------------------------------------------------+
int init(){return(0);}
int deinit(){Comment("");return(0);}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//+------------------------------------------------------------------+                    
   double spead = MarketInfo(Symbol(),MODE_SPREAD);
   double Alfa,calc_cl,diff;  
   double open_d1 = iOpen(Symbol(),PERIOD_D1,1); 

   double clos_d1 = iClose(Symbol(),PERIOD_D1,1);   
   double clos_d2 = iClose(Symbol(),PERIOD_D1,2);
   double clos_d3 = iClose(Symbol(),PERIOD_D1,3);
   Alfa    = NormalizeDouble(((clos_d2 +(clos_d2 - clos_d3))/clos_d1),Digits);
   calc_cl = NormalizeDouble(((clos_d2 +(clos_d2 - clos_d3)) * Alfa),Digits);
   diff    = NormalizeDouble((clos_d1 - calc_cl),Digits);                        
//+------------------------------------------------------------------+
   if(iVolume(Symbol(),PERIOD_D1,0) > 0 && iVolume(Symbol(),PERIOD_D1,0) < 2){
      Print("Alfa = ",Alfa,"  clos_d1 =  ",clos_d1,"  calc_cl = ",calc_cl,"  diff = ",diff);
      }
   Comment("\nВреме на брокера: ",TimeToStr(TimeCurrent(),TIME_SECONDS),", Локално време: "+TimeToStr(TimeLocal(),TIME_SECONDS),
           "\nТекущ спред: ",DoubleToStr(spead/10,1)
             );
   return(0);
  }
//+------------------------------------------------------------------+