digitsの差の適応

Eyecatch システムトレード実践編

 今回の記事は、「digitsの差の適応」です。

digitsとは

 digitsとは、通貨ペアの小数点以下の桁数のことです。

 例えば、ドル円で102.75というレートなら、小数点以下の75が2桁ですので、digitsは2になります。ユーロドルで1.3661というレートなら、小数点以下の3661が4桁ですので、digitsは4になります。

 このdigitsですが、証券会社によってドル円などのdigitsが2のところ、3のところがあり、ユーロドルなどのdigitsが4のところ、5のところがあります。

 少し話が変わりますが、通常1pipsというのは、ドル円の場合は0.01、ユーロドルの場合は0.001で、ドル円の0.001、ユーロドルの0.0001は0.1pipsとされますが、MQ4内ではレートの一番下の桁数が1pipsとされます。

 digitsが3のところで、ドル円の0.01は1pipsではなく、10pipsの扱いになります。

 パラメーターなどのPipsを設定する時に10倍の数値を入れれば特に問題ないのですが、証券会社ごとに数値を変えるのは面倒ですので、両対応するための処理が今回の内容になります。

両対応のコード

extern double Stoploss = 50;
extern int Main_Stoploss = NULL;

int start()
{

if( Digits % 2 == 1 ) Main_Stoploss = Stoploss * 10;
else Main_Stoploss = Stoploss;

 上記はストップロスのパラメーターをdigitsによって10倍にする内容になります。

 まず、Digitsですが、これはチャートの桁数を取得してくれるものになります。例えば、桁数が5の場合はDigitsを使うと5が入ります。

 次に%ですが、これは割り算の余りを算出するものになります。上記の内容の場合、5 / 2 = 2 余り 1 という答えになりますので、1になります。

 ドル円などがdigitsが3、ユーロドルなどがdigitsが5のところは、2で割り切れませんので、余りが1になります。この場合、最低桁数が1pipsでは通常の0.1pipsが1pips扱いになりますので、50pipsを入れても実質5pipsになります。ですので、×10をして500pipsにして実質50pipsにします。

 ドル円などがdigitsが2、ユーロドルなどがdigitsが4のところは、2で割り切れて、最低桁数が1pipsでも問題がありませんので、そのままMain_Stoploss にStoplossを代入します。

 これで後は、ストップロスを設定する時に 

取得レート - ( Main_Stoploss * Point )

 とすれば、買いのストップロスを証券会社のDigitsの差に関係なく、同じレートで設定出来ます。(売りの場合は+にしてください)

注意

内容には注意を払っていますが、保障は出来ません。
実際に運用する場合は、自己責任でお願いします。 

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