文章 "MetaTrader 5终端策略测试器中的订单生成算法" - 页 20

 
稍后,我将以可视化形式发布 Dukascopy、alpari 和 GKFX 的刻度。
 

交易、自动交易系统和交易策略测试论坛

MetaTrader 4 IDE 测试版包括新的 MQL4 编译器和编辑器

Urain, 2013.09.12 13:18

您天真地认为,在较高的 TF 上进行交易就可以摆脱生成错误刻度线的诅咒,但事实并非如此。接近某一水平的交叉并不取决于 TF。它贯穿于所有时间框架。在 W1 上,收盘价与 M1 相同。

这里有一个例子:


水平部分是开仓/平仓的最佳点(就执行而言),价格站稳,市场上有足够的成交量,市场在逐渐回升(这就是价格站稳的原因),获得重新报价的风险很小。

但测试仪会将这部分生成为一个刻度线梳子(向上向下),因此在现实生活中,您会很有信心地在任何 TF 上开仓(如果有信号,例如收盘价越过指标线),但在测试仪中,在这些部分您会得到很多假阳性,并支付 8 个点差,然后再过 100 个刻度线,您将再支付 8 个点差。这就是假 ticks 的产生将如何扼杀一个正常的 TS,而所有垃圾都将留下,优化器将不得不选择给您什么作为获胜的猴子。

顺便说一句,现实生活中有很多这样的网站。

关于交易、自动交易系统和测试交易策略的论坛。

MetaTrader 4 IDE 测试版,包括新的 MQL4 编译器和编辑器。

Urain, 2013.09.12 14:13

有刻度。在现实生活中,ticks 是由堆栈状态变化事件产生的。

也就是说,有四种类型的 ticks:出价发生变化、要价发生变化、出价和要价都发生变化,最后是价格没有变化但堆栈中的交易量发生变化。

只有第四种类型的刻度线是直线,而测试仪生成的刻度线和卖出价的变化是不充分的。


对于上一个帖子:...

这就是虚假勾股如何扼杀正常 TS 的,所有垃圾都将留下,优化器将不得不从中选择给你什么作为获胜的猴子。

猴子究竟是如何出人头地的......在现实生活中,猴子会急剧跳升,但这是不可能的;而在测试器中,价格会平稳上升,但这是不存在的;在这样的上升过程中,测试器中的猴子会显示出利润,尽管它们在现实生活中会亏损。


交易、自动交易系统和交易策略测试论坛。

MetaTrader 4 IDE 测试版,包括新的 MQL4 编译器和编辑器。

Urain, 2013.09.12 14:21

我不是要求举例说明,当您编写程序时,您会考虑可能的变体。

现在的问题是在特定情况下建模是否充分。我给了一个例子的链接,但这种情况很可能发生在任何经纪商的任何工具上。

ZY 在 4 种导致生成跳动点的情况中,有 2 种处理不当。

在其余两种情况中,两种价格(买入价和卖出价)都发生变化的情况并不总是能得到正确处理。

例如,价格急剧变化的情况会导致出现虚假价格。

总之,只有一种情况总是能得到正确处理,即出价变化。

ntchk




 

略微调整了文章中记录测试仪刻度的智能交易系统。

//+------------------------------------------------------------------+
//|Write_Ticks_mod.mq5
//| 2010 年 MetaQuotes 软件公司版权所有。
//|https://www.mql5.com ||
//+------------------------------------------------------------------+

input datetime start = D'2013.09.06 14:29:00';
input datetime end   = D'2013.09.06 14:31:00';

//+------------------------------------------------------------------+
//| 专家勾选功能|
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlTick tick;
   datetime time=TimeCurrent();
//---
   SymbolInfoTick(Symbol(),tick);
   //Print(time,tick.bid);
   Print(time,", ",tick.bid,", ",tick.ask); // 增加询问
//---
   if(time>end) ExpertRemove();
//---
  }


http://www.gkfx.ru/trade_specs/tick_history.html

http://www.dukascopy.com/swiss/russian/marketwatch/historical/

https://www.alpari.ru/ru/login/(我个人橱柜中的刻度),http://ticks.alpari.org/


预告片中的所有文件 + xlsx

 

Свеча в 14:30 (время в MetaTrader 5) объёмом в 39 тиков, в альпари она равна 86 на ECN и 136 тиков на стандарт,

但这绝对不重要(刻度线的数量),因为刻度线的生成原理是一样的,只是刻度线会更密集。


在 MetaTrader 5 测试仪中,您可以看到这根蜡烛上的价格在36 秒内单调、均匀、无抖动地上升到最高点, 然后出现小幅回调。

而在期货(股票跳动)上,您可以看到价格在几分之一秒内急剧跳动,然后开始正常交易。


对于其他报价急剧跳动的新闻/统计数据,原理也是一样的。

https://www.mql5.com/ru/forum/1031/page19#comment_597854


真实外汇交易和期货交易的点差很小,因为它们之间存在套利,而且外汇交易的点差会被过滤和汇总。

+ 在进行真实交易时,执行订单的延迟是不同的,因为在一些期货经纪公司,所有订单都存储在交易所内,并在几微秒内执行,这与外汇交易不同。

https://www.mql5.com/ru/forum/10454/page88#comment_584876


这也是为什么任意延迟(测试器中的选项)不相关的原因,因为在生成测试器刻度线时,M1 蜡烛图内形成高点、低点或回撤的确切时间(毫秒、秒)并未考虑在内。

或者它(任意延迟)应手动设置为 1 分钟以上,但没有这种可能性(在其他情况下,准确性也会降低)。

Обсуждение статьи "Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5"
Обсуждение статьи "Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5"
  • www.mql5.com
Обсуждение статьи "Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5".
 
MetaQuotes:

新文章MetaTrader 5 终端策略测试仪中的刻度线生成算法 已发布:

作者:MetaQuotes Software Corp:MetaQuotes Software Corp.

您能给我们一个关于"点数生成算法"的代码示例吗? 对这个 算法 非常好奇 如何计算 "点数生成算法 "生成的每个 "点数 "对应的时间?谢谢
 
大家好,我想我需要一些帮助。

我有一个用于微剥头皮的指标。它在 Tester M1 时间框架上给出了非常好的结果 - 每个刻度线
,但当它上线时,结果却很差!

,在我对着墙敲了好几天之后,我得出结论,这种差异是由于这种"刻度线生成算法"造成 的。

,有什么建议吗?


谢谢您的帮助。

ugo
 
ugo:
大家好,我想我需要一些帮助。 我有一个用于微剥头皮的指标。它在 Tester M1 时间框架上给出了非常好的结果 - 每个刻度线 ,但当它上线时,结果却很差! ,在我对着墙敲了好几天之后,我得出结论,这种差异是由于这种




"刻度线生成算法"造成 的。 ,有什么建议吗? 谢谢您的帮助。 ugo






缩放器(依赖于刻度线数据)可能无法使用策略测试器进行测试。
 
angevoyageur:
缩放器(依赖于刻度线数据)可能无法使用策略测试器进行测试。

如果不使用任何附加指标,可以从保存的历史条形图中捕捉自动生成的刻度线,将其丢弃,然后从以前保存的刻度线中插入同一分钟的刻度线。

保存到磁盘的二进制刻度线对于一种货币一周的时间大约需要 50 MB,因此我认为只有较小的时间段是可以测试的(如果您必须保存自己的刻度线数据,而不能从其他来源获取刻度线数据的话)。

但这可能足以验证您的算法。

祝你好运,ugo58

 
ugo58:

如果您不使用任何附加指标,您可以从保存的历史条形图中捕捉自动生成的刻度线,将其丢弃,然后从以前保存的刻度线数据中插入同一分钟的刻度线。

保存到磁盘的二进制刻度线对于一种货币一周的刻度线大约需要 50 MB,因此我认为只有小周期的刻度线是可以测试的(如果您必须保存自己的刻度线数据,而不能从其他来源获取刻度线数据的话)。

但这可能足以验证您的算法。

祝你好运,ugo58

嗨,谢谢大家!

我不太明白:"......插入同一分钟的刻度"。您是指手动查看相同开盘和收盘时间的真实刻度值,还是有办法从磁盘保存的历史记录中运行策略测试器?我从angevoyageur 那里得知这是不可能的

乌戈

 

是的,MQL5策略测试仪 不允许使用与经纪商提供的价格不同的历史记录。但是,如果您编写自己的 EA,只要您不需要任何预制指标,就可以处理这个问题。

据我所知,使用新的 MQL4,您可以编写与 MQL5 相同的代码。如果您考虑到订单处理的不同方式,您可以使用您提供的历史记录测试您的 EA。

ugo58