当这个错误发生时,确切的时间点是什么?
你可以在你的代码中做一个错误案例,并使用 RefreshRates()
我不知道该怎么做,但也许你可以这样做。
如果(Trade==fase)
{
int ErrorCode= GetLastError();
如果(ErrorCode=130)
{
RefreshRates()。
}
}
这段代码可能不对,所以你应该谷歌一下怎么做。
另外,如果你已经做了NormalizeDouble函数 来对数字进行取整。
35806:
这有什么用?
你可以在你的代码中做一个错误案例并使用RefreshRates()。
RaptorUK:
这有什么帮助?
这有什么帮助?
这可能是一个暂时性的问题。他说这是大小写敏感的,所以刷新率可以解决这个问题。
35806:
这可能是一个暂时性的问题。他说这是大小写敏感的,所以刷新率可以解决这个问题。
我们还没有看到任何代码。...如果他没有使用任何预定义的变量,那么刷新率的多少都不会有帮助。
这可能是一个暂时性的问题。他说这是大小写敏感的,所以刷新率可以解决这个问题。
确实如此。
谢谢你的想法。
猛禽,我不知道上述交易的价差。我在代码中添加了一个日志输出,下次错误发生时,我就能告诉你点差。
但你能告诉我,为什么点差很重要?在确定止损的时候,我需要以何种方式考虑到点差?
我发送一个订单,例如:
int ticket = OrderSend(Symbol(), OP_BUY, position_size, Ask, SLIPPAGE, initial_stop, TAKEPROFIT, NULL, EXPERT_ID, 0, Green);
因此我在发送订单时使用的唯一预定义变量是。Ask
SLIPPAGE和TAKEPROFIT都是0。
EXPERT_ID是一些唯一的神奇数字
position_size是一个整数,例如3
initial_stop是我的止损,(在上面的例子中)是Bid - risk。
风险是一个大于(MODE_STOPLEVEL * Point)的值,就第一篇文章中的交易而言。风险是:1.35
猛禽,我不知道上述交易的价差。我在代码中添加了一个日志输出,下次错误发生时,我就能告诉你点差。
但你能告诉我,为什么点差很重要?在确定止损的时候,我需要以何种方式考虑到点差?
我发送一个订单,例如:
int ticket = OrderSend(Symbol(), OP_BUY, position_size, Ask, SLIPPAGE, initial_stop, TAKEPROFIT, NULL, EXPERT_ID, 0, Green);
因此我在发送订单时使用的唯一预定义变量是。Ask
SLIPPAGE和TAKEPROFIT都是0。
EXPERT_ID是一些唯一的神奇数字
position_size是一个整数,例如3
initial_stop是我的止损,(在上面的例子中)是Bid - risk。
风险是一个大于(MODE_STOPLEVEL * Point)的值,就第一篇文章中的交易而言。风险是:1.35
shinobi:
谢谢你的想法。
猛禽,我不知道上述交易的价差。我在代码中添加了一个日志输出,下次错误发生时,我就能告诉你点差。
但你能告诉我,为什么点差很重要?在确定止损的时候,我需要以何种方式考虑到点差?
谢谢你的想法。
猛禽,我不知道上述交易的价差。我在代码中添加了一个日志输出,下次错误发生时,我就能告诉你点差。
但你能告诉我,为什么点差很重要?在确定止损的时候,我需要以何种方式考虑到点差?
把打印的内容添加到日志中,以便将来 使用,这一点做得很好。)
我总是要考虑很久,考虑哪里需要考虑传播,哪里不需要考虑......我似乎在这方面有一个心理障碍......但我认为我是正确的。
对于买入来说,这并不重要,以卖出价买入,卖出价将发生在买入价,所以价差已经被计入你的开盘价。 对于卖出来说,这是一个不同的问题 ......你以买入价卖出,你的止损将以卖出价为准 ......卖出价在哪里? 这取决于当时的点差 ...... 我认为这是正确的,请考虑一下,看看这是否有意义。如果我错了,我很乐意被纠正 ... :-)
int ticket = OrderSend(Symbol(), OP_BUY, position_size, Ask, SLIPPAGE, initial_stop, TAKEPROFIT, NULL, EXPERT_ID, 0, Green);EAs必须为4/5位数的经纪商、TP、SL和滑点进行调整。在ECN经纪公司,你必须先开仓,然后再设置止损。
//++++ These are adjusted for 5 digit brokers. int pips2points; // slippage 3 pips 3=points 30=points double pips2dbl; // Stoploss 15 pips 0.0015 0.00150 int Digits.pips; // DoubleToStr(dbl/pips2dbl, Digits.pips) int init(){ if (Digits % 2 == 1){ // DE30=1/JPY=3/EURUSD=5 forum.mql4.com/43064#515262 pips2dbl = Point*10; pips2points = 10; Digits.pips = 1; } else { pips2dbl = Point; pips2points = 1; Digits.pips = 0; } // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl //---- These are adjusted for 5 digit brokers. /* On ECN brokers you must open first and THEN set stops int ticket = OrderSend(...) if (ticket < 0) Alert("OrderSend failed: ", GetLastError()); else if (!OrderSelect(ticket, SELECT_BY_POS)) Alert("OrderSelect failed: ", GetLastError()); else if (!OrderModify(OrderTicket()...) Alert("OrderModify failed: ", GetLastError()); */
我看到论坛上很多人都在为这个错误而苦恼。
根据我对其他主题的理解,这个错误可能是由以下原因造成的
a: 设置的止损值离当前价格太近
b: 0后面 的数字错误
关于a。
根据我的理解。MarketInfo(Symbol(), MODE_STOPLEVEL))应该给我止损需要的最小距离。
所以这里有一个交易失败的例子。
Marekt信息。
日期:2011/9/15 16:31
符号。#ESU1
停止水平:75.00000000
点位: 0.01000000
滴答大小:0.25000000
滴答值: 12.50000000
位数:2.00000000
因此,最小距离应该是停止水平*点,对吗?
所以这是我失败的订单。
2011.09.15 16:32:07 '393930': Order sell 18.00 #ESU1 opening at 1201.00 sl: 1202.35 tp: 0.00 failed [Invalid S/L or T/P]
错误是:130/无效的止损
止损离开盘还有1.35的距离。所以应该没问题。数字(b)也符合。
那么为什么我得到这个错误?
另外,这个错误很难重现。有时它出现。有时不出现。
有时它出现了好几次,每次都是如此。
有什么想法吗?
提前感谢
忍者