-koji今回はFXの自動売買に利用するMT4(MetaTrader4)についてのTipsを。MetaTraderでOrderSend()した際に、オーダーに失敗することがあります。stopsといったエラーになっていました。stops」がエラー理由のようです。調べてみると、このエラーが出る場合は、大きく2つの原因があるようです。2.OrderSendに渡す値が不正の場合1.ストップレベル(StopLevel)に引っかかっている各ブローカーでは、現在値から近すぎる(逆)指値注文は受け付けないような設定があります。これをストップレベル(StopLevel,FreezeLevel)と呼びます。このような設定がされているかというと、近い値での注文を許容すると、スキャルピングなど、短い時間で数多くの注文を送ることで、利ザヤを稼ぐ手法がやりやすくなるため、結果としてサーバの負荷が上がってしまうことにつながるからです。そのため、例えば、現在値が83.800円(AUD/JPY)の場合、ストップレベルが5pipsだと、83.840円や83.77円の(逆)指値注文を受け付けないということになります。stops」がブローカーのサーバから返却されます。お使いのMT4で自分のブローカーのストップレベルを確認するには?このストップレベルはMT4の画面で確認することができます。MT4の左側にある通貨ペアの中で、ストップレベルを確認したい通貨ペアを選択し、右クリックする。コンテキストメニューが開くので、その中から「仕様」を選択。すると、プロパティのダイアログが開くので、その中の「ストップレベル」の値がそれです。上記の例だと、10なので、1pips以上離れている必要があります。Advisor)の注文がよくエラーになる場合は確認してみてください。購入した市販のEAではあまりないかもしれませんが、自作のEAを動かして自動売買させている場合は、こういうこともあるかもしれません。closePriceなどの値が不正な場合、このエラーが出ることがあるようです。不正な値の例としては、83.500000001のように、小数点以下3桁までが有効なブローカーで、さらに小さな桁数を持った値などが考えられます。計算によっては上記のような値が出る可能性はありますが、OrderSend()に渡す前に「NormalizeDouble()」関数で、お使いのブローカーの対応している桁数(Digits)にそろえてオーダーを出すようにしましょう。-Next-アラン・ドロンが引退。コメントをキャンセルメールアドレスが公開されることはありません。