程序库: MT4Orders

 

MT4Orders:

同时使用 MetaTrader 4 和 MetaTrader 5 的订单系统。

作者: fxsaber

 
令人难以置信的东西 - 非常感谢......最好的使用方法可能是在 MT5 对冲....是的,没有多少交易者还在使用 MT5...)))))
 
在看过许多订单语言系统(NinjaTrader、TradingStation、MetaStock、WealthLab、Dukascopy JForex、FXCM ForexConnect、LMAX API、IB TWS、MT4/5 等)之后,我得出一个明确的结论:MT4 是 OJS 的基准。它是最方便的 OJS,是杰作!

如果有人需要为其他 NMC 编写智能交易系统,我建议不要急于求成,立即开始编写 MT4-NMC 的适配器。最好在开始时花些时间,但在编写、调试和测试智能交易系统 时,你会得到更多的回报。

出于政治正确,我将继续只谈 Metatrader。有人会说,你只需要习惯 MT5-OS。在此,我无法反对。什么都可以习惯。说到 NFC 的便利性,我的意思有所不同。

当您拿到 MQ4-advisor 时,很容易从代码中了解它在做什么和在哪里做。进行更改。如果有人询问代码等问题,您可以向他提供帮助。例如,几乎所有的代码库顾问都是这种情况。原因并不是因为几乎所有的顾问都是用程序风格编写的(顺便说一句,OOP MQ4 顾问更容易理解)。

如果您使用的是 MQ5-advisor(参见糟糕的代码库),要理解其交易算法的各个部分就需要付出更多的脑力劳动。我甚至可以说,会感到不适。而 SNF 正是如此。理解总是会有的,但需要花费更多的时间和精力。

当然,如果您只阅读/编辑/添加自己的代码,您不会感觉到 MT4 和 MT5-NFC 之间有任何明显的区别:您编写了自己的通用库,仅此而已。但这只是为了您自己的利益。如果您遇到的是别人的代码,您就会洗个冷水澡。不幸的是,开发人员提供的标准库并不能帮助你走出不适区。

正因为如此,要在 MQL5 中建设性地讨论/完善一个交易想法是非常困难的,因为在各种交易社区中,长期以来都是在 MQL4 中进行的。在这方面,切换到 MT5 的愿望并不强烈。

我相信,作为 MT5-Hedge 的附加功能,这项工作最终将允许在强大的 MT5 测试工具中测试(和讨论)好的交易想法,并大大减少有关 MT4 和 MT5 之间差异的对话。这将使 EA 的交易部分在讨论中重新领先于技术编程部分。

在为 MT5-NFC 辩护时,我想说这种 NFC 比 MT4 提供了更多的可能性。在股票交易中尤其如此。但即使在外汇交易中,您也可以通过 MT5-NFC 获得有关挂单执行质量的重要统计数据。因此,两种 NFC 的并行使用才是便利/机会的黄金法则。这正是这项工作允许我们做到的。

现在,比较不同世代的 MT 测试仪非常简单--相同的代码(MQL4)可以在两个测试仪上运行。不难发现,MT5 测试仪的单次运行性能较低。MT5 测试仪中的限价订单和 TP 水平会以不切实际的高正滑点执行。无法测试自己的历史记录和其他东西(有时是必要的)。但我相信这只是暂时的误解。云计算、内置真实点差、多币种和其他一些功能都有很多优点。如果说云和实数仍可在旧版测试仪中模拟,那么多币种则是新版测试仪的明显优势。

描述中的示例特别介绍了在某些圈子里闻名已久的 tick 交易理念 - Lucky(原始形式)。如果由于 MT5 测试仪对限价订单(1368 版本)的不准确性,即使在 "基于真实点差的每个点差 "模式下,也无法对该系统进行明确评估。MQ4-advisor Spreader(见示例)形式的代码简单(感谢 MT4-OJAS)的多货币想法在 MT5-tester 中找到了新的生命。

以前在 MT4 测试仪中难以/无法测试的许多旧想法,现在几乎可以在其原始版本中轻松复活并进行富有成效的探索。
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии ( советники ) перед началом использования их в реальной торговле. При...
 
Сергей Криушин:
令人难以置信的东西 - 非常感谢......最好的使用方法可能是在 MT5 对冲....是的,没有多少交易者还在使用 MT5...))))
它可能是用来编写在不做任何更改的情况下编译为四或五的系统的。
 
这在历史上是行不通的。所以奇迹并不多。
 
Dmitry Fedoseev:
这在历史上是行不通的。所以没有什么奇迹。
我会怀着感激的心情接受你提供的细节。没有细节,我无法再现 "不工作"。
 
fxsaber:

在为 MT5-NFC 辩护时,我想说这种 NFC 比 MT4 提供了更多的可能性。在股票交易中尤其如此。但在外汇交易中,您也可以通过 MT5-NFC 获得有关挂单执行质量的重要统计数据。

https://www.mql5.com/zh/code/16134

SlipPage
SlipPage
  • 2016.08.25
  • fxsaber
  • www.mql5.com
Расчет проскальзываний совершенных сделок в валюте счета.
 
fxsaber:
我将怀着感激之情接受您提供的详细信息。没有这些细节,我就无法重现 "不工作 "的情况。
你是如何 "尝试 "重现的?
 
Dmitry Fedoseev:
您是如何 "尝试""重现 "它的?

我运行了很多 MT4 脚本/顾问,分析了它们工作的正确性。

在编写库时,我还创建了自己的测试。

 
fxsaber:

我运行了许多 MT4 脚本/顾问,并分析了它们工作的正确性。

在编写库时,我还创建了自己的测试。

与历史工作相关的测试有哪些?
 

已检测到一些处理历史记录的基本方法:

   static int MT4OrdersHistoryTotal(void)
     {
      int Res=0;

      if(::HistorySelect(0,::TimeCurrent()))
        {
         const int TotalDeals=::HistoryDealsTotal();

         for(int i=0; i<TotalDeals; i++)
            if(MT4ORDERS::IsMT4Deal(::HistoryDealGetTicket(i)))
               Res++;

         const int TotalOrders=::HistoryOrdersTotal();

         for(int i=0; i<TotalOrders; i++)
            if(MT4ORDERS::IsMT4Order(::HistoryOrderGetTicket(i)))
               Res++;
        }

      return(Res);
     }

每次调用 OrdersHistoryTotal() 时,都会对账户的整个历史记录进行大量检查。

在历史记录中按索引进行选择时,也会对整个历史记录进行慢动作。