Differenzialrechnung, Beispiele. - Seite 14

 
Aleksey Panfilov:

Ich habe Erfahrung mit der Erstellung eines Gleichgewichtsindikators. Kommt dies der Erstellung eines Hyperparameters nahe?

Ich bin mir nicht sicher, wenn es keinen wirklichen Zusammenhang gibt, dann hilft es vielleicht nicht... das ist die Frage, über die jeder im Verteidigungsministerium rätselt :)

 
Maxim Dmitrievsky:

Ich bin mir nicht sicher, ob es keinen wirklichen Zusammenhang gibt, vielleicht hilft es nicht... im Grunde ist dies die Frage, über die jeder im Verteidigungsministerium rätselt :)

:)

Nur für den Fall, dass ein Bild, Gleichgewichtsanzeige (unteres Fenster).

Steady steps balance, grüne Linie bedeutet.

 
Aleksey Panfilov:

:)

Nur für den Fall, dass das Bild, die Waagenanzeige (unteres Fenster).

Steady steps balance, grüne Linie bedeutet.

Oooh!

+

 
Aleksey Panfilov:

:)

Nur für den Fall, dass das Bild, die Waagenanzeige (unteres Fenster).

Steady steps balance, grüne Linie bedeutet.

Das Gleichgewicht wird nicht in absoluten Werten benötigt, sondern z.B. der aktuelle Gewinnfaktor... d.h. die Grafik irgendwie normalisieren

D.h. ich kann das Diagramm irgendwie normalisieren. Dann ist es möglich, diese Variable irgendwie mit dem Rest in Beziehung zu setzen, z.B. mit Fuzzy-Logik oder einem Neuron.

 

R^2 wäre eine große Hilfe

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

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

Fügen Sie dann Ihre Indikatoren und R^2 als Eingangsterme hinzu, beschreiben Sie sprachlich die Regeln der Interaktion zwischen den Variablen und erhalten Sie ein Signal am Ausgang

dies ist nur ein Beispiel, Sie können auch Neuron (es gibt auch Artikel), aber Fuzzy-Logik scheint mir flexibler und intuitiv für diese Aufgaben, und es kann auch als Neuron oder Ihre Parameter optimiert werden, aber es wird weniger Intuitionen sein

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

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

Vielen Dank für die Nachrichten.

Leider bin ich im Moment nicht mit dem maschinellen Lernen vertraut. Und ich werde es auch nicht so bald schaffen.

Ich hatte vor, den Gleichgewichtsindikator für eine schnelle, kontinuierliche Optimierung zu verwenden. Leider müssen wir für jeden Expert Advisor ein Analogon des Balance-Indikators und ein Skript zur Parametersuche entwickeln. Ich halte es für realistisch, diese Algorithmen in den Roboter zur automatischen Optimierung einzubauen. Im Prinzip handelt es sich wahrscheinlich um dasselbe maschinelle Lernen, nur auf einer selbst geschaffenen Ebene.

Vielleicht komme ich auch noch dazu.

In der Zwischenzeit findet vielleicht jemand das, was ich habe, nützlich. Balance-Indikator für 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. Ich wäre Ihnen dankbar, wenn Sie einige Beispiele für ähnliche Indikatoren in diesen Thread aufnehmen könnten. Es wäre besser, wenn es zusammen mit dem Expert Advisor, den es kopiert, eingesetzt würde.

 
Ah, Sie springen mit dem Fallschirm ab für eine Echtzeit-Option... das ist dasselbe.
 
Aleksey Panfilov:

Und ohne den Slang? :))))))

Berechnen Sie anhand der aktuellen Parameter eine Gleichgewichtskurve in einer bestimmten Tiefe der Historie, und wenn sie schlecht ist, korrigieren Sie sie live, und beobachten Sie die Kurve erneut... bis sie optimal wird, handeln Sie dann, bis sie wieder zu sinken beginnt, und gehen Sie erneut über die Parameter... Der Backtest wird in diesem Fall natürlich lang sein

 
Aleksey Panfilov:

Ich danke Ihnen.

Aber es wird eine Million Griffe geben, ich werde alle Indikatoren im Expert Advisor Body neu schreiben müssen