2018年5月11日金曜日

[MT4] pips とpoint の使い分け

Metatrader の point(s) と pip(s) の使い分け方について私見ですが書いてみようと思います。

まずは簡単に違いから。

> 詳しい違いについては以下を参考にしてください
>
> [MT4のpoint(ポイント)とpips(ピップス)の違い | MT4ラボ|メタトレーダーの使い方/EA・インジケーター検証](http://mt4.click/chart_sosa/point_pips_chigai/)



### pip
pip(s) は為替取引で使われる単位で、**一般的には** 以下で表されます。

- 対円 0.01円 = 1pip
- その他 0.0001 = 1pip

ただし、ブローカーによっては、変動の最小単位(後に説明する Point と同等)を pip として扱っているところがある(らしい)ので注意が必要。

> 参考
>
> - [FXのpipsについて - GBP/JPYの144.321では1pipsとはどこを指しますか?... - Yahoo!知恵袋](https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1331219748)
> - [為替差益を「Pips」表記する理由 - FX初心者の外為入門](http://mituwasou.com/fxblog_beginner/free/pips-signage.html)


### point
point(s) は Metatrader 独自の単位ですpip が "Percentage in **point**" の略であることを考えると、かなりややこしい。
各通貨ペアで扱える最小変動幅を指します。

たとえば、以下の例だと 

- EURUSD  $0.00001 = 1 point
- USDJPY  0.001円 = 1 point 

となります。

重要なのは、この Point の値が **ブローカーによって異なる** ということ。 上記の数値は他のブローカーに接続すると変わる可能性があるのです。 ### どう使い分けるべきか あくまで私個人の意見ですが、基本的に MQL プログラムの中では pip は使わず point で統一するのが良いかと思います。 Metatrader の中に pip という概念はなく、全てが point で処理されているからです。 もちろん、一度 pip に変換することによってブローカー間の差分を吸収することが出来るというメリットはあります。 ただ、私個人は数年間 Metatrader を使ってきてそのメリットを感じたことがありません。 というのも、以下のルールを守っているからです。 - **point の値をハードコーディングしない**というか、パラメータ全般、ハードコーディングしない。 このルールを守ることにより、ブローカーの差分は全てパラメータに出て行くので、それらを吸収する必要がありません。 例えば、スプレッドの最大値を設定したい場合、コードの中にその値を書くのではなく、パラメータにしますデフォルト値ではきちんと動作しないようにしています。それによってパラメータの設定忘れに気づきやすくするためです。。 ```mq4 `first-line: 11; input uint MaxSpread = 0; // Max Spread (point) ```
このルールは point に限らず、あらゆるパラメータに適用しておくことで無用なトラブルを避けることができます。