MQL4エラー130を即座に解決するやり方

オーダーセンドエラー130はProfitPrice(損切り価格又は利益確定価格)の値が近すぎると注意されています。
なので、解決方法は簡単です。

OrderSend(
   symbol,cmd,volume,
   price,               // 注文価格
   slippage,            // スリップページ
   stoploss,            // ストップロス価格
   takeprofit,          // リミット価格
   NULL,12345,0,clrNONE
   );
Print("注文価格:",price,"損切り価格:",stoploss,"利益確定価格:",takeprofit,"ストップレベル:",MarketInfo(Symbol(),MODE_STOPLEVEL));

上記のように一度、注文価格、損切り価格、利益確定価格、ストップレベルをPrintしてみましょう。そうすればどこが悪いのか1目でわかります。
関数OrdersSend()

ストップレベルがあるのにストップレベルを考慮していない価格を指定していた場合

//error 130
Print(MarketInfo(Symbol(),MODE_STOPLEVEL)); // 50point

関数MarketInfo()
ストップレベルが50pointあるのにそれ以下の値を指定している場合
下記の場合はエラー130になります。

price = 108.00 //USDJPY
takeprofit = 108.02 //利益確定価格

なので改善方法はまず_PointでそのFX業者さんの1pointが0.01pipsなのか0.001pipsなのかをしらべましょう

Print(_Point);
/*
_Point = (0.001 || 0.00001) = 0.1pips = 1point
_Point = (0.01 || 0.0001)   =   1pips = 1point
*/

_Point

なので先ほどの例を改善すると

// error 130
price = 108.00 //USDJPY
takeprofit = 108.02 //利益確定価格
// ストップレベルが50point _Point=0.001
//なのでストップレベルは5pipsです。
price = 108.00 //USDJPY
takeprofit = 108.06 //利益確定価格

上記のようにストップレベル以上の価格をProfitに指定してやるとオーダーエラー130が改善されます。

エラー130ではありませんが、よくあるのが買エントリーの利益確定価格なのにエントリー価格より下に指定されていたりとかです。
気をつけましょう

//error 4108
takeprofit = Ask-500;//500point=50pips _Point = (0.001 || 0.00001)
//改善後
takeprofit = Ask+500;//500point=50pips _Point = (0.001 || 0.00001)

OP_BUY,OP_SELL,OP_BUYLIMIT,OP_SELLLIMIT,OP_BUYSTOP,OP_SELLSTOP

MQL4エラー4108を防ぐために理解しておきたい注文時のことについて

今回は以上です。お読みいただきありがとうございました。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする