今回の記事は、「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の差に関係なく、同じレートで設定出来ます。(売りの場合は+にしてください)