【MQL4学習】便利で使えるAdjustSlippage()関数とは?

ザフナーラボブログ

今回の記事は便利で使える関数AdjustSlippage()について解説したいきたいと思います。

1.AdjustSlippage()関数とは

MetaTrader4(MT4)で、注文の発注の際に、許容スリッページ数を設定するためには、例えば、以下のように記述します。

サンプルコード


int Ticket = OrderSend(Symbol(),OP_BUY,0.1,Ask,10,0,0,NULL,1845,0,Magenta);

許容スリッページ数の設定は、OrderSend()関数の第5引数の「10」という部分ですが、その単位は「ポイント」です(「ポイント」は、変数「Point」に格納されている値と同様です。)。

  • Pointの詳細については「こちら」を参照してください。

「ポイント」は、提示レートの最小変動単位なので、提示レートが3桁又は5桁の業者において、提示レートが2桁又は4桁の業者と同様のpips単位で許容スリッページ数の設定を行おうとすれば、OrderSend()関数の第5引数を、以下のように変更する必要があります。

  • 第5引数
    「100」に変更(=10 × 10)

しかし、このような処理を逐一行うことは、煩雑であるし、また、思わぬミスを誘発しかねません。

そこで、提示レートが小数点以下3桁又は5桁の業者においては、「許容スリッページ数」に「10」を乗ずるという処理を自動的に行うようにしたものが、AdjustSlippage()関数です。

2.AdjustSlippage()関数の内容

AdjustSlippage()関数の具体的な内容は、以下のとおりです。

 

⑴ AdjustSlippage()関数の定義

AdjustSlippage()関数は、以下のように定義しています。

サンプルコード

int AdjustSlippage(
string Currency,
int Slippage_Pips
);

各引数の意味は、以下のとおりです。

  • string Currency
    許容スリッページ数の単位調整を行う通貨ペア名を指定します。
    通貨ペア名は、「気配値表示ウィンドウ」に表示されているとおりに記述します。
    特定の通貨ペア名を指定せず、EA等を適用しているチャートの通貨ペアの許容スリッページ数の単位調整を行いたい場合は、「Symbol()」と記述します。
  • int Slippage_Pips
    許容スリッページ数を指定します。

⑵ AdjustSlippage()関数の解釈

AdjustSlippage()関数の解釈を示すと、以下のようになります。

ア 戻り値を格納する変数を宣言

許容スリッページ数の単位調整を行った結果を格納するための変数(Calculated_Slippage)を、あらかじめ宣言しています。

OrderSend()関数においては、許容スリッページ数は整数値で指定するので、int型で宣言しています。

  • 変数の詳細については「こちら」を参照してください。

イ 提示レートの小数点以下の桁数を取得

通貨ペアの小数点以下の桁数を、変数Symbol_Digitsに代入する。

なお、MarketInfo()関数の前に、(int)と記述していますが、これは、以下の理由によります。

  1. AdjustSlippage()関数においては、MarketInfo()関数によって取得された値を、int型の変数である「Symbol_Digits」に格納することにしている。
  2. しかし、MarketInfo()関数の戻り値はdouble型である。
  3. そこで、キャスト演算子を用いて、double型をint型に変換している。

なお、型変換(キャスト)及びキャスト演算子の詳細については「こちら」を参照してください。

ウ 条件分岐(その1)

通貨ペアの小数点以下の桁数が「2」又は「4」だったら。

エ 数値を代入(その1)

第2引数に指定した値を、変数Calculatd_Slippageに代入する。

オ 条件分岐(その2)

通貨ペアの小数点以下の桁数が「3」又は「5」だったら。

カ 数値を代入(その2)

第2引数に指定した値に10を乗じた値を、変数Calculated_Slippageに代入する。

キ 結果を返す

変数Calculated_Slippageに格納されている値を返す。