MQL4でEAを作成中に、OrderSendのエラー4051で少してこずりました。大した原因ではなかったんだけど、このエラーは、取引注文の不正な引数が原因で発生することが多く、新しいプログラマーにとっては特に困惑する問題です。本記事では、このエラーの原因を分かりやすく解説するとともに、実際に解決した具体的な方法を共有します。
エラー4051
MQL4でEAを構築していると、「OrderSend error 4051」というエラーに出くわすことがありますが、このエラーは、送信されるオーダーの引数が正しくないことを示しています。
この問題を解決しない限り、トレードが出来ません。私の場合もこのエラーに頭を抱えましたが、原因が解るとこれは見込の上ではとても簡単な問題でした。
エラー4051の原因
MQL4でEAやインジケータを作っているプログラマーには御用達のこちらのFC2ブログをみると
エラー内容は以下のようになっていました。
ERR_INVALID_FUNCTION_PARAMVALUE | 無効な関数の引数値 Invalid function parameter value |
原因はロット数
原因は、選択した通貨ペアの最低ロット数より低いロットでエントリーしようとしていたことにありました。MQL4のOrderSend関数では、ロット数が通貨ペアのルールを滿たしていない場合、このエラーが生じます。
たとえば、以下の通貨ペアでは、0.10ロットが最低であるのに、0.01ロットを指定するとオーダーが拒否されます。
通貨ペアを選択して、右クリック⇒仕様から確認できます。
OILWTI_USDの最低ロット数は0.1ですが、僕は0.01のロットでエントリーしていました。
まとめ
ロットに関する要件は、設定されたブローカーによって異なり、通貨ペアや利用するプラットフォームによって変わります。まあ、プログラム上で最低ロット数を取得するという手もありますが、いずれにせよ一律ではないのでご注意ください。
コメント