【開発の裏側㉑】MT4では、塗りの色なしが黒になります。通貨の強さのパネルを移したときの3つ

【開発の裏側㉑】MT4では、塗りの色なしが黒になります。通貨の強さのパネルを移したときの3つ

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

8つの通貨の強さを並べるインジケーター、e-CurrencyStrength を作り直したとき、MT5版を先に仕上げて、そのあとMT4版を作りました。
コンパイルは、MT4もMT5もエラー0、警告0で通っています。それでも、MT4の実際のチャートに入れると、3つの問題が出ました。



1つ目は、塗りの色です。

このインジケーターは、一番強い通貨と一番弱い通貨を、金と赤の枠で囲んで目立たせます。
枠は、四角の図形を置いて、中の塗りを色なしにして描いていました。MT5では、中が透けて、枠だけが出ます。

ところが、MT4では、色なしを黒で塗ったんです。
枠の中が真っ黒になって、通貨の強さのバーが隠れてしまいました。

MT4では、塗らない枠を四角1つで描くのをやめ、細い線を4本置いて枠にしました。背景を透明にする設定のときの外枠も、同じように線で描いています。



2つ目は、文字列の切り出しです。

業者によって、銘柄の名前には、USDJPY の前後に飾りの文字が付くことがあります。インジケーターは、チャートの銘柄の名前から、その飾りを見分けています。

ここで、開発の裏側の6回目に書いた StringSubstr の違いに、もう一度はまりました。
長さに0を渡すと、MQL5は空の文字列を返し、MQL4は最後まで全部を返します。飾りが無いはずのところで、名前全体を飾りと取り違えたんです。

その結果、その口座では足のデータが届かない、別の飾りの付いた銘柄を選んでいました。5分足の枠だけが、ずっと計算中のままでした。
飾りを直したうえで、チャートと同じ飾りの銘柄を一番に選ぶようにしています。



3つ目は、起動のタイミングです。

MT4を立ち上げた直後、まだ口座にログインしていない瞬間にインジケーターが動き出すと、銘柄の一覧や情報が欠けたまま読み込まれます。
そこで、ログインできたことを確かめてから、銘柄を選び直すようにしました。



3つとも、コンパイルではエラーが出ません。MT5で正しく動いていても、MT4で同じ結果になるとは限らないんです。
両方の版を出すときは、両方の実際のチャートに入れて、見た目まで確かめています。

最後に、今回の e-CurrencyStrength です。8つの通貨の強さを、強い順にバーで並べるインジケーターです。


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