Künstliche neuronale Netze. - Seite 14

 

Hallo,

Ich werde versuchen, Ihnen zu erklären, wie ich den NS gemacht habe.

Ich habe ein Perzeptron (von Kohonen), Variationen für das induzierte Signal und den Ausgang (von Grosberg) erstellt.

Alle Parameter sind dynamisch - der Preis bleibt nicht an einer Stelle stehen.

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;

Alles beginnt zu funktionieren, wenn die Märkte geöffnet werden (Europa, Amerika, Asien).

Ich denke, es ist jedem klar, aber die Dateneinspeisung ist dynamisch.

BL, BL2, BL3 Nun, und Berechnung, durch die das Perzeptron passieren sollte, so gab es ein Signal (Grosberg).

Wie man durch die Tür geht.

Nun, ich denke, das Schema ist Ihnen klar.

 

Ich werde den Code, der kürzlich für den Preis gepostet wurde, am nächsten Tag veröffentlichen.

Der Code ist für MT4 (ich denke, es kann leicht für MT5 getan werden), wie EA für 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);
  }
//+------------------------------------------------------------------+
 

Sorry, falsche Datei - oberer Code für prozentuale Preisänderung.

Das ist der richtige:

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