微分積分、例 - ページ 14

 
アレクセイ・パンフィロフ

バランス指標を作った 経験があるのですが、これはハイパーパラメーターを作ることに近いでしょうか?

もし、本当に相関関係がないのであれば、何の役にも立たないかもしれません。)

 
マキシム・ドミトリエフスキー

しかし、本当に相関があるかどうかはわかりませんし、役に立たないかもしれません。)

:)

念のため、写真、バランスインジケーター(下窓)。

着実なステップのバランス、緑のラインの意味。

 
アレクセイ・パンフィロフ

:)

念のため、写真、バランスインジケーター(下窓)。

着実なステップのバランス、緑のラインの意味。

うおぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉ

+

 
アレクセイ・パンフィロフ

:)

念のため、写真、バランスインジケーター(下窓)。

着実なステップのバランス、緑のラインの意味。

バランスは絶対値 でなく、例えば、現在の利益率...つまり、何とかグラフを正規化することが必要です

そして,その変数と残りの変数とを,ファジーロジックやニューロンなどを使って,何らかの形で関連付けることができる.

 

R^2があると助かる

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

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

次に、入力項として指標と R^2 を追加し、変数間の相互作用のルールを言語的に記述し、出力でシグナルを取得する

これは単なる例で、ニューロンも使えますが(記事もあります)、ファジーロジックはこれらのタスクに対してより柔軟で直感的なように思いますし、ニューロンやパラメータとして最適化することもできますが、直感性は低くなります

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

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

メッセージをありがとうございました。

残念ながら、今のところ、私は機械学習に精通しているわけではありません。そして、いつまで経ってもマスターできない。

バランスインジケータを使用して、連続的な最適化を迅速に行うことを計画していました。残念ながら、バランスインジケータの類似品と、Expert Advisorごとにパラメータを検索するスクリプトを開発する必要があります。これらのアルゴリズムをロボットに搭載して、自動最適 化を行うのが現実的だと思います。原理的には、同じ機械学習でも自作レベルなのでしょう。

もしかしたら、私も手を出すかもしれません。

その間に、誰かが私の持っているものを役に立つと思うかもしれません。MT4用バランスインジケータ。

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.このスレッドに似たようなインジケータの例を追加していただけるとありがたいです。コピーするExpert Advisorと一緒に使うとよりよいでしょう。

 
あ、リアルタイムオプションでパラパラか...同じですね。
 
アレクセイ・パンフィロフ

スラングもなしで?:))))))

現在のパラメータで履歴のある深さのバランスグラフを計算し、それが悪ければライブで修正し、再びカーブを見る...最適になるまで、再び下がり始めるまでトレードし、再びパラメータを見直す...この場合、バックテストはもちろん長くなります。

 
アレクセイ・パンフィロフ

ありがとうございます。

しかし、100万個のハンドルがあり、Expert Advisor本体のインジケータをすべて書き直さなければならないでしょう。