Fark hesabı, örnekler. - sayfa 14

 
Alexey Panfilov :

Bir denge göstergesi oluşturma konusunda deneyimim var, bu beni bir hiperparametre oluşturmaya yaklaştıracak mı?

Emin değilim, eğer gerçek bir ilişki yoksa, o zaman yardımcı olmayabilir .. aslında bu, MO'da herkesin kafasını karıştıran bir soru :)

 
Maksim Dmitrievski :

Emin değilim, eğer gerçek bir ilişki yoksa, o zaman yardımcı olmayabilir .. aslında bu, MO'da herkesin kafasını karıştıran bir soru :)

:)

Her ihtimale karşı, denge göstergesinin bir resmi (alt pencere).

Düzgün adımlar dengesi, yeşil çizgi demektir.

 
Alexey Panfilov :

:)

Her ihtimale karşı, denge göstergesinin bir resmi (alt pencere).

Düzgün adımlar dengesi, yeşil çizgi demektir.

Ooooh!

+

 
Alexey Panfilov :

:)

Her ihtimale karşı, denge göstergesinin bir resmi (alt pencere).

Düzgün adımlar dengesi, yeşil çizgi demektir.

Bakiye mutlak anlamda değil, örneğin cari kar faktörü .. yani. bir şekilde programı normalleştirin

o zaman bu değişkeni geri kalanıyla bir şekilde, örneğin bulanık mantık veya bir nöron aracılığıyla zaten bağlayabilirsiniz.

 

R^2 çok yardımcı olacak

https://www.mql5.com/en/articles/2358

R-квадрат как оценка качества кривой баланса стратегии
R-квадрат как оценка качества кривой баланса стратегии
  • 2017.10.24
  • Vasiliy Sokolov
  • www.mql5.com
Каждая торговая стратегия нуждается в объективной оценке ее эффективности. Для этого используется обширный ряд статистических параметров. Многие из них просты в расчете и показывают интуитивно понятные метрики. Другие сложнее в построении и в интерпретации значений. Несмотря на все это многообразие, есть очень мало качественных метрик для...
 

Ardından, göstergelerinizi ve R^2'yi giriş terimleri olarak ekleyin, ardından değişkenler arasındaki etkileşim kurallarını dilsel olarak tanımlayın ve çıkışta bir sinyal alın

bu örnek olarak, bir nöron kullanabilirsiniz (makaleler de var), ancak bulanık mantık bana bu görevler için daha esnek ve sezgisel görünüyor ve ayrıca bir nöron veya parametreleriniz gibi optimize edilebilir, ancak daha az olacaktır. girdiler

https://www.mql5.com/en/articles/3795

Нечеткая логика в торговых стратегиях
Нечеткая логика в торговых стратегиях
  • 2017.09.18
  • Maxim Dmitrievsky
  • www.mql5.com
Трейдеры часто задаются вопросом о том, как улучшить торговую систему или создать новую за счет машинного обучения. Несмотря на обилие публикаций, остается открытым вопрос о простом и интуитивно понятном способе создания моделей, которые невозможно аналитически просчитать без использования компьютерных вычислений. Нечеткая логика — это окно в...
 

Mesajlar için teşekkürler.

Ne yazık ki, şu anda makine öğrenimine aşina değilim. Ve yakın gelecekte, ustalaşmayı taahhüt etmeyeceğim.

Denge göstergesinin hızlı sürekli optimizasyon için kullanılması planlandı. Ne yazık ki, her uzman için kendi terazi göstergesi analogunuzu ve parametreleri numaralandırmak için bir komut dosyası oluşturmanız gerekir. Otomatik optimizasyon için bu algoritmaları bir robota yerleştirmenin gerçekçi olduğunu düşünüyorum. Prensip olarak, bu muhtemelen aynı zamanda yalnızca kendi kendine yapılan bir düzeyde makine öğrenimidir.

Belki ben de oraya gelirim.

