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

 
Dr.トレーダー

予測変数の作成には、標準的な指標をベースにしています。私自身、このフォーラムのスレッドからアイデアを得て、まだ実験している最中です。

私はこの数週間それをやっています、今最高の結果は次のとおりです:(多くの計算、私はより良い速度を得るためにD1タイムフレームを使用しようとしています、その後、私はより小さいタイムフレームを使用します)。

1)mt5からcsvにエクスポート:ohlc、時間、指標、すべて最後の10バーのために。他のバーの時間は計算できるため、新しい情報は得られないと考え、最近は最新のバーからしか時間を取らないようにしています。数百の「一次」予測器が出てくる。学習結果は「1」または「0」、つまり次のバーでの価格の上昇または下降が要求されます。ジグザグを使った私の方法は安定しておらず、複雑なものです。モデル学習のアルゴリズムが一から完成したら、ジグザグやトレンドの予測に着手するかもしれません。

2) Rでは、利用可能なデータに対して、加算、差分、最小、最大など、さまざまな数学的演算を行っています。すでに1000人以上の予測が出ています。

3) 2段階目以降のゴミが明らかに必要以上に多い。基本部品の記事http://www.r-bloggers.com/principal-components-regression-pt-2-y-aware-methods/、 以前SanSanychさんが書かれていた方法でふるい分けしています。PCRモデルそのものを教えるわけではなく、とりあえず予測因子の事前スクリーニングのための関数に落ち着いています。

srcTable は予測変数のテーブルで,最後の列は必要な学習 結果であるべきです.

その結果、この関数は、有用な情報を持つテーブルの列名を含むリストを返します。また、有用なものが見つからなければ空リストとなる。この方法は、記事中ではあまり意味がないように書かれていますが、実際には非常に適切で、ゴミをよく選別してくれることがわかりました。また、結果の一覧は、関連性の高い順に、より有用なものからそうでないものへと並べ替えられます。

4) 関数が空のリストを返した場合、2番目のステップを再度実行し、利用可能なデータに対して再度異なる数学的組み合わせを生成し、3番目のステップでふるい落とします。これを3〜4回繰り返さないといけない。繰り返すごとにデータ量が増えていくので、何とかして新しく発生するデータ量を制限したほうがいい。このふるいにかける関数を変更し、リストが空になったら、100~200のベスト結果を返し、そこからだけ新しい予測器を生成するようにすればよいのです。

5)次に、記事によると、メインコンポーネントのモデル自体を学習させる必要があります。今のところ、学習済みモデルの最高のr二乗は0.1ですが、これでは不十分です。記事には、少なくとも0.95が必要だと書かれています。しかし、得られた予測変数に対して他のRモデルを学習させれば、より良い結果が得られるでしょう。私はニューロニクスの経験が最も豊富で、フロントテストでは約37%の誤差で最高の結果が得られました。PCEモデルは再トレーニングなどがなく、より安定しているはずなのですが、今のところ予測変数が手に入りません。


おめでとうございます!結果を掲載していただきありがとうございます。

私はあなたのこの投稿が評価されることを願っています -あなたは、取引の基本的な問題を解決していない場合、それは誇張なしです

それ以外のことは、すべて後から付いてくる。

改めておめでとうございます!頑張ってください

 
Dr.トレーダー

予測変数の作成には、標準的な指標をベースにしています。私自身、このフォーラムのスレッドからアイデアを得て、まだ実験している最中です。

私はこの数週間それをやっています、今最高の結果は次のとおりです:(多くの計算、私はより良い速度を得るためにD1タイムフレームを使用しようとしています、その後、私はより小さいタイムフレームを使用します)。

1)mt5からcsvにエクスポート:ohlc、時間、指標、すべて最後の10バーのために。他のバーの時間は計算できるため、新しい情報は得られないと考え、最近は最新のバーからしか時間を取らないようにしています。数百の「一次」予測器が出てくる。学習結果は「1」または「0」、つまり次のバーでの価格の上昇または下降が要求されます。ジグザグを使った私の方法は安定しておらず、複雑なものです。モデル学習のアルゴリズムが一から完成したら、ジグザグやトレンドの予測に着手するかもしれません。

2) Rでは、利用可能なデータに対して、加算、差分、最小、最大など、さまざまな数学的演算を行っています。すでに1000人以上の予測が出ています。

