请观看如何免费下载自动交易
请在Twitter上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
显示:
2841
等级:
(59)
已发布:
2018.12.23 08:12
\MQL5\Include\fxsaber\Virtual\
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) 预览
\MQL5\Experts\fxsaber\
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务

这是跨平台在虚拟交易环境中操作的最简单方式之一。


使用虚拟交易环境的场景

  1. 实时测试。这意味着,您可以观察 EA 在测试器中如何依据最新价格实时交易。 这令您可以分辨真实市场和测试器之间的差异原因。 无需等待新的一天(MT5 测试器限制),或为测试器创建特殊工具,以便它可以获取最新数据。 相应地,没有必要反复运行测试程序来获得更新。 实际上,虚拟交易环境是一个实时测试器。
  2. 自动优化。虚拟交易环境假设您已定义操作所用的数据。 所以,历史数据数组允许您在虚拟交易环境中运行任何交易策略。 因此,您可以在程序中实现自动优化 - 程序会定期优化自身,就像传统的测试程序一样。
  3. 将真实交易转变为虚拟交易(反之亦然)。例如,在亏损情况下暂时禁用交易策略。 重新启用交易策略的时间可以通过测试器,或通过一笔最少手数交易进行分析。 反之,虚拟环境允许用户实时停止交易,同时在虚拟交易环境中继续交易。 这为分析是否要重新启用交易策略,以及轻松重启实际交易能力时提供了很多便利。
  4. 简化工作帐户上的交易逻辑。市场上会发生许多测试器内不存在的情况。 这些包括拒绝和部分执行。 最大的问题是令真实交易尽可能类似于测试器中交易策略的执行。 通常,交易策略开发人员花费大量精力来克服极难预见的市场细微差别。 事实上,他们从自己的错误中吸取教训,并为此付出了真金白银,因为模拟账户无法模仿真实市场中的许多东西。 反过来,虚拟环境令我们能够看到完美的执行全景。 因此,为了绕过真实市场的陷阱,我们需要访问这个完美的全景,并从虚拟环境高品质地同步到真实环境(复制服务)。 因此,虚拟交易环境在处理真实市场中的困难情况时非常有用。
  5. 测试器加速。内置测试仪是一种通用工具。 这意味着它必须尽可能地充分模仿交易环境。 这意味着因操作速度限制带来高成本。 在开发和分析交易策略时,这种高精度会耗尽。 有多种方法可以加速测试器,包括自定义品种(高达百分之几百)和虚拟交易环境(百分之几十和几百),为了提高速度,可以放弃不考虑某些因素。 测试器加速是虚拟交易环境的一个重要优势,因为它可以节省计算资源,最重要的是节省时间。
  6. 交易策略逆转。虚拟交易环境允许轻松地逆转任何交易策略。
  7. 在净持账户上运行多种交易策略。虚拟交易环境大大简化了在净持账户上启动任意数量的交易策略。 交易策略不会互相干扰。
  8. 净持账户上的单向持仓。您可以在一个方向上开立多笔持仓。 它们当中的每一笔都有自己的魔幻数字,开仓时间,开仓价格,注释,等等。 例如,这允许在净持账户上创建网格交易策略,其中每笔单向持仓的止盈可以不同。
  9. 隐藏限价/追价/止损/止盈价位。如果存在隐藏重要交易价位的任务,则可以使用虚拟交易环境快速解决。
  10. 在净持账户上启动对冲交易策略。所有交易策略都在对冲虚拟环境中启动。 净持真实环境与虚拟环境同步。
  11. (异常)停止后恢复交易策略操作。许多交易策略的逻辑取决于它之前做了什么。 这就是为什么即使您禁用交易策略并立即重新启动它,如果交易策略在没有关停的情况下工作,您可能无法获得本应得到的结果。 虚拟交易环境允许您解决此任务。 启动时,交易策略会暂时在虚拟环境中按照历史价格数据运行,直至当前时刻。 然后它永久地转至真实交易环境。 例如,这可以解决许多涉及交易策略关停和重启的异常情况。


实现

该函数库允许创建虚拟交易环境并进行交易,就如同它是一个真实的交易环境一样。 函数库得功能并不新鲜,尽管所提供的跨平台函数库可能有一个很重要的属性:您不需要学习任何东西即可运用。 知道 MT4(不是 MT5)交易逻辑就足够了。

选择 MT4 风格的交易逻辑进行虚拟交易,因为它更方便,并且可以轻松地开发跨平台的 EA。


示例

传统上,函数库功能可以通过预先准备的示例来证明。

    // 在真实和虚拟交易环境中启动交易策略
    
    #include <MT4Orders.mqh> // https://www.mql5.com/zh/code/16006
    #include <fxsaber\Virtual\Virtual.mqh> // 虚拟交易环境
    
    input double Lots = 1;
    input int Interval = 100;  // 持仓存活期
    input bool Example = true; // 选择什么代码示例
    
    // 逆转交易策略
    void System()
    {
      if (!OrderSelect(OrdersTotal() - 1, SELECT_BY_POS))
        OrderSend(_Symbol, OP_BUY, Lots, SymbolInfoDouble(_Symbol, SYMBOL_ASK), 100, 0, 0); // 如果此刻没有持仓, 开一笔
      else if (TimeCurrent() - OrderOpenTime() > Interval) // 如果持仓的存活期超出指定时间
      {
        // 逆转持仓
        OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100);
        OrderSend(_Symbol, 1 - OrderType(), Lots, OrderClosePrice(), 100, 0, 0);
      }
    }
    
    void OnTick()
    {
      static const int handle = VIRTUAL::Create(); // 创建虚拟交易环境句柄。 0 - 真实交易环境
    
      if (Example)
      {
        if (VIRTUAL::SelectByHandle()) // 选择真实交易环境
          System();                    // 在选定的交易环境中启动交易策略(真实)
    
        if (VIRTUAL::SelectByHandle(handle)) // 选择虚拟交易环境
        {
          VIRTUAL::NewTick();      // 将逐笔报价添加至虚拟交易环境
          System();                // 在选定的交易环境中启动交易策略(虚拟)
        }
      }
      else // 替代固定相同的动作。
        // 沿着所有现有的交易环境移动
        for (int i = 0; i <= VIRTUAL::Total(); i++)
          if (VIRTUAL::SelectByIndex(i)) // 选择合适的交易环境
          {
            VIRTUAL::NewTick(); // 将逐笔报价添加至所选交易环境
    
            System(); // 在选定的交易环境中启动交易策略
          }
    
      Comment(VIRTUAL::ToString()); // 在图表上显示虚拟交易环境的状态
    }


这是一个跨平台的逆转 EA。 多谢 MT4 风格,它的交易逻辑可以用几个字符串(System 函数)来描述。 EA 同时在真实和虚拟交易环境中启动交易策略。 这可以在 MT4 或 MT5 测试器中看到(CTRL + F5)

屏幕截图显示出真实和虚拟环境中的交易是相同的。


请注意,交易策略代码保持不变。 仅选择交易环境:真实的或任何数量的虚拟环境。

在此显示的代码是多余的 - 两个版本只显示使用函数库的逻辑。


测试器加速

由于 测试器加速 场景 (参见上边第 5) 也许比其它更经常需要,我们已为其添加了将任何交易策略切换到虚拟环境的能力,并在代码的开头添加两个字符串。

#define VIRTUAL_TESTER // 在虚拟交易环境中启动
#include <fxsaber\Virtual\Virtual.mqh> // 虚拟交易环境

突出显示的字符串可令用户无需干预交易策略原始代码。

此模式专为测试器而设。 假设启动长期优化时以( VirtualTester = true )虚拟环境替代真实环境。 这为优化速度(时间)提供了显著增益。 所获结果(OnTester 准则 - 余额)可用于实际交易环境中的标准单一运行 (VirtualTester = false)。


交易策略逆转

相同两个字符串旨在加速测试器,能够解决另一个常见问题 - 交易策略逆转。

ReverseDeals = true 模式可以实现交易逆转。 内部算法如下:

  • 原始 EA 在虚拟环境中进行交易,就像在真实环境中一样。
  • 在真实环境中,存在与虚拟环境中相应持仓相反的持仓。

因此,EA 逻辑不会以任何方式受到违背。 同时,我们可以看到交易策略逆转提供了什么。 此模式也适用于测试器。


特征

  • 与内置测试器相比,并非所有事情都能在虚拟交易环境中实现。
  • 对冲/净持两种模式均得以支持。 例如,您可以在 MT4/5 中同时创建净持和对冲虚拟环境。
  • 对虚拟环境的数量没有限制。
  • 不会执行最后价格,而这有时会在 MT5 测试器中发生,因为最后价格不与任何时间点相关。
  • 限价订单和止盈等级始终以指定价格执行,没有滑点。 这消除了某些交易策略利用 MT5 测试器制造圣杯的印象。
  • 追价订单和止损等级总是以第一次接受价格(负滑点)执行,以避免测试器圣杯。
  • 与某些 MT5 测试器操作模式不同,以当前价格设置挂单和止损/止盈等级会立即接受。 这种行为符合市场现实。

由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/22577

MAMy 智能系统 MAMy 智能系统

基于 MAMy v.3 指标的 EA

TrendLineAlert_V2 TrendLineAlert_V2

指标显示一条倾斜的趋势线。 当交易者启动指标时,其参数将被设置。 趋势线定义了信号触发价位。 趋势线突破激活信号,并伴随电子邮件和推送通知。

MAMy v3 MAMy v3

基于三条移动平均线的指标

RNN RNN

基于 iRSI(相对强弱指数,RSI)指标和小型神经网络的智能交易系统