EA用の機械学習おさらい
EA作成中
ずいぶん前に機械学習「ランダムフォレスト」を使ったEAを作る!と書いたのですが、機械学習部分の作成具合は、今どのような状況かというと。
全期間を学習させて、全期間で評価しています。
ランダムフォレスト予測
いくつかの通貨ペアで試しましたが、EURUSD、CADJPYの成績がまぁまぁでした。
半年間で学習させ、違う年度の半年間で評価をした成績です。
- EURUSD 58.46%(45.0%)
- CADJPY 58.6%(34.48%)
カッコ内は予測が合っていた割合、カッコ外(こちらが重要)は、ロング・ショートをオーダー後に指定期間内でオーダー方向に一定PIPS動いたかの割合。
- 指定期間内で一定PIPS上昇
- 指定期間内で一定PIPS下降
- 指定期間内で一定PIPSまで動かない
いろいろ簡易的に作成していますので、そこまでの信頼性は残念ながら無いのですが、ある程度の目安にはなると思います。
特徴量=入力データは、
- 終値
- Stochastics 9期間, 26期間, 両指標のサイン(80-20越え)
- RSI 14期間、サイン(70-30越え)
- 移動平均 6期間, 26期間
- 適応型移動平均 26期間
- MACD 19, 9期間、サイン(6期間のシグナル線とのクロス)
- 包み足、ピンバーの状態
間違えていました。全期間ではなく、StochasticsとMACDのサインが出ている時のみ学習・評価しています。
ただランダムフォレストは一時点でのデータの扱いしかできないため、時系列データを考慮できないのが難点です。特徴量同士の関連付けもできないので、終値や移動平均などを前値とのパーセンテージで表すなどをしたほうがいいかも。
目標値は60%を達成するには、時系列要素をデータに入れ込むことが必要になると思っています。
まずは、MT5で動かすほうを先決に考えます。
MT5への組み込み
機械学習の組み込みで問題?というか課題?だと思っているのが「学習と予測はいつする?」ということです。
理想的には、ベースを学習した「学習モデル」を随時、学習していって「学習モデル」を成長させていくというパターン。ただ計算コストが半端ないw
定期的にローカルで学習させたモデルを運用しているモデルと入れ替えるのが現実的でしょう。
ローカルで学習させるには、pythonでの学習用プログラムが別途必要になるのが難点。
そして全期間で予測するというのもVPSのパワーによりますが、きついのではないかと思っています。(Linuxでは動作が早めなのですが、Windowsでの動作が異様に遅いんですよねー)
全期間で予測するのはパワーの問題だけでもなくて、あまり予測を連続させても成績が悪くなるだけのような気がしています。まぁこちらに関してはやってみれば良いことですね。
ということで、基本方針は、
- 特徴量の選別。(今のままでいいか?w)
- ローカルで学習させる。
- MT5では、
全期間での予測もしくは、予測ポイントでの予測
※予測ポイントは「MACD山谷」や「Stochastics、MACDのシグナル」など
できるだけ今まで作成した部分を流用しながら、効率よく作っていこうと思います。
実際の成績はバックテスト、フォワードテストをやってみないと分からないですからねー
o( ̄ー ̄;)ゞ
- 関連記事
コメント