本主题将讨论使用mql5语言 的无记录工作方式,解决某些问题的例子。我希望这个分支更接近于FAQ的内容,而不是讨论。我邀请所有有经验的程序员来分享他们的解决方案和编程技巧。对帮助中没有描述的功能的覆盖,尤其值得欢迎。
fxsaber:
一旦OrderSend被执行,处理相关订单、头寸或交易并不总是成功。有些情况下,你需要等待几十毫秒的历史或当前交易信息变得正确。
在MT4中也是如此,这取决于具体的服务器。
一旦OrderSend被执行,处理相关订单、头寸或交易并不总是成功。有些情况下,你需要等待几十毫秒的历史或当前交易信息变得正确。
并不总是能够知道产生交易的订单的价格。
并不总是能够知道平仓 的SL/TP水平。
从报价中也可以看出,MT5中头寸的TP总是一个市场订单。不要给极限对应的书签--见上文。
fxsaber, 2016.07.17 20:19
在引入套期保值TakeProfit之前,未结头寸不是以限价单的形式存储在交易所,而是存储在MT5交易服务器上。在接受的那一刻,它们不是作为限价订单被送到交易所,而是作为市场订单被送到交易所的价格。
当TP被触发时,这个功能在测试器中是非常明显的:适当的市场订单(而不是限价)出现。由于takeprofit是一种不存在的交易所类型的订单(只有市场和限价订单),这种状态完全是在 "市场性 "范围内。
随着套期保值的出现,情况并没有改变--实收利润仍然是虚拟的。MT4的情况则不同:在多年的MT4桥梁中,在MT4的止盈上下限价单已经成为标准。
正是由于这种虚拟性,MT5的一些功能像小路一样拖着走。不仅止盈最好不要放在MT5中,而且如果你想要一个限价的对应产品,通过MQL5,你没有办法在平仓 后知道其止盈和止损值。
这不是不分青红皂白的指责,而是经过几个小时的努力,找出(没有HistorySelectByPosition和其他东西的帮助)一切工作的结果。如果我错了,我也很乐意道歉。不是没有根据的,我在RoboForexEU-MetaTrader 5服务器上展示了一个测试者的专家顾问(它更容易理解),它打开一个位置,然后把SL和TP水平。
void OnTick() { static bool Flag = true; if (Flag) { // Открываем SELL-позицию MqlTradeRequest Request = {0}; Request.action = TRADE_ACTION_DEAL; Request.symbol = Symbol(); Request.volume = 1; Request.price = SymbolInfoDouble(Symbol(), SYMBOL_BID); Request.type = ORDER_TYPE_SELL; MqlTradeResult Result; if (OrderSend(Request, Result)) { // Устанавливаем SL и TP Request.position = Result.deal; Request.action = TRADE_ACTION_SLTP; Request.tp = Result.ask - 10 * _Point; Request.sl = Result.ask + 10 * _Point; if (OrderSend(Request, Result)) Print("Сделка в тестере закроется либо по SL, TP, либо по окончании бэктеста") ; Flag = false; } } }
在这个EA中,不能定义单个平仓的SL和TP(在OnDeinit中)。它应该这样做吗?
fxsaber:
一旦OrderSend被执行,参考适当的订单、头寸或交易并不总是成功的。有些情况下,你需要等待几十毫秒才能使历史或当前交易信息变得正确。
一旦OrderSend被执行,参考适当的订单、头寸或交易并不总是成功的。有些情况下,你需要等待几十毫秒才能使历史或当前交易信息变得正确。
你不需要等待几毫秒的时间。
该信息将在OnTradeTransaction 中出现
见代码
附加的文件:
Test_sync_order.mq5
30 kb
MT4-OrderClosePrice的技巧 在MT5中也适用 -PositionGetDouble(POSITION_PRICE_CURRENT)。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247