FC2ブログ

EA作り直し?!iCustomの罠

EA作成中
06 /05 2020
iCustomの罠というか、ただ単に自分が勘違いしていただけというか・・・
(_ _|||)

インジケータで売買シグナルをチャートに表示し、そのデータをiCustomでインジケータバッファから読み取り、オーダーをかける。
まぁ読めば普通に聞こえるし、できそうに思います。というかiCustomってそういう使い方OKでしょ?って思うのは自分だけかも?

でも、できません。いや、できるかもしれませんが、自分は諦めました。
iCustomってEAがインジケータのバッファを参照できる仕組みです。
  • EAはOnTick関数でバッファを見に行きます。
  • インジケータはOnCalculateでバッファにテクニカルを描画します。
EAがインジケータに描画を依頼するわけではなく、インジケータがバッファに描画したと報告するわけでもなく、どうやってEAはインジケータの【更新データを漏れなく】受け取れるのでしょう?

グローバル変数でインジケータの状態を書き込み、EAで監視するなどの方法もありますが、これもEAが更新をスルーする可能性が高い、基本的にEAとインジケータは同期して動けませんし、同期させるとMT5の動作が不安定になる可能性があると思います。(Mutexなどで片方を止めておくなどの方法で同期させた場合)

インジケータの描画OnCalculateのタイミング、EAのOnTickのタイミングはMT5の勝手です。(仕様とかあるかもしれませんが、ググっても同期方法がヒットしない・・・)

解決方法は?

簡単です。作り直し。(TヘT)

よく考えると、iCustomってインジケータはテクニカル表示して、EAでシグナルの判断していますよね。これが正解な使い方です。

今回作成しているのは機械学習EAなので、インジケータでも機械学習のシグナル、EAでも同様なので、インジケータで行っている計算などを全部クラスライブラリにして、includeファイルにしてしまいます。
これをインジケータで表示できるようになれば、エンジン部分は共通で、インジケータとEAは側だけ作れば良いということです。
まぁ、MT4の時にやっていた方法に戻ります。

やることは増えましたが、解決する可能性の低い方法に固執していても時間の無駄ですからね。

データが取れない、その後


データが取れない

バックテストをすると、こんな状態でした。
リアルティックが取れないよーってエラー、知らんわ!ググっても有益な情報もなく・・・
OANDAのせいかなぁ・・・と、途方に暮れていたら、「まさか?!」MT4で「n/a」になった時のように、データの齟齬が起きているのでは?と思いつき、
ティックデータを読み込んでみました。

ティック読み込み

やったー( ̄。 ̄)
バックテストでエラーが出なくなりました。

OANDAさん疑ってすみませんでした><

パぺ太メモ

さて、今週末はライブラリを作ってインジケータ、EAを動かすぞー

バックテストでのエラーも解消したし、大きな問題が起きなければ来週末にはある程度、形にできそうですねー
大きな問題・・・何か忘れている気が?
そういえば、機械学習の予測100%はバグが見つかっていない><

EAが動いて正常にデータ収集ができるようになってからまた予測させてみよう!


関連記事

コメント

非公開コメント

パペ太

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