Искусственные нейронные сети. - страница 14

 

Привет,

Попробую расказат как сделал НС.

Сделал перцептрон(по Кохонен),вариации для сигнала по индюк и выходной(по Гросберг).

Все параметры динамические-цена не стоит на одном месте же. 

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;

Все начинает работат тогдя,когда откривается рынки(ну Европа,Америка,Азия)-тогда формируется движения.

perceptron() думаю понятно всем,толко то,что подача данны динамические.

BL,BL2,BL3 ну ето и вычисление,через которые должен пройти сам перцептрон,чтоб был сигнал-(Гросберг).

Как пройти,через двер.

Ну,думаю схема стала понятна Вам. 

 

Поставлю код,постил недавно-для цена на следуший ден.

Код для МТ4(думаю легко можно сделат и для МТ5),как ЕА-для теста.

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

Извините,перепутал файл-верхний код для процентное изменения цен.

Вот етот надо било:

//+------------------------------------------------------------------+
//|                                              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);
  }
//+------------------------------------------------------------------+
Причина обращения: