トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 516 1...509510511512513514515516517518519520521522523...3399 新しいコメント Maxim Dmitrievsky 2017.11.03 21:13 #5151 エリブラリウスチェックと足場 - NSよりはるかに速く(4分)、結果はほぼ同じです。そして興味深いのは、線形回帰は さらに高速にカウントされ、同じ結果が得られることです。 誰かがここで書いていたように、機能が重要なのです。 まあ、これは本末転倒で、モデルやバッグが違うゲームでは、大きな増加は望めません :) Forester 2017.11.03 21:13 #5152 マキシム・ドミトリエフスキー そこで、私が理解した限りでは、1回目でほとんど収束するので、1-2回のエポックを設定することができます...もしかしたら、それが省略されていたのでしょうか?長い間使っていないので、混乱しているかもしれませんが。 エポック数の制限はどこにもない Maxim Dmitrievsky 2017.11.03 21:16 #5153 エリブラリウス エポック時代のどこにも制限を見たことがないmlptrainlm関数/******************************************* 正確なヘシアン計算と正則化を用いた修正レーベンベルグ・マルカールトによる ニューラルネットワークのトレーニング。サブルーチンでは、ランダムな位置から再スタートしてニューラルネットワークを学習します。このアルゴリズムは、小中規模の問題(数百の重み)に適しています。 INPUT PARAMETERS: Network - 初期化された形状を持つニューラルネットワーク XY - トレーニングセット NPoints - トレーニングセットサイズ Decay - 重みの減衰定数、>=0。001 Decay term 'Decay*|||Weights||^2' がエラー関数に追加されます。 どのような Decay を選択すればよいかわからない場合は、0.001 を使用します。 Restarts - ランダム位置からの再スタートの数、>0。 どのような Restarts を選択すればよいかわからない場合は、2 を使用します。 これだと思うんです。 Forester 2017.11.03 21:17 #5154 マキシム・ドミトリエフスキー まあ、それがメインで、いろいろなモデルやバッグで遊んでも、あまり効果はないんですけどね :) NSの利点は、非線形の依存関係を見つけ、それを利用することだと思います。 ウラジミールさんの前回の記事には 2つありますね。線形回帰は、逆に悪化する。 Forester 2017.11.03 21:20 #5155 マキシム・ドミトリエフスキー mlptrainlm関数 これはあくまで推奨値で、最低でも1000は誰も止めないが、時間がかかるだろう...。コードを見てみると、エポック数のループがあるだけです(ちなみに私も2を使っています)。 Maxim Dmitrievsky 2017.11.03 21:26 #5156 エリブラリウス NSの利点は、非線形の依存関係を見つけ、それを利用することだと思います。 ウラジミールさんの前回の記事には 2つあります。線形回帰は逆に、それらによって劣化してしまう。また、スキャフォールドはあらかじめ非線形パターンに対してのみ使用され、線形パターンに対しては機能しない Yuriy Asaulenko 2017.11.03 21:28 #5157 elibrarius: これはあくまで推奨値で、1000を入れることを誰も止めはしませんが、時間がかかるでしょう...。コードを見てみると、エポック数によるサイクルがあるだけです(ちなみに私も2を使っています)。 6プライで1500までやりました。そう、約32時間という長丁場ですが、まず、期待以上の仕上がりです。第二に、手で投影する のに比べれば、全然長くない)。そしてMLPでは-標準的な構成で、好きなことを教えます。) Forester 2017.11.03 21:35 #5158 マキシム・ドミトリエフスキー また、スキャフォールドはあらかじめ非線形パターンに対してのみ使用され、線形パターンに対しては機能しない そのためか、検証プロットでのforestは、線形回帰よりも 0.4%も優れています)) 。)学習時間はそれぞれ36分と3分です(265入力時)。線形回帰が 好きになりそうです。 Maxim Dmitrievsky 2017.11.03 21:37 #5159 足場は1小節単位で学習し、1小節先まで予測することができます。設定で、学習深度、増分のラグ、エントリ数(新しいエントリごとに1小節分後ろにシフト)を設定します。そして、現在の価格から 予測値を差し引きます。ヒストグラムは新しいバーごとにのみ描画されることをビジュアライザーで確認しました。//+------------------------------------------------------------------+ //| NonLinearPredictor.mql5 | //| Dmitrievsky Max | //| https://www.mql5.com/ru/users/dmitrievsky | //+------------------------------------------------------------------+ #property copyright "Dmitrievsky Max." #property link "https://www.mql5.com/ru/users/dmitrievsky" #property version "1.00" #property indicator_separate_window #property indicator_buffers 2 #property indicator_plots 1 //--- plot Label1 #property indicator_label1 "Tensor non-linear predictor" #property indicator_type1 DRAW_COLOR_HISTOGRAM #property indicator_color1 clrOrangeRed,clrOrange #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- подключим библиотеку Alglib #include <Math\Alglib\alglib.mqh> //RDF system. Here we create all RF objects. CDecisionForest RDF; //Random forest object CDFReport RDF_report; //RF return errors in this object, then we can check it double RFout[1], vector[]; //Arrays for calculate result of RF CMatrixDouble RMmatrix; int retcode=0; //--- input parameters input int last_bars=500; input int lag=5; input int bars_seria = 100; //--- indicator buffers double SpreadBuffer[]; double ColorsBuffer[]; //--- время открытия предыдущего бара static datetime last_time=0; int needToLearn=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,SpreadBuffer,INDICATOR_DATA); SetIndexBuffer(1,ColorsBuffer,INDICATOR_COLOR_INDEX); //--- установим индексацию как в таймсерии - от настоящего в прошлое ArraySetAsSeries(SpreadBuffer,true); ArraySetAsSeries(ColorsBuffer,true); RMmatrix.Resize(last_bars,bars_seria); ArrayResize(vector,bars_seria-1); //--- IndicatorSetString(INDICATOR_SHORTNAME,StringFormat("Non-linear predictor (%s, %s, %s)",_Symbol,(string)last_bars, (string)lag)); IndicatorSetInteger(INDICATOR_DIGITS,5); return(INIT_SUCCEEDED); } int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- ArraySetAsSeries(close,true); if(prev_calculated==0 || needToLearn>last_bars/5) { for(int i=0;i<last_bars;i++) { for(int l=0;l<ArraySize(vector);l++) { RMmatrix[i].Set(l,MathLog(close[i+1+l]/close[i+lag+1+l])); } RMmatrix[i].Set(bars_seria-1,MathLog(close[i]/close[i+lag])); } CDForest::DFBuildRandomDecisionForest(RMmatrix,last_bars,bars_seria-1,1,100,0.95,retcode,RDF,RDF_report); needToLearn=0; } if(isNewBar()) { if(retcode==1) { for(int i=0;i<ArraySize(vector);i++) { vector[i]=MathLog(close[i]/close[i+lag]); } CDForest::DFProcess(RDF,vector,RFout); SpreadBuffer[0]=MathLog(close[0]/close[0+lag])-RFout[0]; ColorsBuffer[0]=(SpreadBuffer[0]>0?0:1); } needToLearn++; } return(rates_total); } //+------------------------------------------------------------------+ //| возвращает true при появлении нового бара | //+------------------------------------------------------------------+ bool isNewBar() { datetime lastbar_time=datetime(SeriesInfoInteger(Symbol(),_Period,SERIES_LASTBAR_DATE)); if(last_time==0) { last_time=lastbar_time; return(false); } if(last_time!=lastbar_time) { last_time=lastbar_time; return(true); } return(false); } Maxim Dmitrievsky 2017.11.03 21:38 #5160 エリブラリウス そのためか、検証プロットのforestは、線形回帰より 0.4%も優れている))。学習時間はそれぞれ36分と3分(265入力時)。線形回帰が 好きになってきた。BPの自己回帰とforestの自己回帰を比較したところ、差はほとんどありませんでした。)要するにこれは、そこそこの正常なパターンがないことを意味する 1...509510511512513514515516517518519520521522523...3399 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
チェックと足場 - NSよりはるかに速く(4分)、結果はほぼ同じです。そして興味深いのは、線形回帰は さらに高速にカウントされ、同じ結果が得られることです。
誰かがここで書いていたように、機能が重要なのです。
まあ、これは本末転倒で、モデルやバッグが違うゲームでは、大きな増加は望めません :)
そこで、私が理解した限りでは、1回目でほとんど収束するので、1-2回のエポックを設定することができます...もしかしたら、それが省略されていたのでしょうか?長い間使っていないので、混乱しているかもしれませんが。
エポック時代のどこにも制限を見たことがない
mlptrainlm関数
まあ、それがメインで、いろいろなモデルやバッグで遊んでも、あまり効果はないんですけどね :)
ウラジミールさんの前回の記事には 2つありますね。
線形回帰は、逆に悪化する。
mlptrainlm関数
NSの利点は、非線形の依存関係を見つけ、それを利用することだと思います。
ウラジミールさんの前回の記事には 2つあります。
線形回帰は逆に、それらによって劣化してしまう。
また、スキャフォールドはあらかじめ非線形パターンに対してのみ使用され、線形パターンに対しては機能しない
これはあくまで推奨値で、1000を入れることを誰も止めはしませんが、時間がかかるでしょう...。コードを見てみると、エポック数によるサイクルがあるだけです(ちなみに私も2を使っています)。
また、スキャフォールドはあらかじめ非線形パターンに対してのみ使用され、線形パターンに対しては機能しない
足場は1小節単位で学習し、1小節先まで予測することができます。設定で、学習深度、増分のラグ、エントリ数(新しいエントリごとに1小節分後ろにシフト)を設定します。そして、現在の価格から 予測値を差し引きます。ヒストグラムは新しいバーごとにのみ描画されることをビジュアライザーで確認しました。
そのためか、検証プロットのforestは、線形回帰より 0.4%も優れている))。学習時間はそれぞれ36分と3分(265入力時)。線形回帰が 好きになってきた。
BPの自己回帰とforestの自己回帰を比較したところ、差はほとんどありませんでした。)要するにこれは、そこそこの正常なパターンがないことを意味する