Bu arada, aniden biri işe yarar, ne olur. MT4 için denge göstergesi.

 int start()
  {
  
   int     i;
   int     counted_bars= IndicatorCounted ();
//----
   if ( Bars <= 3 ) return ( 0 );
   if (PRED_CHISLO_BAROV == Bars ) return ( 0 );
 
   i= Bars - 1 ; // i присваиваем значение числа баров  .
   if (counted_bars> 1 ) i= Bars -counted_bars- 1 ; // 
   while (i>= 0 )                                
     {

//================================================================================================================================================================================================
   MacdCurrent = iCustom ( NULL , 0 , "_________________" ,
                                                           0 ,i);
   MacdPrevious = iCustom ( NULL , 0 , "_______________" ,
                                                          0 ,i+ 1 );

   SignalCurrent = iCustom ( NULL , 0 , "_____________" ,
                                                          1 ,i); 
   SignalPrevious = iCustom ( NULL , 0 , "_____________" ,
                                                          1 ,i+ 1 );
                                                          
   MacdCurrent_Trend = iCustom ( NULL , 0 , "______________" ,
                                                             0 ,i); 
   MacdPrevious_Trend = iCustom ( NULL , 0 , "___________________" ,
                                                           0 ,i+ 1 );

   SignalCurrent_Trend = iCustom ( NULL , 0 , "__________________" ,
                                                           1 ,i); 
     if (Trend_InpSignalSMA== 0 ) SignalCurrent_Trend = 0 ; 


   SignalPrevious_Trend = iCustom ( NULL , 0 , "_______________" ,
                                                           1 ,i+ 1 );
     if (Trend_InpSignalSMA== 0 ) SignalPrevious_Trend = 0 ; 
                                                         
//================================================================================================================================================================================================
//  Оцениваем в какой позиции мы стояли бы по трендовому MACD  И назначаем Trend =1 восходящий =-1 низходящий

     if ( 
  MacdPrevious_Trend < 0     &&                                                             //1) основная линия MACD ниже 0
  MacdCurrent_Trend > SignalCurrent_Trend && MacdPrevious_Trend < SignalPrevious_Trend &&   //2)  основная линия только что пересекла сигнальную с низу в верх
   MathAbs (MacdPrevious_Trend) > (Trend_MACDOpenLevel* Point )                                 //3) основная линия ниже заданного для открытия значения 
      )                                                             Trend = 1 ;

     if ( 
  MacdPrevious_Trend > 0      &&                                                           // 1) основная линия MACD выше 0
  MacdCurrent_Trend < SignalCurrent_Trend && MacdPrevious_Trend > SignalPrevious_Trend && //-  основная линия только что пересекла сигнальную с низу в верх
   MathAbs (MacdPrevious_Trend) > (Trend_MACDOpenLevel* Point )                               // - основная линия выше заданного для открытия значения 
      )                                                             Trend =- 1 ;

//================================================================================================================================================================================================
//РАСЧЕТ ЛИНИИ БАЛАНСА.

// Закрываем позицию SELL
     if (
  (  
   Posic == - 1 &&                                                 // Если открыта позиция SELL 
  MacdPrevious < 0   &&                                             // 1) основная линия MACD ниже 0
  MacdCurrent > SignalCurrent && MacdPrevious < SignalPrevious && //-  основная линия только что пересекла сигнальную с низу в верх
   MathAbs (MacdPrevious) > (Ind_MACDCloseLevel* Point )               // - основная линия ниже заданного для закрытия значения 
  ) || (
  Posic == - 1 && (Cena_0 - Open [i])/ Point * Naprav >= TakeProfit
  ) || (
  Posic == - 1 && ( Open [i] - Cena_0)/ Point * Naprav >= StopLoss
  )
      )                                              
  {  
     if ( Cena_0 > 0 ) Balans = Balans +(Cena_0 - Open [i])/ Point * Naprav  ; 
        Cena_0 = 0 ;             Posic = 0 ;   Capital = 0 ;
  }

// Открываем позицию BUY
     if (
  Trend == 1 &&
  Posic == 0 &&                                                   // Если позиция зарыта
  MacdPrevious < 0    &&                                           // 1) основная линия MACD ниже 0
  MacdCurrent > SignalCurrent && MacdPrevious < SignalPrevious && //-  основная линия только что пересекла сигнальную с низу в верх
   MathAbs (MacdPrevious) > (Ind_MACDOpenLevel* Point )               // - основная линия ниже заданного для открытия значения 
      )
      {   Cena_0 = Open [i];     Posic = 1 ;  Balans = Balans - Spred; }


// Закрываем позицию BUY
     if (
  (
  Posic == 1 &&                                                     // Если открыта позиция BUY
  MacdPrevious > 0   &&                                             // 1) основная линия MACD выше 0
  MacdCurrent < SignalCurrent && MacdPrevious > SignalPrevious &&   //-  основная линия только что пересекла сигнальную с  верх в низу 
   MathAbs (MacdPrevious) > (Ind_MACDCloseLevel* Point )               // - основная линия выше заданного для закрытия значения 
  ) || (
  Posic == 1 && (Cena_0 - Open [i])/ Point * Naprav >= StopLoss
  ) || (
  Posic == 1 && ( Open [i] - Cena_0)/ Point * Naprav >=  TakeProfit
  )
      )                                               
  {  
     if ( Cena_0 > 0 ) Balans = Balans +( Open [i] - Cena_0)/ Point * Naprav ; 
        Cena_0 = 0 ;             Posic = 0 ;   Capital = 0 ;
  }


// Открываем позицию SELL
     if (
  Trend == - 1 &&
  Posic == 0 &&                                                     // Если  позиция зарыта
  MacdPrevious > 0 &&                                               // 1) основная линия MACD выше 0
  MacdCurrent < SignalCurrent && MacdPrevious > SignalPrevious  && //-  основная линия только что пересекла сигнальную с  верх в низу 
   MathAbs (MacdPrevious) > (Ind_MACDOpenLevel* Point )                 // - основная линия выше заданного для открытия значения 
      ) 
      {   Cena_0 = Open [i];     Posic = - 1 ;  Balans = Balans - Spred;  }
      
    a1_Buffer[i]= Balans;
//================================================================================================================================================================================================
//РАСЧЕТ ЛИНИИ ТЕКУЩЕГО КАПИТАЛЛА.

// При открытой позиции BUY
     if (   Posic >   0   ) 
  {  
     if ( Cena_0 > 0 ) Capital = (( Open [i] - Cena_0)/ Point * Naprav) ; 
  }
// При открытой позиции SELL
     if (  Posic <   0    ) 
  {  
     if ( Cena_0 > 0 ) Capital = ((Cena_0 - Open [i])/ Point   * Naprav) ; 
  }                       
    a2_Buffer[i]=   Balans + Capital;
//================================================================================================================================================================================================
//    a3_Buffer[i]= 
//================================================================================================================================================================================================
//    a4_Buffer[i]=
//================================================================================================================================================================================================
//================================================================================================================================================================================================
     if (i >= Bars -(TOCHKA_VHODA* 2 )) Cena_0 = 0 ; // 

      i--;       PRED_CHISLO_BAROV = Bars ;                                
     } 
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+


P/S. Şubeye benzer göstergelerden örnekler eklerseniz minnettar olurum. Kopyaladığı Uzman Danışman ile birlikte daha iyi.

 
oh, gerçek zamanı optimize etmek için paraşütün bitti .. bu da bir mesele
 
Alexey Panfilov :

Ve argo olmadan? :)))))))

ODA'daki bilançonun mevcut parametrelerini hesaplamak için. tarihin derinliği ve eğer kötüyse, o zaman onları canlı olarak düzeltin ve eğriyi tekrar izleyin .. optimal olana kadar, sonra tekrar bozulmaya başlayana kadar ticaret yapın ve tekrar parametreleri gözden geçirin .. backtest tabii ki olacak bu durumda uzun

 
Alexey Panfilov :

Teşekkür ederim.

sadece orada bir milyon tutamaç alacaksınız, uzmanın vücudundaki tüm göstergeleri yeniden yazmanız gerekecek

Neden: