- 显示:
- 1363
- 等级:
- 已发布:
- 2018.11.08 10:10
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
异步交易订单有很大的优点 - 当大批发送时速度很快。但是,许多这样的订单会造成不便处理 - 订单的结果只能在 OnTradeTransaction 中看到,如果用户想要在他们的交易策略中使用异步处理,必须构建一种事件模型。这并不总是那么简单(对于EA), 而有时甚至是不可能的 (对于脚本)。
这个开发库解决了这个问题,在任何时候,它都可以提供对终端中所有事务的访问 (相应 OnTradeTransaction 的完整数据),这个应用程序的运行简化了使您程序异步运行的过程。
例子
下面的例子展示了开发库的运行原则:
// 不适用 OnTradeTransaction 打印出所有事务 #include <fxsaber\TradeTransactions\TradeTransactions.mqh> // 在程序中的任何位置访问 OnTradeTransaction 的数据 TRADETRANSACTIONS Transactions; // 交易事务 const bool Init = EventSetMillisecondTimer(100); void OnTimer() { static uint Total = 0; const uint NewTotal = Transactions.Total(); // 保存的事务数量 for (uint i = Total; i < NewTotal; i++) // 在新的事务中遍历 { MqlTradeTransaction Trans; MqlTradeRequest Request; MqlTradeResult Result; // 取得所有对应的事务数据并打印它们. Print(TimeToString(Transactions[i].Get(Trans, Request, Result)) + "\n" + ToString(Trans) + ToString(Request) + ToString(Result)); } Total = NewTotal; }
运行这个EA 并尝试人工进行交易,这个 EA 交易将会打印所有的细节,就像它有 OnTradeTransaction 一样,尽管它没有!
使用这样的功能可能会有很多实际场景,例如,交易交易品种篮子。例如,如果您需要在代码中快速建立多个仓位,如果它们已经建立,您可以不离开 On 函数就进行额外的交易操作。
因为我们经常需要等待很多异步发送的订单的结果,这个开发库含有快速访问信息的功能,就像使用这样的例子一样。
// 大批量异步交易并等待结果的实例。 #include <MT4Orders.mqh> // https://www.mql5.com/zh/code/16006 #include <fxsaber\TradeTransactions\TradeTransactions.mqh> // 在程序中的任何位置访问 OnTradeTransaction 的数据 TRADETRANSACTIONS Transactions; // 交易事务 // 尽快建立多个仓位,当仓位建立好以后返回。 bool OpenPositions( const int Amount = 10 ) { uint RequestID[]; for (int i = ArrayResize(RequestID, Amount) - 1; i >= 0; i--) { const string Symb = SymbolName(i, true); RequestID[i] = OrderSendAsync(Symb, OP_BUY, 1, SymbolInfoDouble(Symb, SYMBOL_ASK), 100, 0, 0); // 发送异步订单 } return(Transactions.Waiting(RequestID)); // 等待服务器对所有的异步订单做出回应 } // 尽快关闭一切. 当操作被确认后返回. bool CloseAll() { uint RequestID[]; for (int i = ArrayResize(RequestID, OrdersTotal()) - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS)) // 发送异步订单 RequestID[i] = (OrderType() <= OP_SELL) ? OrderCloseAsync(OrderTicket(), OrderLots(), OrderClosePrice(), 100) : OrderDeleteAsync(OrderTicket()); return(Transactions.Waiting(RequestID)); // 等待服务器对所有的异步订单做出回应 } void OnStart() { if (OpenPositions()) Print(CloseAll()); }
当然,这是一个脚本,但是它还是允许通过这个开发库来操作事务。运行它会展示如何快速建立和关闭多个交易仓位/订单。
特性
- 应当编译代码 Indicators\fxsaber\TradeTransactions.mq5 文件。
- 使用了 TypeToBytes 开发库。
- 这个开发库的源代码含有 (ResourceData.mqh) 一个通用类,可以是您快速保存/读取资源中的数据。
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/22166

一个 NRTR 类型的趋势指标,带有额外的中心线。

XRSI_Candle_Vol_Zer 指标在有交易信号来到的时候会提供提醒,发送电子邮件和推送通知。

本开发库以及 iCanvas 类简单使用了 Canvas 来开发程序。

"Previous Candle Breakdown" EA 交易。