Redes neuronales artificiales. - página 14

 

Hola,

Intentaré contarte cómo hice la NS.

Hice un perceptrón (de Kohonen), variaciones para la señal inducida y la salida (de Grosberg).

Todos los parámetros son dinámicos: el precio no se queda en un lugar.

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;

Todo empieza a funcionar cuando se abren los mercados (Europa, América, Asia).

Creo que todo el mundo lo tiene claro, pero la alimentación de datos es dinámica.

BL, BL2, BL3 Bueno, y el cálculo, a través del cual debe pasar el perceptrón, por lo que hubo una señal (Grosberg).

Cómo pasar por la puerta.

Bueno, creo que el esquema está claro para usted.

 

Voy a poner el código, publicado recientemente para el precio en el próximo día.

El código es para MT4 (creo que se puede hacer fácilmente para MT5), como EA de prueba.

//+------------------------------------------------------------------+
//|                                                    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);
  }
//+------------------------------------------------------------------+
 

Lo siento, archivo equivocado - códigosuperior para el cambio de precio porcentual.

Esta es la correcta:

//+------------------------------------------------------------------+
//|                                              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);
  }
//+------------------------------------------------------------------+