3) 2段階目以降のゴミが明らかに必要以上に多い。基本部品の記事http://www.r-bloggers.com/principal-components-regression-pt-2-y-aware-methods/、 以前SanSanychさんが書かれていた方法でふるい分けしています。PCRモデルそのものを教えるわけではなく、とりあえず予測因子の事前スクリーニングのための関数に落ち着いています。

srcTable は予測変数のテーブルで,最後の列は必要な学習 結果であるべきです.

その結果、この関数は、有用な情報を持つテーブルの列名を含むリストを返します。また、有用なものが見つからなければ空リストとなる。この方法は、記事中ではあまり意味がないように書かれていますが、実際には非常に適切で、ゴミをよく選別してくれることがわかりました。また、結果の一覧は、関連性の高い順に、より有用なものからそうでないものへと並べ替えられます。

4) 関数が空のリストを返した場合、2番目のステップを再度実行し、利用可能なデータに対して再度異なる数学的組み合わせを生成し、3番目のステップでふるい落とします。これを3〜4回繰り返さないといけない。繰り返すごとにデータ量が増えていくので、何とかして新しく発生するデータ量を制限したほうがいい。このふるいにかける関数を変更し、リストが空になったら、100~200のベスト結果を返し、そこからだけ新しい予測器を生成するようにすればよいのです。

5)次に、記事によると、メインコンポーネントのモデル自体を学習させる必要があります。今のところ、学習済みモデルの最高のr二乗は0.1ですが、これでは不十分です。記事には、少なくとも0.95が必要だと書かれています。しかし、得られた予測変数に対して他のRモデルを学習させれば、より良い結果が得られるでしょう。私はニューロニクスの経験が最も豊富で、フロントテストでは約37%の誤差で最高の結果が得られました。PCEモデルは再トレーニングなどがなく、より安定しているはずなのですが、今のところ予測変数が手に入りません。

フロントテストでの誤差が30%であれば、すでにかなり収益性の高いモデルです。MT5用のExpert Advisorを作成し、Strategy Testerで確認してください。

頑張れ!時間が経てば上達します。
 
Dr.トレーダー
このコースを見始めたのですが、PythonのPandasフレームワークにかなり重点を置いています。最初のレッスンは、データ解析というより、フレームワークのチュートリアルのような感じです。しかし、チュートリアルは適切で、他の多くの役に立たないトレーニングにありがちな「私はFXのグルです、あなたの目を開かせ、あなたは何百万も儲けるでしょう」ということはなく、最後まで適切なことを話してくれるだろうという期待が持てます。しかし、このコースは株式取引のために設計されており、FXのためではないことを考慮する必要があります、私はこれらの2つの分野でモデルを教えるプロセスが似ているかどうかわかりません。
原理は同じです。取引にはニュアンスがあります。例えば、為替(スリッページ、部分約定、遅延)のテストができる現実に近い端末はあまりないのではないでしょうか。でも、そんなのあるんですね。しかし、MT5は、私の理解では、彼らのものではありません。
 
Dr.トレーダー

予測変数の作成には、標準的な指標をベースにしています。

...

2) Rで利用可能なデータに対して、加算、差分、最小、最大など、さまざまな数学的演算を行うことができる。すでに1000人以上の予測者が出ている。

3) 2段階目以降のゴミが明らかに必要以上に多い。基礎部品の記事http://www.r-bloggers.com/principal-components-regression-pt-2-y-aware-methods/ で紹介されている方法でふるいにかけるのですが 以前SanSanychさんが書かれていました。

...

その結果、この関数は、有用な情報を含むテーブルの列の名前を含むリストを返します。また、有用なものが見つからなければ空リストとなる。この方法は、記事中ではあまり意味がないように書かれていますが、実際にはかなり適切で、ゴミをうまく選別してくれることがわかります。また、結果を含むリストは、より有用なものからそうでないものへと、関連性によってソートされます。

計算がまったく偶然の産物であることを感じざるを得ないのです予想屋はゴミでしかない。彼らの中にダイヤモンドがあるかもしれない。「スープ」から「生命」が生まれるかもしれないのだから。

この方法は、コンピューティングの巧みな最適化であることがわかったのです。ブルートフォースではなく、よりインテリジェントなアルゴリズムがある場合。しかし、入力は相変わらずのゴミ。

