FC2ブログ

機械学習EA出来てはみたものの・・・

EA作成中
06 /21 2020
機械学習でEAを作ったら、いけるんじゃない?という目論見で始めましたが、無理なんじゃ?というところに来ています。
一番大きな理由がオーバーフィッティング・・・カーブフィッティングですね。

既知のデータに対して学習し、「既知のデータで推測可能な」未知のデータを予測、分類するというのが機械学習ですね。

ここが重要→「既知のデータで推測可能な」未知のデータ
FXって違うんですよねー・・・知ってたけどww

既知のデータで学習するしかないのですが、既知のデータから推測できない未知のデータはどうやっても推測できないのです。
まぁ、当たり前 ┐( ̄o ̄)┌ 

2020年1月~3月で学習し、4月~5月のデータでは少し良い感じになったとしても、2019年のデータでは全く通用しないとか、よくあるEAの動きですね。

汎化したらいいのでは?

汎化したら?と思い、いろいろ試してみましたが、汎化しすぎると機械学習する意味もないですよね。
たとえば、ADXが0.35以上はトレンドが発生しそうだからシグナルを通すとか単純なフィルタリングするレベルになってしまいます。
それ以上の学習をさせてしまうとカーブフィッティングになります。

バックテストで最適化しただけでもカーブフィッティングになるのですからね。機械学習なんてしたら完全なカーブフィッティングになることは当然でしょう。

じゃぁ機械学習って使えない?

時系列データの考慮をしたとしても、カーブフィッティングになるのは防げないのでは?と思っています。
なのでRNN、LSTMを使ったとしても「学習」で覚えてしまえば、その学習データのクセを覚えてしまうと思われます。
なので、直接的な使い方は難しいのかもしれません。

カーブフィッティングにならないような学習の方法があれば良いのですけど・・・
例えば、数値をそのまま学習するのではなく、レベルを学習するとかですね。広がりが大きい、中くらい、小さいとか、10.0ずつ区切って10分割で学習するとかが有効かもしれません。

バックテスト

学習したデータと結果はこちら

データ:BB-width,MACD,VQ,ADX
BB-width, 24.396581
MACD,     27.096298
VQ,       32.675617
ADX,       15.831504

accurate =  14.378698224852071  
real accurate =  42.99242424242424

total profit = 985.500000, 
order error= 239 / 528, 54.734848%

2020年1月~3月で学習したモデルで、2020年4月~5月で評価した結果です。
54.73%の勝率で、985PIPSの利益が見込めることになっています。

macdランダムフォレスト-バックテスト

52.88%の勝率で、588.92PIPSの利益になりました。

macdランダムフォレスト-グラフ

macdランダムフォレスト2019-グラフ

上が2020年4月~5月で、下が2019年7月~12月です。
確実に最適化、カーブフィッティングになっています。

次の手はあるのか・・・

機械学習については、まずはこの状態で置いておいて、良い手を思いつけばということろです。
実数から段階表記にして学習という手はありますが、これがダメだと本当に手がないので、他のことをやりながら、進めていくほうがダメージが少ないかもw
( ̄- ̄;)

MT5にもずいぶん慣れてきましたので、単純なシグナルで世にあるインジケータの有効性を調べてみようかなと思っています。
単純なシグナルは、MACDのシグナル線とのクロスとか、ストキャスティクスの80-20ライン越えとか、ボリンジャーバンドの2.5σ越えとかですね。
このシグナルを、このインジケータでフィルタしたら良い結果が得られるのか?とか・・・インジケータ探しをしてみようかと思います。

pythonとMT5の連携もやってみたいですね。

まだまだ夢(右肩上がりEA)の実現へ向かって突き進みますよー
Oo。。( ̄¬ ̄*)




パペ太

パペ太は自動人形(EA)を操るという意味で、puppeteer(人形遣い)から付けました。
高収益のEAを目指して日々悩んでいます。