MT5 EAプロトタイプ初号、バックテストした
EA作成中
データ保存までやろうとすると時間がかかるので、まずはバックテストをいろいろやってみました。
2019年15分足で学習したデータで、2019年を予測!(外れてたら、全く使えないw)
当たり前ですが、2019年のデータを学習させて、2019年が予測できなかったら、もう完全にやり直しというか、もうこの手法はないでしょ。
(2018年で学習させていたと思って、ぬか喜びをしてしまったのは内緒ですw)
ところが、2018年を予測させると・・・
使えませんねー
2020年が使えるなら、ワンチャン
ダメないような、良いような・・・・でもダメですねー
(_ _|||)
じゃぁ、2020年3月までで学習させて、4月から評価したら?
学習期間は良いんだけどなー(当たり前!)・・・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作り直し?!iCustomの罠 (2020/06/05)
- 機械学習をEAの出力ファイルでやってます、その1 (2020/05/31)
- MT5 EAプロトタイプ初号、バックテストした (2020/05/25)
- 機械学習EAプロトタイプ初号 (2020/05/23)
- EAを作るのは何が必要?@振り返り (2020/05/14)
コメント