FC2ブログ

MT5 EAプロトタイプ初号、バックテストした

EA作成中
05 /25 2020
データ保存までやろうとすると時間がかかるので、まずはバックテストをいろいろやってみました。

2019年15分足で学習したデータで、2019年を予測!(外れてたら、全く使えないw)
2019学習-2019

当たり前ですが、2019年のデータを学習させて、2019年が予測できなかったら、もう完全にやり直しというか、もうこの手法はないでしょ。
(2018年で学習させていたと思って、ぬか喜びをしてしまったのは内緒ですw)

ところが、2018年を予測させると・・・
2019学習-2018
使えませんねー

2020年が使えるなら、ワンチャン
2019学習-2020
ダメないような、良いような・・・・でもダメですねー
(_ _|||)

じゃぁ、2020年3月までで学習させて、4月から評価したら?
2020-03学習-202004~

学習期間は良いんだけどなー(当たり前!)・・・4月、5月はマイナスですねー

どう見たらいいのか?

検証をするまでもなくオーバーフィッティング?カーブフィッティングになっていると考えていいかなーと思っています。

作りっぱなしでパラメータチューニングもしていないのですが、【学習】というチューニングが強力なのでしょう。
機械学習は似たパターンに対しては強いですが、未知のパターンへの対処が苦手なのは、わかっていましたが、現実を突きつけられた感じです。
ここで諦めても面白くないので、カーブフィッティングを解消するために汎化を考えましょう。

機械学習でオーバーフィッティングになっている場合は汎化するということ。
簡単にできる汎化はシンプルな学習モデルにすることです。

今回の学習モデルは、19種類のデータ(特徴量)を学習させています。他には、
・決定木の数:200
・ノードの深さ(最大値):99
・判断する時のデータ数:20
・判断するデータ量:全体の66%

決定木の数を増やすのは汎化方向に行くので増やす方向で、ノードの深さを浅くして、判断する時のデータ数を少なくすると汎化できると思います。
特徴量も10以下に絞った方がいいかもしれません。特徴量を絞れば決定木の数はそのままでも良いのかな。

気になっていたこと

iCustomでインジケータのデータを参照すると、indexが"1"(一期間前)のデータがBUY/SELLのシグナルになっていました。
インジケータの作りでは、index"0"(現在値)にセットしているのに!
なので、1期間遅れてオーダーがかかるので予測とはズレが出るため、予測したデータでも良い結果にならないのでは?と思っていました。
それは心配ないようですが・・・

パぺ太メモ

汎化するにしても、チューニングするにしても、解析のできるデータを残すことが必須なので、仕組みを考えないと・・・め、面倒><

なぜ面倒なのかというと、iCustomでEAから呼び出して予測はインジケータで行っています。
オーダー決済はEAでわかりますが(この仕組みもわかりにくいw)、その時に決裁したオーダー(EA)を出した時の特徴量(インジケータ)を取り出して1セットのデータとして保存する必要があります。

S/L、T/P、クローズしたオーダーを損益、オーダー・クローズ時間(=ここまでEA)と発行した時の特徴量(=インジケータ)を1セットで保存するということですね。
このデータがあれば解析・検証が可能になります。

この仕組みいろいろ使えそうですねー
でも、クラスライブラリで作ってしまえば、こんなこと考えなくてもいいのか
┐( ̄o ̄)┌ 


関連記事

コメント

非公開コメント

パペ太

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