2018年5月7日MQLこんばんは、たかはしです。インジケーターやEAを修正する時に詰まりやすいポイントを押さえていこうと思います。シフト値の罠インジケーターをMQLからコールする場合、いろいろなルールがありますよね。iMAのルールはこんな感じです。iMAiCustomのルールはこんな感じです。iCustomどんなインジケーターをコールするときでもshift値を指定する必要があります。ライン系のインジケーターならどこにshiftさせても大体値が入っているので、問題はありませんが、矢印や記号系のシグナルの場合に罠がありますので、ご注意下さい。言葉で書いても分かりにくいので画像で説明します。上の画像ではサブウィンドウ1のSELに値が入っていますが、下の画像の同箇所には値が入っていません。この現象は、単純に矢印が表示されている箇所とされていない箇所の違いなだけなんです。矢印がある場所は値が入っているけど、矢印が無い場所は値が入っていない。記号系のシグナルを拾うときは、シフト値の場所を考えて設定する必要があります。リペイントする感じのやつであったり、最新足の場所に出ないやつ、出る場所が決まっていない場合などのインジケーターは扱いづらいので注意して下さい。ライン系のインジケーターはそれほど難しくないので、大丈夫です。先ほどの続きになりますが、矢印が出ていない箇所は値が出ていません。この状態をMQLで対処するには「EMPTY_VALUE」で対処する必要があります。0でもなく、EMPTYでもなく、EMPTY_VALUEです。矢印が表示されている場合にのみ実行させる場合などは「if(val!=EMPTY_VALUE)」のように実装するなどして下さい。これ以外の実装をしてしまうと意図しない動きをしてしまうので、バグを生む原因となります。丁寧なインジケーターの場合は、EMPTY_VALUEになる場合、0を代入していたりするので、実装する前にはどんなデータが出力されているのかをデータウィンドウで見て確認して下さいね。条件分岐がプログラムの基本です。この場合はこうして、あの場合はこうする。いうときは特別にこういうことをして、こんなことまでしちゃう!というルールで処理を分岐させます。if文は論理式で判断されるので、真偽でしか判断しません。MQLは比較的構文チェックが甘いので多少のコーディングミスはコンパイルされてしまいます。double型とブール型とのデータ比較が出来てしまったりします。下手にコンパイルが通るだけに、デバッグに時間が掛かったりしますwこの条件式を間違った構文で書いてしまうと、思いがけない動きをする上に、一生通らないパスが出来てしまったりします。ここ、初心者がかなりはまるポイントですので、if文を書くときは、論理的に考えて実装して下さい。タグEAMT4ツール(インジケーターなど)インジケーターシグナルポイントライン罠この記事を書いている人たかはしハイレバをこよなく愛するXMトレーダー。維持率は大体いつも100%位のピリピリしたトレードを好みます。メイン通貨はポンドドル、ポンド円で勝ったり負けたりしながら地味にお金を減らしていますが、たまに大勝ちすることもあります。このブログを読んでくれる人には少しでも勝って欲しいと思って色々と書いています。FX取引に関するあれこれシェアお問合わせTOPへ。