【发布时间】:2019-06-27 06:53:19
【问题描述】:
我有一个在按钮点击时关闭交易的 EA
//void CloseCurrentTrade(). It's called after successfull OrderSelect
int orderType = OrderType();
double price;
if (orderType == OP_BUY)
price = return MarketInfo(OrderSymbol(), MODE_BID);
else if (orderType == OP_SELL)
price = return MarketInfo(OrderSymbol(), MODE_ASK);
else
return;
int slippage = 20;
bool closed = OrderClose(OrderTicket(), OrderLots(), price, slippage);
if (closed)
return;
int lastError = GetLastError();
有时它会关闭交易,有时它会返回错误 #129(无效价格)。我不知道为什么。大多数情况下,人们只是滥用出价/要价或没有任何滑点。我尝试使用最多 200 的滑点,仍然是同样的错误。一些 EA 只是尝试关闭它几次(对我来说这看起来像是一个 hack),但它也无济于事。有人提到您需要在出价/询价之前调用 RefreshRates(),但文档说您不需要为 MarketInfo 这样做。
我已经没有什么想法了。为什么会发生这种情况以及如何避免这种情况?我正在 FXCM Demo 上测试它(如果是这样的话)。
【问题讨论】:
-
您可以使用
OrderClosePrice()代替出价或询价。最好的方法似乎是尝试多次关闭票证,如果失败 - 之后是Sleep(25)和RefreshRates()。 -
OrderClosePrice() 等于我在失败时使用的 Bid/Ask
标签: mql4 metatrader4 forex mt4