OrderSend() 関数の 4 番目のパラメーターにあるスリッページ値は、注文が通過する最大スプレッドを表します。 ブローカーが 4 桁のブローカーの場合、1 ピップ = 1 ピップ。 問題ない。 3 ピップスのスリッページを指定すると、シグナル価格の 3 ピップス以内で約定することが保証されます。
ただし、ブローカーが 5 桁の相場 (または 3 桁の円ペア) を使用している場合、1 ピップ = 0.1 ピップとなります。 ここで、スリッページに 3 を入力すると、0 があるのと同じように 0.3 になるため、これが問題になります。 再引用されるリスクがあります。 手動で調整するには、スリッページ設定の末尾にゼロを追加して、3 ポイント スリッページの意図を維持するために 3 を 30 に変える必要があります。
したがって、コードが 4 桁または 5 桁のブローカーを自動的にチェックし、適切に自動的に調整できるようにすると便利です。
ポイント値にも同様の問題があります。 OrderSend() 関数を調べるとわかるように、ストップロスまたはテイクプロフィットに指定する整数のピップ数は、適切な 10 進数値に変換するためにピップを掛ける必要があります。 ポイントは、小数点以下の桁数に応じて通貨の最小価格単位を返す MQL の事前定義変数です。
したがって、4 つの小数引用符のポイント = 0.0001。 しかし、最近では多くのブローカーが小数点以下 3 桁と小数点以下 5 桁でクオートを行っており、小数点以下 5 桁のクオートではポイント = 0.00001 となります。 問題は、50 pips と予想されるストップロスの pip 値が 5 pips として計算されることです。 手動調整を行うには、ストップロス値の末尾にゼロを追加し、50 ピップのストップロス意図を維持するために 50 を 500 に変更する必要があります。 したがって、コードが 4 桁または 5 桁のブローカーを自動的にチェックし、それに応じて調整することは非常に便利です。
フラクショナルブローカーを自動的に検出し、スリッページと自動ピップを修正するコードを作成できます。
// グローバル変数
ダブル V ポイント;
int vSlippage;
Initialization()
// ポイントと滑りを検出 3 /5 ブローカー
if (point == 0.00001)
{ vPoint = 0.0001; vSlippage = Slippage*10 ;}
else {
if (point == 0.001)
{ vPoint = 0.01; vSlippage = Slippage*10;}
else vPoint = ポイント; vSlippage = 滑り;
}
次に、次の例に示すように、Point のすべての倍数を vPoint に置き換え、OrderSend() 関数の Slippage パラメーターに vSlippages を挿入します。
< br/>
< p>OrderSend (Symbol()、OP_BUY、Lots、Ask、vSlippage、Bid-StopLoss *vPoint、Bid+TakeProfit*vPoint、“EAName”、MagicNumber、0、Blue)