TradeTransactions - MetaTrader 5 库
异步交易订单有一个巨大的优势——批量发送时速度快。然而,这种订单的传播受到了不便的阻碍——订单结果数据只能在OnTradeTransaction中看到,这使得用户如果想要异步,就需要构建其交易策略的事件模型。这并不总是容易的(EA),有时甚至是不可能的(脚本)。
图书馆解决了这个问题。自应用程序启动以来,它随时可以访问交易终端中的所有交易(相应 OnTradeTransaction 的完整数据),从而简化了程序异步的过程。
下面的例子展示了库的运行原理:
// 打印出所有没有 OnTradeTransaction 的交易 #包括// 在程序中的任何位置访问 OnTradeTransaction 数据贸易交易 交易;// 交易交易 常量 布尔值初始化=事件集毫秒定时器(100);空白 定时器() { 静止的 单位总计 =0; 常量 单位NewTotal = Transactions.Total();// 保存的交易数量 为了(单位i = 总计; i < 新总计;我++)// 运行新事务 { MqlTrade事务反式; Mql交易请求要求; Mql交易结果结果; // 获取相应交易的所有数据并打印它们。 打印(字符串时间(交易[i].Get(交易, 请求, 结果)) +“\n”+ ToString(Trans) + ToString(请求) + ToString(结果)); } 总计 = 新总计; }
运行此 EA 并尝试手动执行交易订单。 EA 交易将打印所有详细信息,就像它具有 OnTradeTransaction 一样。虽然还没有!
使用此类功能的实际场景可能有很多。例如,交易一篮子交易品种。例如,如果您需要在代码内快速开多个仓位。如果它们打开,您可以执行其他交易操作,而无需离开“打开”功能。
由于我们经常需要等待大量异步订单发送的结果,因此该库具有适当的功能,可以使用这样的示例快速评估
// 等待结果的大量异步交易订单示例。 #包括//https://www.mql5.com/en/code/16006 #包括 // 在程序中的任何位置访问 OnTradeTransaction 数据贸易交易 交易;// 交易交易 // 尽快开仓。持仓时返回。 布尔值未平仓合约(常量 整数金额=10) { 单位请求ID[]; 为了(整数我=数组调整大小(请求 ID、金额)-1;我 >=0;我 - ) { 常量 细绳符号=符号名称(我,真的); 请求ID[i] =订单发送异步(符号,OP_买入,1,符号信息双(符号,SYMBOL_ASK),100,0,0);// 发送异步订单 } 返回(交易.等待(RequestID));// 等待服务器对所有异步订单的响应}// 尽快关闭所有内容。确认操作后返回。 布尔值关闭全部() { 单位请求ID[]; 为了(整数我=数组调整大小(请求ID,订单总数()) -1;我 >=0;我 - ) 如果(订单选择(我,SELECT_BY_POS)) // 发送异步订单 请求 ID[i] = (订单类型() <=OP_卖出)?订单关闭异步(订票(),订单批次(),订单收盘价(),100) : OrderDeleteAsync(订票()); 返回(交易.等待(RequestID));// 等待服务器对所有异步订单的响应}空白 启动时() { 如果(未平仓头寸()) 打印(关闭全部()); }
当然,这是一个脚本,但它仍然允许通过库处理事务。此次发布展示了如何快速开立和关闭多个交易头寸/订单。
附件下载
📎 tradetransactions.mq5 (1.4 KB)
📎 tradetransactions_example.mq5 (2.65 KB)
📎 ontradetransaction.mqh (0.83 KB)
📎 resource.mqh (0.63 KB)
📎 resourcedata.mqh (1.41 KB)
📎 string.mqh (0.45 KB)
📎 traderequest.mqh (2.12 KB)
📎 traderesult.mqh (1.15 KB)
📎 tradetransaction.mqh (2.06 KB)
📎 tradetransactions.mqh (2.46 KB)
📎 typetobytes.mqh (20.54 KB)
Source: MQL5 #22166
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
