オーダーセンドエラー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 */
なので先ほどの例を改善すると
// 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を防ぐために理解しておきたい注文時のことについて
今回は以上です。お読みいただきありがとうございました。