Pips を対応した Point へ自動変換するコード

pipsをpointへ変換するコード サンプルEA

サンプルEA

 MT4の通貨単位は、日本・円やアメリカ・ドルの各国毎の通貨単位以外にも、取引をするための通貨単位として「Point」と「Pips」があります。

「Point」と「Pips」の違いについては、こちらを参考にしてください。

 MT4を採用している FX業者では、通貨ペアによって小数点以下の桁数が変わり、「Point」と「Pips」の関係が変わってくることがあります。

 多くの通貨ペアは小数点以下 3桁 or 5桁 で 1 Pips = 10 Point ですが、USDZAR(アメリカ・ドル/南アフリカ・ランド)では小数点以下 4桁 となっており 1 Pips = 1 Point になります。

 このため、EAのプログラムを組む時は、このような通貨ペアを選択しても問題が起きないようにしておく必要があります。
 この時に組むプログラムの内容は以下のようになります。

 通貨ペアで表示される小数点以下の桁数を取得して、単位を「Pips」から「Point」、「Pips」から「各国の通貨単位」へ自動変換する。

※設定値の入力は Pipsに統一する方が良いです。Pipsと Pointを混ぜると間違いが起きる原因になります。ですので、プログラム上で設定値の入力 Pipsから Point、各国の通貨単位へ自動変換させる方が間違いがないです。

コード

#property strict
int SlipagePips = 3;                            // スリッページを3Pipsに設定
int SlipagePoint;                               // スリッページの単位をPipsからPointへ変換する変数
double PipsPerCunit;                            // 1Pipsあたり各国通貨単位に変換する係数

void OnInit() {                                 // 初期処理
int coe = 1;                                    // 2,4桁表示業者の場合の係数は「1」
if(_Digits == 3 || _Digits == 5) {              // 3,5桁表示業者の場合の係数は「10」
    coe = 10;
}
PipsPerCunit = _Point * coe;                    // 1Pipsあたり各国通貨単位に変換する係数
SlipagePoint = SlipagePips * coe;               // スリッページの単位をPipsからPointへ変換

Print("確認通貨ペア:", Symbol());
Print("スリッページの単位をPipsからPointへ変換:", SlipagePoint); // 3,5桁の通貨ペアは30
Print("1Pipsあたり各国通貨単位に変換する係数:", PipsPerCunit);   // 3,5桁の通貨ペアは0.01,0.001
}

コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

 今回、確認した通貨ペアは USDJPY(米ドル/円)です。
 コードの 2行目でスリッページを 3 Pipsに設定していたので今回の場合、これを Pointに単位変換すると 30 Pointになります。
 USDJPY 1 Pipsあたりの変換係数が 0.01になっているので、この場合 1 Pipsあたりの日本円は
 1 Pips × 0.01 = 0.01円 となります。故に 100 Pips = 1円になります。

 以下は、エキスパートタブに出力される上記内容の結果です。 

タイトルとURLをコピーしました