Yapay sinir ağları. - sayfa 14

 

Hey,

Size NS'nin nasıl yaptığını anlatmaya çalışacağım.

Bir algılayıcı (Kohonen'e göre), sinyal için hindi ve çıkışa göre varyasyonlar (Grosberg'e göre) yaptım.

Tüm parametreler dinamiktir - fiyat tek bir yerde durmaz.

 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;

Piyasalar açıldığında (yani Avrupa, Amerika, Asya) her şey çalışmaya başlar - sonra hareketler oluşur.

perceptron () Sanırım herkes için açık, tek şey veri beslemesinin dinamik olması.

BL,BL2,BL3 peki, bu, bir sinyalin olması için algılayıcının kendisinin geçmesi gereken bir hesaplamadır-(Grosberg).

Kapıdan nasıl geçilir.

Bence plan senin için netleşti.

 

Geçenlerde yayınladığım kodu ertesi günün fiyatına koyacağım.

Test için bir EA olarak MT4 kodu (MT5 için kolayca yapılabileceğini düşünüyorum).

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

Üzgünüm, dosyayı karıştırdım - fiyatlardaki yüzde değişimi için en önemli kod.

Bu yenmeli:

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