错误代码 - 页 4

 
 

MT4 - Ordersend()的错误#130

我试图在MT4中使用OrderSend()生成一个订单,但一直得到错误#130。我知道错误#130与止损或止盈水平设置得太接近当前市场价格有关。我已经改变了它们,但没有成功。我同时使用了相对值和实际值。

1.1.使用相对止盈和止损值 进行买入。

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

2.使用实际值作为买入时的止损和止盈。

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

其中。

double StopLoss = NormalizeDouble(StopLoss, Digits);

double TakeProfit = NormalizeDouble(TakeProfit, Digits);

这些值被设置为外部值(例如:extern double StopLoss=1.5000,extern double=TakeProfit=1.6000)。

我的经纪人是FXCM。我试着把StoplLoss和TakeProfit的值乘以10。我对所有货币对都得到同样的结果。

在每一种情况下,我都得到错误#130。有什么想法吗?

谢谢

 

在为买入头寸设置止盈时。TP是

Bid+(50*Point)

相对于Ask+...

克里斯

 

对不起,是的,我打字时的错误。不过,这个问题恐怕仍然存在。

 

试着在订单结束功能 之前放置一个注释或打印,以打印出止损和止盈水平。同时,确保止损/止盈超过最小距离。

把这个放在订单发送之前。

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.使用实际值作为买入时的止损和止盈。

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

其中。

double StopLoss = NormalizeDouble(StopLoss, Digits);

double TakeProfit = NormalizeDouble(TakeProfit, Digits);

这些值被设置为外部值(例如:extern double StopLoss=1.5000,extern double=TakeProfit=1.6000)。

我的经纪人是FXCM。我试着把StoplLoss和TakeProfit的值乘以10。我对所有货币对都得到同样的结果。

在每一种情况下,我都得到错误#130。有什么想法吗?

欢呼声

FXCM有5位数字......或者你在使用哪个国家的FXCM?

 

谢谢你的答复。是的,我用打印语句来检查止损和止盈值。打印出来的结果似乎不错。

我在英国使用FXCM。非日元货币的小数点后有5位数字(例如,英镑兑美元:1.55125)。日元交叉货币有三位数字(例如,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的外部变量。你调整它们以包括你的变量。但你只做那些在小数点经纪商上不同的变量,比如止损。

这意味着,如果止损在输入列表中被输入为20点,如果经纪商是小数点,它将自动调整为200点。