エラーコード - ページ 4

 
 

MT4 - Ordersend() のエラー#130

こんにちは。MT4でOrderSend()を使用して注文を生成しようとしていますが、エラー#130が発生し続けています。エラー#130は、ストップロスまたはテイクプロフィットのレベルが現在の市場価格に近すぎることに関連していると理解しています。私はそれらを変化させましたが、成功しませんでした。相対値と実値の両方を使用しました。

1.買いに対する相対的な利益確定と損切りの値を 使用する。

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-50*Point,Ask+50*Point, "Long Breakout",16384,0,Green) のように、相対値を使っています。

2.買いのStoplossとTakeProfitに実際の値を使用する。

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss,TakeProfit, "Long Breakout ",16384,0,Green)。

ここで

Double StopLoss = NormalizeDouble(StopLoss, Digits);

ダブルTakeProfit = NormalizeDouble(TakeProfit, Digits);

で、これらの値は外部値として設定されます(例:extern double StopLoss=1.5000, extern double=TakeProfit=1.6000)

私のブローカーはFXCMです。StoplLossとTakeProfitの値を10倍にしてみました。すべての通貨ペアで同じ結果が得られました。

いずれの場合もエラー#130が発生します。何かアイデアはありますか?

乾杯

 

買いポジションのテイクプロフィットを 設定する場合。TPは

Bid+(50*Point)

Ask+とは対照的に・・・。

クリス

 

すみません、はい、私の入力ミスです。それでも、問題は解決しません。

 

ordersend関 数の直前にコメントやprintを置き、ストップロスやテイクプロフィットのレベルを出力してみてください。また、ストップロス/tpが最小距離以上であることを確認してください。

これはordersendの前に置いてください。

if(StopLoss!=0 && StopLoss<(MarketInfo(Symbol(),MODE_STOPLEVEL)))

{

StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL);

}

if(TakeProfit!=0 && TakeProfit<(MarketInfo(Symbol(),MODE_STOPLEVEL)))

{

TakeProfit=MarketInfo(Symbol(),MODE_STOPLEVEL);

}

クリス

 
kvhutch:
こんにちは。MT4でOrderSend()を使用して注文を生成しようとしていますが、エラー#130が出続けています。エラー#130は、ストップロスまたはテイクプロフィットのレベルが現在の市場価格に近すぎることに関連していると理解しています。私はそれらを変化させましたが、成功しませんでした。相対値と実値の両方を使用しました。

1.買いの相対テイクプロフィット値とストップロス値を使う

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-50*Point,Ask+50*Point,「Long Breakout」16384,0,Green);

2.買いのStoplossとTakeProfitに実際の値を使用する。

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss,TakeProfit, "Long Breakout ",16384,0,Green).ここで、Symbol()とTakeProfitの実値を使用します。

ここで

Double StopLoss = NormalizeDouble(StopLoss, Digits);

ダブルTakeProfit = NormalizeDouble(TakeProfit, Digits);

で、これらの値は外部値として設定されます(例:extern double StopLoss=1.5000, extern double=TakeProfit=1.6000)

私のブローカーはFXCMです。StoplLossとTakeProfitの値を10倍にしてみました。すべての通貨ペアで同じ結果が得られました。

いずれの場合もエラー#130が発生します。何かアイデアはありますか?

乾杯

FXCMは5桁の数字です。それとも、どの国のFXCMを使っていますか?

 

ご返信ありがとうございます。ええ、ストップロスとテイクプロフィットの 値を確認するためにプリントステートメントを使用しました。プリントアウト上では問題ないように見えました。

私はイギリスのFXCMを使っています。円以外の通貨は小数点以下が5桁(例:GBPUSD:1.55125)。円クロスは3桁です(例:GBPJPY: 132.393)。この場合、値はおそらく10倍されなければならないと思いました。

乾杯

 
kvhutch:
この場合、値はおそらく10倍されなければならないと思っていました。 乾杯

init関数に このようなものがあるのでしょうか?

if (Digits == 3 || Digits == 5)

{

Factor = 10;

StopLoss *= 10;

TakeProfit *= 10;

MaxSpread *= 10;

Slippage *=10;

}
 

いいえ、OrderSend()ステートメントでは、Take Profitと StopLossの値に10を掛けるだけです。これらの値の使用についてもう少し詳しく教えてください。ありがとうございます。

 

外部変数に10を掛けただけのものです。自分の変数を含めるためにそれらを調整します。しかし、Stoplossのような分数pipブローカーで異なる変数だけを行うのです。

つまり、入力リストでstoplossが20pipsと入力されている場合、ブローカーが小数であれば、自動的に200に調整されます。

理由: