どうも、FXトレーダー兼システムエンジニアのナオトです。
開発の裏側の7回目で、パラメーター画面に true と false を出さない理由を書きました。
私のインジケーターは、範囲の外の値が入ったら、落とさずに正しい値へ直して、そのことを知らせる作りにしています。
今回は、その知らせる部分と直す部分が、どちらもうまく働いていなかった話です。
9つの時間足の意識ラインを引く、e-BreakerDetectPro のMT5版を作り直していたときに見つけました。
1つ目。警告は出るのに、値が直っていませんでした。
バックテストで使うスプレッドの設定に、マイナスの値を入れると、初期値で動作します、という警告が出ます。
ところが、プログラムの中では、入力された値をそのまま使い続けていました。
警告を出す処理と、値を直す処理が、つながっていなかったんです。
画面には正しそうな知らせが出るので、見た目には直っているように見えます。
2つ目。警告が、誰にも見えていませんでした。
確かめる項目は3つありました。スプレッド、パネルの文字の大きさ、見つける頂点の数です。
ところが、知らせの窓を開く処理が、1つ目の確かめの直後に置かれていました。
それで、2つ目と3つ目の警告は、文面を組み立てても、表示されないまま終わっていました。
3つ目は小さなものです。
警告の文の改行が、プログラムの書き方の誤りで、改行されずに記号のまま表示される作りになっていました。
直し方はこうです。
確かめと直しを1つの部品にまとめ、直した後の値を別に持つようにしました。
そのうえで、入力された値を直接読んでいた17か所を、すべて直した後の値を読むように差し替えています。
1か所でも直接読む所が残ると、そこだけ直しが効かないからです。
知らせは、全部を確かめ終わってから1回だけにしました。
それと、処理を止めて押すまで待つ窓をやめて、MTのアラートで知らせる形に変えています。インジケーターは画面の処理と同じところで動くので、そこで待たせると、チャートの動きまで止めてしまうからです。
警告を出すことと、値を直すことは、別の処理です。
片方だけ書いて、もう片方を書いたつもりになる。設定の確かめでは、こういうことが起きます。
確かめるときは、警告が出たかどうかに加えて、そのあと実際にどの値で動いているかまで見るようにしています。
インジケーターやEAの設定まわりの点検と改修のご依頼も受けています。
最後までお読みいただき、ありがとうございました。