今回の記事は便利で使える関数AdjustSlippage()について解説したいきたいと思います。
1.AdjustSlippage()関数とは
MetaTrader4(MT4)で、注文の発注の際に、許容スリッページ数を設定するためには、例えば、以下のように記述します。
int Ticket = OrderSend(Symbol(),OP_BUY,0.1,Ask,10,0,0,NULL,1845,0,Magenta);
- OrderSend()関数の詳細については「こちら」を参照してください。
- Symbol()関数の詳細については「こちら」を参照してください。
- Askの詳細については「こちら」を参照してください。
許容スリッページ数の設定は、OrderSend()関数の第5引数の「10」という部分ですが、その単位は「ポイント」です(「ポイント」は、変数「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()関数の詳細については「こちら」を参照してください。
なお、MarketInfo()関数の前に、(int)と記述していますが、これは、以下の理由によります。
- AdjustSlippage()関数においては、MarketInfo()関数によって取得された値を、int型の変数である「Symbol_Digits」に格納することにしている。
- しかし、MarketInfo()関数の戻り値はdouble型である。
- そこで、キャスト演算子を用いて、double型をint型に変換している。
なお、型変換(キャスト)及びキャスト演算子の詳細については「こちら」を参照してください。
ウ 条件分岐(その1)
通貨ペアの小数点以下の桁数が「2」又は「4」だったら。
エ 数値を代入(その1)
第2引数に指定した値を、変数Calculatd_Slippageに代入する。
オ 条件分岐(その2)
通貨ペアの小数点以下の桁数が「3」又は「5」だったら。
カ 数値を代入(その2)
第2引数に指定した値に10を乗じた値を、変数Calculated_Slippageに代入する。
キ 結果を返す
変数Calculated_Slippageに格納されている値を返す。