FX

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%

も、見えてきました♪

あとは、レンジですね。

-

FX EA化(5年ぶりのMT4)

5年前に作ったEAを見ながら、感覚を取り戻そうと思ったのですが、
本家MetaTradorのサイトからMT4をダウンロードしているはずなのに、
なぜか、MT5がインストールされていて・・・

まあ、MetaTrador社もMT5使って・・・

という、意図を汲み取り、MT5を入れたわけですが、
過去のソースをMT5で実行しようとしても、動かないわけで。

それ以上に、過去のソースが何をしているのかがよくわからないので、
どうせイチから勉強するなら、MT5をイチから勉強しようと、
MT5で組み始めました。

 

EA 1日目

とりあえず、WEBで解説書を見ながら、
サンプルにある「Moving Average」を追いかけてると、

  • どこソースが売買で
  • 条件判断はなにか?

などがわかるようになり、必要なコードを抜き出し、
新たにプログラムを書き始めた1日目ですが、

10pips毎に買いを入れられるようになりました。

MT5 EA 初日

今、作っているEAはトレンドを追いかけるルールなので、
ある程度、トレンドがわかると、s/l(ストップロス)を足していきます。

EA 2日目

細かなルールは、オープンに出来ないので、割愛致しますが、
2日目は、バックテストが出来るようになりました。

MT5 バックテスト

課題である、「s/l(ストップロス)」のロジックも入っているんですが、
どうもトレンドが変わったときに、損切りが出来ておらず、
損切りラインは、初回売買時に設定したs/lのまま・・・

一応、出来たところまでのSSを、発案者に送り、
発案者のルールと、プログラムの簡素化ために、ルールの変更点を伝えましたが、

ところどころ、文章だと伝わらないところもあって、
電話で

至って、売買ルールはシンプルなので、
2日目でバックテストまで出来るようになったのですが、
s/lだけ、正しく指定出来れば、もっと稼げるはず!

デバッグしてみると、この値ではs/lは設定出来ないよというエラーで・・・

2018.08.22 22:18:09.826 2018.04.12 18:49:30   failed modify #2 buy 0.10 GBPUSD sl: 1.40416, tp: 0.00000 -> sl: 1.40416, tp: 0.00000 [Invalid stops]2018.08.22 22:18:09.826 2018.04.12 18:49:30   failed modify #2 buy 0.10 GBPUSD sl: 1.40416, tp: 0.00000 -> sl: 1.40416, tp: 0.00000 [Invalid stops]

これが原因で、意図した動きがしてないんだろうな~

それでも、トレンドがはっきりしているときには、1ヶ月で10,000pips取れるが、
もみ合うと、5000pips/月ほどの損が出てしまうんですが、

 

s/lがバシッと設定できれば、負けはないと思うんですけどね。

 

原因追求がんばりますww

-