もし、どんな計算も一瞬でこなすような強力な計算機があれば、訓練はまったく必要ないことがわかったのです。しかし同時に、利益の出るTSを受け取るという質的な変化も見られないだろう。悲しいかな。

 
アレクセイ・ヴォルチャンスキー

同僚から機械学習の講座のリンクが送られてきたのですが、見てみますか?無料なんだけど、なぜかPythonなんだよね((

https://www.udacity.com/course/machine-learning-for-trading--ud501

すべてはここで 見せたほうがいい。

グッドラック

 
アントン・ズベレフ

偶然の産物であることを感じざるを得ません。予想屋はゴミばかり。もしかしたら、彼らの中にダイヤモンドがあるかもしれない。何しろ、人生は「スープ」から生まれるかもしれないのだから。

....それは悲しいことです。

あなたは絶対に間違っている!

例を挙げて説明します。

コドバシを取る。その中にあるものはすべてゴミか、それとも価値あるものがあるのか。最もありそうなのは、やはり多くの人の体験談です。

ここで、確実にトレンドトレードを行うことを想定してみましょう。コドベースの利用可能なインジケーターのうち、トレンドトレードに有効なのはどれですか?名前から判断するのか、直感的に判断するのか。そして、現実的にいくつを選んで試せるのか。10, 20, 100?組み合わせから考えても、100は一生テスターを通していると思います。

しかし、最も重要なのは、試すべき指標の数だけではありません。要は、そのExpert Advisorが将来も使えるかどうかということです。そして、Expert Advisorが将来的に機能するのは、1つのケースに限られます - 再教育しない場合(過剰教育しない場合)。機械式トレーディングシステムの構築における主な問題は、オーバートレーニング(過適合)の問題である。多くの人がこの問題を克服することができたのでしょうか?

Dr.Traderは トーチからプレディクターを作ったのではなく、何らかのアイディアがあったのだと思います。現時点では、これだけのプレディクターを生成するという発想は面白くありません。

面白いのは、まったく別のところです。

興味深いのは、あなたが注意を払わなかったことです。

Dr.Traderは、何千もの予測変数の中から、Expert Advisorのオーバートレーニング(過適合)を引き起こさないものを選択することができます。

彼はオーバーフィットしたEAの開発を引き起こさないような予測因子を選択する方法を知っているだけでなく、それを実行するコードも示しているのです。

 
サンサニッチ・フォメンコ

完全に間違っている!

例を挙げて説明しよう。

コドバシを取る。その中にあるものはすべてゴミか、それとも価値あるものがあるのか。多くの人が体験しているのだから、あるのだろう。

もちろん、屑です。まあ、コドバシ全体を予測因子とすれば......。

Dr.Traderは、数千の予測変数の中から、Expert Advisorのオーバートレーニング(過適合)を引き起こさないものを選択することができます。

彼はオーバーフィットしたEAの開発を引き起こさないような予測因子を選択する方法を知っているだけでなく、それを実行するコードも示しているのです。

そして、巨大なゴミの山から、ダイヤモンドはおろか、一粒の宝石も出てこないことが判明したのである。言っとくけど、望みは薄いぞ。

あるいは、このような指標がゴミでないことを立証できる人はここにいるのだろうか?そして、この予測因子の相対的な重要性を数字で示しなさい。

 

そうですね、ランダムアクションが多いですね、納得です。しかし、一つの指標だけを取り出して、それを元にEAを作っても、すぐに下火になってしまいます。指標は100%ゴミではありませんが、指標だけでは値動きを予測するのに十分な情報を得ることはできません。しかし、私はこれまでの研究で、指標を組み合わせることで予測力を高めることができる、つまり、ゴミからダイヤモンドを作ることができることを発見しました。問題は、考えられる組み合わせが何千通りもあり、そのうちの数十通りしか有用なものがなく、どの指標が初期に優れているのかがわからないことです。これまでこの問題は、先に書いたように、ブルートフォースと長い計算で解決してきました。時間が経つにつれて、どの指標が最終予測によく入るかという統計が取れ、その指標だけで作業できるようになれば、すべてが早く進むようになります。

得られた予測値をもとにExpert Advisorを作り始めましたが、その結果はテスターで実際に確認することができます。60%の確率で予測されたバーがあったとしても、予測されたバーがあった場合の方が、予測されなかった場合よりも価格の移動距離が短いため、損失を被ることになると言われています。その場合、バーが出る割合ではなく、モデルの収益性を推定するために、独自にフィットネス関数を作ってニューロニクスを学習させる必要があります。

 
Dr.トレーダー

たしかに、ランダムでアクションを起こすことが多いですね、納得です。しかし、1つのインジケータだけを取り出してExpert Advisorを作成することはできません、あなたはすぐにそれで負けるでしょう。指標は100%ゴミではありませんが、指標だけでは値動きを予測するのに十分な情報を得ることはできません。しかし、私はこれまでの研究で、指標を組み合わせることで予測力を高めることができる、つまり、ゴミからダイヤモンドを作ることができることを発見しました。問題は、可能な組み合わせが何千通りもあり、そのうちの数十通りしか有用なものがなく、どの指標が初期に優れているのかがわからないことです。これまでこの問題は、先に書いたように、ブルートフォースと長い計算で解決してきました。時間が経てば、最終的な予測値に到達する頻度の高い指標についての統計ができ、その指標だけで作業できるようになり、すべてがより速く進むようになるでしょう。

一つのBPで 相関性を見出したいのでしょう。そして、そのBPの中に常に存在 しなければならない相互関係を見つけたいのです。

この2つの状況(太字)は、はっきり言っておかしいと思います。

機械学習の手法により、写真から物体(犬、オレンジなど)を認識することができるようになった。つまり、人間やある種の動物が認識できるものを認識できるようになったのです。人や動物が価格BPを見たとき、それは何も意識していない。つまり、NSで比較することができないのである。しかし、人間が複数のBPを同時に見ると、肉眼でも似たようなものが見えてくる。そして、これらの共通点は、実際に、実現されています。したがって、機械学習の技術を乗せるのが理にかなっているのは、対象物の認識である。

まずは自分たちで気づき、そしてアルゴリズムを 試す。わかると思うのですが

昔々、EURGBPのオーバーナイトがとても格好良かった(儲かった)。あなたのNSは、それを認識していなかったでしょう。夜間急勾配の理由を理解した人たちが利益を得たのだ。そして、これらのEURGBPの歴史の断片にアルゴリズムを適用し、突然急騰した日を探し出したのです。急峻になる前のデータでステータスを損なわないように。彼らは調査を開始した。そして、多くの人がそれで大儲けしました。フォーラムを読んでみてください。

今、GOLD/SILVERがクールだと想像してください。そのようなペアはありませんが、取引は可能です。しかし、BP一本に絞っていますね。そして、異なるBP間の相互関係を調べることは論理的なことである。この場合、GOLD/SILVERのようなペアが出現することがある。そして、1週間、1日、1夜などの間隔も大きく影響します。人々の行動は、時間帯や曜日によって 異なります。意識的なデータなので、そこを掘らないといけないのがIMHOです。

 
アントン・ズベレフ

一つのBPで 相関性を見出したいのでしょう。そして、そのBPの中に常に存在 しなければならない相互関係を見つけたいのです。

...

まず自分たちで気づき、次にアルゴリズムを 試す。わかると思うのですが

...

でも、BP一本に絞ったんですね。そして、異なるBP間の相互関係を調べることは論理的なことである。この場合、これらの「GOLD/SILVER」を入手することができます。また、1週間の間隔、昼か夜か、なども大きく影響します。人々の行動は、時間帯や曜日によって 異なります。これは意識的なデータなので、そこを掘っていかないといけないんです、IMHOは。

ここまでは、条件付き「未来」の「過去」に対する依存性を、同じ時間軸上に見出そうとしているのである。しかし、シリーズの組み合わせに挑戦しないわけではありません。

認知度についてみかんの場合は、あなたの推理が当てはまります。専門家であっても、オレンジは何種類か見分けることができるかもしれません。

金融BPの場合、パターン、つまり利用可能な時間間隔全体におけるBPの単調な挙動を区別する必要があります。そう、時々、何かが見えるような気がするのです。しかし、この知識は非常に曖昧で、依存関係のパラメータも正確に定義されているわけでは全くありません。ここでコンピュータの力を借りない手はない。目分量で中毒を見つけ、それをエンコードできる人がいないとは言いませんが。

たくさんのゴミを集めて、そこから価値あるインプットを引き出そうというのは、私もDr.Traderと同じ考えです。それらの入力の値は、モデルを学習させ、検証することで確認される。ノイズでなければ、検証にプラスになる。それが機械学習の全課程です。)

そんな生入力を試してみました。

> names(sampleA)

  [1] "lag_diff_2"        "lag_diff_3"        "lag_diff_4"        "lag_diff_6"        "lag_diff_8"        "lag_diff_11"       "lag_diff_16"     

  [8] "lag_diff_23"       "lag_diff_32"       "lag_diff_45"       "lag_diff_64"       "lag_diff_91"       "lag_diff_128"      "lag_diff_181"    

 [15] "lag_diff_256"      "lag_diff_362"      "lag_diff_512"      "lag_diff_724"      "lag_mean_diff_2"   "lag_mean_diff_3"   "lag_mean_diff_4" 

 [22] "lag_mean_diff_6"   "lag_mean_diff_8"   "lag_mean_diff_11"  "lag_mean_diff_16"  "lag_mean_diff_23"  "lag_mean_diff_32"  "lag_mean_diff_45"

 [29] "lag_mean_diff_64"  "lag_mean_diff_91"  "lag_mean_diff_128" "lag_mean_diff_181" "lag_mean_diff_256" "lag_mean_diff_362" "lag_mean_diff_512"

[36] "lag_mean_diff_724" "lag_max_diff_2"    "lag_max_diff_3"    "lag_max_diff_4"    "lag_max_diff_6"    "lag_max_diff_8"    "lag_max_diff_11" 

 [43] "lag_max_diff_16"   "lag_max_diff_23"   "lag_max_diff_32"   "lag_max_diff_45"   "lag_max_diff_64"   "lag_max_diff_91"   "lag_max_diff_128"

 [50] "lag_max_diff_181"  "lag_max_diff_256"  "lag_max_diff_362"  "lag_max_diff_512"  "lag_max_diff_724"  "lag_min_diff_2"    "lag_min_diff_3"  

 [57] "lag_min_diff_4"    "lag_min_diff_6"    "lag_min_diff_8"    "lag_min_diff_11"   "lag_min_diff_16"   "lag_min_diff_23"   "lag_min_diff_32" 

 [64] "lag_min_diff_45"   "lag_min_diff_64"   "lag_min_diff_91"   "lag_min_diff_128"  "lag_min_diff_181"  "lag_min_diff_256"  "lag_min_diff_362"

 [71] "lag_min_diff_512"  "lag_min_diff_724"  "lag_sd_2"          "lag_sd_3"          "lag_sd_4"          "lag_sd_6"          "lag_sd_8"        

 [78] "lag_sd_11"         "lag_sd_16"         "lag_sd_23"         "lag_sd_32"         "lag_sd_45"         "lag_sd_64"         "lag_sd_91"       

 [85] "lag_sd_128"        "lag_sd_181"        "lag_sd_256"        "lag_sd_362"        "lag_sd_512"        "lag_sd_724"        "lag_range_2"     

 [92] "lag_range_3"       "lag_range_4"       "lag_range_6"       "lag_range_8"       "lag_range_11"      "lag_range_16"      "lag_range_23"    

 [99] "lag_range_32"      "lag_range_45"      "lag_range_64"      "lag_range_91"      "lag_range_128"     "lag_range_181"     "lag_range_256"   

[106] "lag_range_362"     "lag_range_512"     "lag_range_724"     "symbol"            "month"             "day"               "week_day"        

[113] "hour"              "minute"            "future_lag_2"      "future_lag_3"      "future_lag_4"      "future_lag_6"      "future_lag_8"    

[120] "future_lag_11"     "future_lag_16"     "future_lag_23"     "future_lag_32"     "future_lag_45"     "future_lag_64"     "future_lag_91"   

[127] "future_lag_128"    "future_lag_181"    "future_lag_256"    "future_lag_362"    "future_lag_512"    "future_lag_724"

値動きには時間や様々な指標があります。そして、それらもふるい分けました。ここで、私が手に入れたものを見てみましょう。

Expert Advisorのうち、Rで学習させた機械から信号を受け取る部分です。選択されたエントリーはそこに表示されます。ところで、そもそも、トレードが開始される時間帯というのがある。つまり、時間が大切なのです

1999.02から2016.06までの全履歴に対するExpert Advisorのテストです。

少し曲がっていますが、それでも機械はノイズではなく、示された入力からの依存関係を学習します。

したがって、私たちはプラスに働いているのです。少なくとも、実験結果を改善します。

ファイル: