どうも、FXトレーダー兼システムエンジニアのナオトです。
開発の裏側の60回目は、VIXのインジケーターを、ネットに取りに行かない形に作り直した話でした。
今回は、トレンドラインを自動で引くインジケーターを、製品として作り直したときに見つけた不具合の話です。
製品紹介の2回目で書いた e-TrendLineSnap は、左右の足より高い足を山、低い足を谷として集め、2つの山、2つの谷を結んでラインを引きます。
引いたラインは右へ延ばし、いまの価格がラインに届いたか、抜けたかを知らせます。
もとは、EAと連携する仕組みの一部として作っていた版でした。これを単体で売る製品にするにあたって、中身を1つずつ点検しました。
そこで見つかったのが、ラインの延ばし方です。
もとの版は、ラインの傾きを、1秒あたりの価格の変化として持っていました。
2つの山の時刻と価格から、1秒でどれだけ上がるか下がるかを出し、延ばした先までの秒数を掛けて、その先の価格を出す形です。
ふつうに考えると、これで正しく見えます。
ところが、MTのチャートは、足の無い時間を詰めて並べます。週末の土日は、チャートの上では幅がありません。
金曜の最後の足の、すぐ右隣に、月曜の最初の足が並びます。
一方、1秒あたりの傾きで計算すると、週末の2日分も時間が進んだことになります。
2つの山のあいだに週末をはさむと、描かれた線が元の山と谷の上を通らなくなっていました。
しかも、到達や抜けの判定に使う価格も、画面に描いた線とずれていました。
画面ではラインに届いていないのに、届いたと知らせる。その逆も起こりうる形です。
直し方は、傾きを時刻で持つのをやめて、足の番号で持つことです。
ラインの価格を、足の番号の一次式で表します。足1本進むごとに、いくら上がるか下がるか。
チャートの描き方と同じ数え方になるので、週末をはさんでも、描いた線が山と谷の上を通り、判定の価格も描いた線と一致します。
もう1つ、保存したライン(スナップショット)にも同じ考え方を入れました。
保存するのは、両端の時刻と価格です。表示するときに、いま見ているチャートの足の番号で、一次式を作り直します。
別の時間足で見ても、MTが同じ2点に引く線と同じになります。
上の時間足で見て、2点が同じ足に入ってしまうときや、履歴に無いときだけは、時刻の傾きを足1本あたりに直して使います。
時間で計算するか、足の数で計算するか。
どちらでも同じ線になりそうに見えて、週末や休みをはさむと、答えが変わります。チャートに線を描くインジケーターは、チャートと同じ数え方で計算しておくのが安全です。
点検では、1 pipsの大きさをどの通貨ペアでも同じ掛け算で出していて、小数2桁の円や4桁の通貨ペアの口座では10倍に狂っていたことも見つかり、直しています。
週末をまたいでも山と谷の上を通るラインを引き、保存もできるインジケーターです。
最後までお読みいただき、ありがとうございました。