【開発の裏側㊴】EAからインジケーターを呼んだら、渡した値が届いていなかった話

【開発の裏側㊴】EAからインジケーターを呼んだら、渡した値が届いていなかった話

記事
IT・テクノロジー
どうも、FXトレーダー兼システムエンジニアのナオトです。

自分のインジケーターの判定を、EAの中に写したときの話です。
写した判定が正しいかを確かめる段階で、インジケーターのほうが、渡した設定と違う値で動いていました。



インジケーターの判定をEAで使うには、2つのやり方があります。
EAからインジケーターを呼び出して結果を読むか、判定の計算そのものをEAに写すかです。

このときは、写すほうを選びました。結果だけでなく、途中の高値や安値の一覧もEAで使いたかったからです。

写したら、売買の決まりを書く前に、元のインジケーターと同じ答えが出るかを確かめます。
テスターの中で、EAから元のインジケーターを呼び出し、足ごとに、インジケーターの答えとEAの答えを比べる形です。



ここで、インジケーターが、渡した設定と違う値で起動していました。

渡したのは、計算に使う期間と倍率の値です。
ところが、インジケーターの中では、期間が1、倍率が0になっていました。これでは、元のインジケーターの答えそのものが変わってしまいます。

呼び出し方は、iCustom と IndicatorCreate の2通りを試しました。どちらでも同じでした。



次に、呼び出しの仕組みそのものを疑いました。

試し用の小さなプログラムを作って、同じ形で値を渡してみました。
こちらには、渡した値が正しく届きました。

呼び出しの仕組みは正しく動いている。ずれるのは、このインジケーターの入力の並びのときだけ、ということです。
原因は、今もはっきりとは分かっていません。



確かめの作業を止めないために、回り道をしました。

インジケーターの写しを作り、入力の既定値だけを、使いたい値に書き換えます。
それを、設定を何も渡さずに呼び出せば、既定値で動きます。渡す値が無いので、ずれようがありません。写しは、検証用の環境にだけ置きました。

これで比べ直すと、ゴールドの15分足、2025年の1月から3月の5,698本で、比べた10項目すべてが一致しました。



EAからインジケーターを呼ぶときは、インジケーターが本当に受け取った値を、一度書き出して確かめてみてください。
画面に何かが出ていても、それが渡したつもりの設定で計算されたものとは限りません。

インジケーターの判定をEAに組み込む開発のご依頼も受けています。


最後までお読みいただき、ありがとうございました。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す