トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 320

 
ミハイル・マルキュカイツ

<グラフ>を表示します。

私なら、最適化の日付を6分の1に短縮して、オプティマイザがこれらのグラフの先端部分しか見ないようにし、上に書いたようにパラメータにロールオーバーの日付を入れて最適化します。

そして、すでに数カ月分のデータでテストを行い、純粋に視覚的に評価した結果、最適なものが見つかったかどうかを確認するのです。

 
ミハイル・マルキュカイツ

ポイントは、NSの話ではなく、Sequentの話なので、同じ作業期間で入力値を変えてその持ち味を見ることです。最適化せず、手探りで進めた。

5-5

6-6

7-7

このケースは、同時期の4-8と合わせると、さらに興味深い。そして、300pipsのストップロスで動作します。

1月1日から現在に至るまでです。正直言って、オプティマイザーで最後の画面を選んだのですが、まあ、オプティマイザーのパスは49個しかないんですけどね。ですから、実は、無次元集合からではなく、これだけバリエーションが少ない有限集合から必要なパラメータを正しく選ぶことを学ばなければならないのです。というわけで.........。


ReshetovのRNNではなく、分類器を使ってはどうでしょうか? そこには面白い論理的な核があり、botはデフォルトで動作させることが可能です

NSの入力にオシレータと回帰勾配を与え、与えられたバーの本数分与えるというようなタスクがある。理論上、オシレーターはフラットにしか機能せず、トレンドに流される。回帰の傾きを正規化した値を追加すれば、グリッドはトレンドの傾きを考慮したものになる。ここで、値を度単位で取るか、ポイント単位で取るか、まだ決めていません。 当面はポイント単位で、何ポイントから何ポイントまで正規化するか、です :)

double CalcRegression(double &PricesArray[])
     {
      double Summ_x=0.0;
      double Summ_y=0.0;
      double Summ_xy=0.0;
      double Summ_x_2=0.0;
      int jcount;
      for(int xcount=1; xcount<=глубина_анализа && !IsStopped(); xcount++)
        {
         jcount=глубина_анализа-xcount;
         Summ_x+=xcount;
         Summ_y+=PricesArray[jcount];
         Summ_xy+=xcount*PricesArray[jcount];
         Summ_x_2+=MathPow(xcount,2);
        }

      double bcoef=(глубина_анализа*Summ_xy-Summ_x*Summ_y)/(глубина_анализа*Summ_x_2-MathPow(Summ_x,2));  
      return(bcoef);
     }

そして、これはRNNのニューロンそのものである。振動子の3つの値だけが入力に与えられるが、もちろんこれはあまり正しくはない

double RNN(double p1,double p2,double p3)
  {
//--- вероятности для правил из базы знаний экспертной системы
   double y0 = x0; // Вероятность правила №0 в процентах
   double y1 = x1; // Вероятность правила №1 в процентах
   double y2 = x2; // Вероятность правила №2 в процентах
   double y3 = x3; // Вероятность правила №3 в процентах
   double y4 = x4; // Вероятность правила №4 в процентах
   double y5 = x5; // Вероятность правила №5 в процентах
   double y6 = x6; // Вероятность правила №6 в процентах
   double y7 = x7; // Вероятность правила №7 в процентах

//--- база знаний, состоящая из набора взаимоисключающих правил
   double probability=
                      (1.0 - p1) * (1.0 - p2) * (1.0 - p3) * y0 + // Правило №0
                      (1.0 - p1) * (1.0 - p2) * p3 * y1 +         // Правило №1
                      (1.0 - p1) * p2 * (1.0 - p3) * y2 +         // Правило №2
                      (1.0 - p1) * p2 * p3 * y3 +                 // Правило №3
                      p1 * (1.0 - p2) * (1.0 - p3) * y4 +         // Правило №4
                      p1 * (1.0 - p2) * p3 * y5 +                 // Правило №5
                      p1 * p2 * (1.0 - p3) * y6 +                 // Правило №6
                      p1 * p2 * p3 * y7;                          // Правило №7

//--- конвертируем проценты в вероятности 
   probability=probability/100.0;

//--- возвращаем результат в виде вероятности
   return(probability);
  }
 
マキシム・ドミトリエフスキー


ReshetovのRNNを使ってみてはいかがでしょうか? 面白いロジックエンジンがあり、デフォルトでbotを稼ぐようにすることも可能です

