EA開発 3日目 @MT5

昨日のバックテストの成果がうまく動かない
= s/lが設定出来ない症状が発生していましたが、原因がわかりました。

デバッグしてみると、1回目は通っているのですが、そして、2回目に失敗。

2回目のs/lの値は、1回目に設定した値で設定されており、
その値はサーバーから拾って来れたんですが、

問題は、「ポジションのs/lと現在価が、200pips離れたときにのみ」
という条件をつけていたのですが、

OnTickのイベントなんて、頻繁に起こるため、

絶対値(ポジションのs/l – 現在価) > 200pips

という条件に毎回引っかかった上、
毎回、同じs/l値を設定しようとしていたのが、原因でした。

一番の原因は、double値の精度の問題で、
きっちり、200pips引けているわけじゃなくて、
0.01999999998など、200pipsより下の数値が渡されることにより、
毎回、200pips以上離れている条件に偶然?、適合したのが原因だったようです。

なので、

絶対値(ポジションのs/l – 現在価) > 200pips * 1.01
=202pips 以上の差の場合

と、おまじないに「* 1.01」を追加し、
doubleの精度や、厳密な比較を無視するように、変更しました。

 

この結果、バックテストはうまくいき、

  • 4/1 ~ 5/1で、220%増
  • 4/1 ~ 6/1で、580%増

の結果を得ることが出来ました!

EA トレンドのおっかっけ
トレンド変換も、s/lの設定により、うまく浚えています。

ただ、7月は、大きなトレンドも発生せず、もみ合いが続いたため、
50%減という、渋い数値。

  • レンジでの負けを最小にすることが大事なのと、
  • トレンド変換時のs/lを200pips以下に設定することにより、

より、しっかり取れるようになると思います!

 

基本ロジックがとてもしっかりしているので、
EAにより、より精度を上げることができそうです。

もちろん、裁量判断が出来ればいいのですが、
人が介入すると、ろくなことはおきません!=基本ルール無視

AIでもぶち込めればいいのですが、
そんなもんどうやって組んでいいのか皆目検討もつかないので、
なんか数式入れて、凌ぐことにします。

  • 4/1 ~ 5/1で、220%増 >> 300%
  • 4/1 ~ 6/1で、580%増 >> 1000%

も、見えてきました♪

あとは、レンジですね。

EA開発 3日目 @MT5