虚拟 - MetaTrader 5 库







这种跨平台允许以最简单的方式之一使用虚拟交易环境。
该库允许创建虚拟交易环境并像真实交易环境一样进行交易。该库的功能并不新鲜,尽管提供的跨平台库具有一个有时可能很重要的属性:你不需要学习任何东西来使用。了解 MT4(而非 MT5)交易逻辑就足够了。
虚拟交易选择MT4风格的交易逻辑,因为它更方便并且可以轻松开发跨平台EA。
传统上可以通过预先准备的示例来演示库功能。
// 在真实和虚拟交易环境中启动TS #包括//https://www.mql5.com/en/code/16006 #包括 // 虚拟交易环境 输入 双倍的手数 =1;输入 整数间隔=100; // 位置生命周期 输入 布尔值示例 =真的;// 选择什么代码示例 // 反转 TS 空白系统() { 如果(!订单选择(订单总数()-1,SELECT_BY_POS)) 订单发送(_象征,OP_买入, 很多,符号信息双(_象征,SYMBOL_ASK),100,0,0);// 如果没有仓位,则开仓 别的 如果(时间当前()-订单开放时间() > 间隔)// 如果仓位生存期超过指定时间 { // 反转位置 订单关闭(订票(),订单批次(),订单收盘价(),100); 订单发送(_象征,1-订单类型(),很多,订单收盘价(),100,0,0); } }空白 勾选() { 静止的 常量 整数句柄= VIRTUAL::Create();// 创建虚拟交易环境句柄。 0 - 真实交易环境 如果(例子) { 如果(虚拟::SelectByHandle())// 选择真实的交易环境 系统(); // 在选定的交易环境上启动 TS(真实) 如果(虚拟::SelectByHandle(句柄))// 选择虚拟交易环境 { 虚拟::NewTick(); // 为虚拟交易环境添加tick 系统(); // 在选定的交易环境(虚拟)上启动 TS } } 别的 // 相同动作的替代固定。 // 沿着所有现有的交易环境移动 为了(整数我=0;我<=虚拟::总计();我++) 如果(虚拟::按索引选择(i))// 选择合适的交易环境 { 虚拟::NewTick();// 添加勾选到选定的交易环境 系统();// 在选定的交易环境上启动 TS } 评论(虚拟::ToString());// 在图表上显示虚拟交易环境的状态}
这是一款跨平台反转 EA。它的交易逻辑可以用几个字符串来描述(系统功能)得益于 MT4 风格。 EA 同时在真实和虚拟交易环境中启动 TS。这可以在 MT4 或 MT5 测试器 (CTRL+F5) 中清楚地看到

截图显示真实和虚拟环境中的交易是相同的。
注意TS代码保持不变。仅选择一种交易环境:真实的交易环境或任意数量的虚拟交易环境。
这里显示的代码是多余的 - 这两个版本只是显示了使用该库的逻辑。
自从 测试仪加速度场景(参见上面第 5 页)可能比其他场景更频繁地需要,我们通过在代码开头添加两个字符串来添加将任何 TS 切换到虚拟环境并返回的功能。
#定义虚拟测试仪// 在虚拟交易环境中启动 #包括// 虚拟交易环境
突出显示的字符串可以让用户不干扰TS原始代码。

该模式是专门为测试仪设计的。假设长期优化是在启用(虚拟测试仪 = true)虚拟环境而不是真实环境。这显着提高了优化速度(时间)。获得的结果(OnTester 标准 - 余额)可用于真实交易环境中的标准单次运行(虚拟测试仪=假)。
旨在加速测试器的相同两个字符串可以解决另一个常见问题 - TS 反转。

反向交易 = true模式可以逆转交易。内部算法如下:
因此,不会以任何方式违反 EA 逻辑。同时,我们可以看到 TS 反转提供了什么。此模式也适用于测试人员。
附件下载
📎 string.mqh (0.59 KB)
📎 sync.mqh (5.42 KB)
📎 order.mqh (15.78 KB)
📎 orders.mqh (13.93 KB)
📎 virtual.mqh (23.14 KB)
📎 virtual_example.mq5 (1.92 KB)
Source: MQL5 #22577
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