オシレーターは横ばいの時だけ働き、トレンドの時は流し込むというのがセオリーです。理論的には、オシレーターはフラットな状態でのみ機能し、トレンドの中では注がれる。回帰の傾きを正規化した値を追加すれば、グリッドはトレンドの傾きを考慮したものになる。ここで、値を度単位で取るか、ポイント単位で取るか、まだ決めていません。 当面はポイント単位で、何ポイントから何ポイントまで正規化するか、です :)

そして、これはRNNのニューロンそのものです。オシレータの3つの値しかフィードされませんが、これはあまり正しくありません


ありがとうございます!今日のデータで是非試してみます。

どこで手に入るのか、不謹慎ながら教えてください。探してみても見つからない。

 
ミハイル・マルキュカイツ


ありがとうございます!今日のデータで是非試してみます。

どこからダウンロードすればいいのか、教えてください。ありがとうございました。

RNNとRNN3とその未発表の論文がMQL5にありますが、使い物にならないですね。RNN3よりもオプティマイザーでRNNがよく動く。
ファイル:
RNN_MT5.zip  223 kb
 
マキシム・ドミトリエフスキー

そして、これはRNNのニューロンそのものです。3つの発振器の値だけが入力に供給され、もちろん、あまり正しくありません

面白いコードですね、ありがとうございます。そして、記事にも。


RNN(double p1,double p2,double p3)

パラメータ p1, p2, p3 の値はすべて 0 から 1 であるべきです。もし、回帰からこれらのパラメータの1つに B を渡すなら、同じ区間 [0;1] に正規化することを確認してください。


一般に、この戦略は、RSIの値が高いことは価格が下がることを意味するという理論に基づいています。正確を期すため、3つのRSI値を取り、確率論のルールにより3つのパラメータから1つの推定値を得ることができる。
ですから、3つ目のRSIの代わりに自分自身のシグナルを出した場合、このシグナルの値が高いということは、価格が下がるということを意味するはずです。そうでなければ、戦略を破ってしまいます。

 
Dr.トレーダー

面白いコードですね、ありがとうございます。そして、記事にも。

回帰のB値をこれらのパラメータのいずれかに渡す場合、それは同じ区間[0;1]に正規化されなければなりません。


はい、その通りです。我々はそれが> 0.5を成長させたいが、rsiは、ゼロに傾向があり、回帰はまた、< 0.5のときに低下しますが、それはニューロンの出力で確率<0.5の場合に購入されますので、我々はそれが上昇相場で買い、下落1で販売したい場合だけ我々は回帰値を反転させる必要があります。
 
Dr.トレーダー

一般に、この戦略は、RSIの値が高いほど価格が下がるという理論に基づいています。正確な予測をするために、3つのRSI値を取りました。したがって、確率論によれば、3つのパラメータから同じ推定値を得ることができます。
ですから、3つ目のRSIの代わりに自分自身のシグナルを出した場合、このシグナルの値が高いということは、価格が下がるということを意味するはずです。そうでなければ、戦略を破ってしまうことになります。


はい、その通りです。ちょうど上に書きましたね :)

m5で最適化されたデフォルトのグリッドをモニタリングに投入 https://www.mql5.com/ru/signals/297732

次に、ニューロンへのさまざまな入力をもっと実験してみます。

Торговые сигналы для MetaTrader 5: NEUROSHELL test
Торговые сигналы для MetaTrader 5: NEUROSHELL test
  • Maxim Dmitrievsky
  • www.mql5.com
Торговый Сигнал NEUROSHELL test для MetaTrader 5: копирование сделок, мониторинг счета, автоматическое исполнение сигналов и социальный трейдинг
 

https://www.mql5.com/ru/code/127

が、コードにエラーが あり、インジケータの配給がおかしいと思います。

Наклон линейной регрессии
Наклон линейной регрессии
  • 投票: 24
  • 2010.07.05
  • Vladimir
  • www.mql5.com
Наклон линейной регрессии, нормализованный к SMA
 
マキシム・ドミトリエフスキー
RNNとRNN3があり、MQL5にはその未発表の記事があります。RNN3よりもRNNの方がオプティマイザーでの動作が良い。


ありがとうございます!!!5なのが残念ですが、とりあえず自分のデータで試してみます...。

 
ミハイル・マルキュカイツ


ありがとうございます!!!5なのが残念ですが、とりあえず自分のデータで試してみます...。


5のバージョンはフォワードテストができるので便利です、NSにはちょうどいいのです、4のバージョンでは同じことが、私の意見では、コードベースにありました、見ると

https://www.mql5.com/ru/code/10616

RNN_MT4
RNN_MT4
  • 投票: 2
  • 2012.02.20
  • Yury Reshetov
  • www.mql5.com
Советник со встроенной экспертной системой
理由: