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

 
Renat :
但您参与的是 MetaTrader 5 + MQL5 + Tester 主题,直接与开发者竞争。


因为您不了解 MetaTrader 5 终端,所以您不知道 Tester 中的交易模式,甚至没有注意我在本专题第一页用图片对这些模式的解释。

测试模式专为清醒的交易者和编写强大的智能交易系统而设计。这将大大提高智能交易系统的质量。

我曾多次在论坛(MQL4.com 和 MQL5.com)中写到测试器中的激进模式。

这就是问题的根源--不愿意在实践中测试。

总的来说,我们的对话就像是锁的反对者和支持者之间的讨论、

每一方都不想听到另一方的意见(可能是因为一方遭遇了一些对手看不到也不理解的解决方案)。

如果你是对的,那就好了,实践会证明这一点、

我祝你好运,相信我,这是一个真诚的愿望,因为对我来说,更重要的是使用一个更完美的终端

(对我来说,使用更完美的终端(并在它的帮助下获利)比在某些争论中保持正确更重要。

 
Renat писал(а) :

...
4.请记住您在 MT4 中的建模 "技巧 "和您对建模的态度。我可以再问一个问题。您在一栏中的刻度数是否相同?在 MT4 中,您曾丢弃 20% 的刻度线。现在情况如何?如果一个真实条形图有 100 个刻度点,您在建模时会有多少个刻度点?

不谋而合,但您不想检查任何东西。理论思维对你来说已经足够了。

好吧,我们来验证一下。我画了一个专家的草图。这是代码

  int ticks=0; 
  double  old_bid=0, old_ask=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit() {return(0);}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason){}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  MqlTick last_tick;
//---
   if(SymbolInfoTick(Symbol(),last_tick)) // получаем тик по символу
     {
     // ограничение по времени, собираем смоделированные тики за 1 час. 2010.05.21   22:00
      if(last_tick.time>"2010.05.21 21.00.00" && last_tick.time<"2010.05.21 23.00.00") {
      if(old_ask!=last_tick.ask || old_bid!=last_tick.bid)  { // если нет изменения цены это не тик, пропускаем
         // это тик запоминаем цену, увеличиваем счетчик тиков и выводим принт для проверки
         old_bid=last_tick.bid;
         old_ask=last_tick.ask;
         ticks++;
         Print("ticks=", ticks," ",last_tick.time,": Bid =",last_tick.bid," Ask =",last_tick.ask);
     }      
     }
     }
   else Print("SymbolInfoTick() failed, error =",GetLastError());
//---
  }

这是结果

要么是我的手歪了 要么就是你在撒谎任何人都可以下载并自行检查如果你发现我的代码有误,我将感激不尽。

附加的文件:
111.mq5  3 kb
 

实际测试的结果是第一个选项。您在限制中犯了一个错误,指定了 2 小时而不是 1 小时。

下面是正确的截止时间:

      if(last_tick.time>="2010.05.21 21:00" && last_tick.time<"2010.05.21 22:00") 

以及结果:

2010.05.23 20:13:07     Core 1  ticks= 2315   2010.05.21 21:59:59 : Bid = 1.25721  Ask = 1.25738

产生了 2315 个刻度线,而实际产生的是 2318 个刻度线。在 2318 个点数中损失 3 个点数是正常的。


 

很好,您同意可以检查该代码。您只需输入正确的时间间隔。请输入这个。

      if(last_tick.time>"2010.05.19 12.00.00" && last_tick.time<"2010.05.19 13.00.00") {

请解释 5200 ticks 去哪了?

 

你继续进行模拟测试是件好事。

我这只手表上没有 5869 个刻度,只有 679 个。这是我这段时间的运行结果 - 679 个刻度。100%的刻度都是模拟的。


显然,你有一个缓存时钟(总共 679 个刻度的分钟数是正确的)--我们在 19 日短时间内打开了刻度,但随后又将其回滚了。

只需在图表上调用 "刷新 "命令并再次运行即可。

注意时间的正确格式 YYYY.MM.DD HH:MM:SS。

 

本文中被遗忘的一个问题

在 mt5 中出现真实交易量数据时

如何生成这些信息

 

虽然 Urain 和 Prival 对此不屑一顾,但我非常了解点数交易者。但我的 TS 恰恰相反,是建立在最大可能的噪音过滤基础上的,TS 对刻度线的特质具有免疫力。关于 Urain 提到的 NN,在 NN 上建立一个对刻度线质量敏感的 TS 是没有意义的。

我也非常理解开发人员。

我认为开发人员可以采取一种折中的方法,即在标准刻度线生成器上创建一个附加组件,以调节生成刻度线的 "蓬松度",并有可能调节刻度线的出现频率和排放大小。在我看来,这与调整测试的 "激烈程度 "并不相同。也许我们应该考虑使用某种分析器来分析测试仪生成的刻度与真实刻度之间的对应程度,这样我们就可以输出可供用户调整的参数。

无论如何,开发人员需要采取一些措施来保护他们的利益和终端交易者的利益。折中的解决方案几乎总是可以找到的。

PS 是的,还有一件事。如果 DC 甚至每天都可以更改过滤器,从而使累积的勾选历史变得毫无用处,那么我就不明白为什么我们需要勾选历史(因为需要进行充分的实际测试),因为即使在真实的勾选历史 上进行测试后,TS 的未来行为也会与预期大相径庭。这就是为什么我认为由用户调整 "蓬松度 "的变体比拥有真实刻度历史的可能性更可取。
 
joo писал(а) :

虽然 Urain 和 Prival 对此不屑一顾,但我非常了解点差交易者。但我的 TS 恰恰相反,是建立在最大限度地过滤噪音的基础上的,TS 对刻度线的特质具有免疫力。.....

我不理解那些不懂就乱贴标签的人。这里是第一页的链接。https://www.mql5.com/ru/forum/115584/page11#150512. 请仔细看看图片!!您可以看到所有内容--交易都绘制在图表上。

参数 - 平均交易规模(点数)650,最短交易时间 1 小时。我是点数达人吗?

您为什么禁止我分析点差?难道我禁止您按照自己的想法分析输入的信息?您认为按小时烛台分析就能自动消除噪音 - 这是您的错觉,我建议您采用更好的变体 - 按年烛台分析,这样系统会更好、更强大、更无噪音,数据提供商也不会有问题,只需每年向交易者提供 5 位OHLC 和 "交易量",然后让他进行交易。大家都很高兴,交易者有了一个强大的系统,没有噪音,供应商在缩放等方面也没有问题。(科学中有这样一种方法,用极端情况来理解一个想法是否是无稽之谈......自己得出结论)。

现在,我将给 Renat 写一封回信,仅此而已。 我将尝试描述我所看到的 建模与真实引文之间的差异。这是他的创意,他决定对 ticks 进行建模,他认为 的许多参数在建模中并不重要。

我们的工作是了解在哪些方面我们可以信任测试人员,在哪些方面。测试人员会在哪些方面欺骗我们。我们无法改变对方的想法。雷纳特妄想创建一个比真实模型更好的模型。 我不这么认为。

我们只有机会在模型上研究 TC,而不可能在真实数据上运行所创建的 TC(不管是坏的还是好的,蓬松的还是不蓬松的,都无所谓)。我们没有这样的机会!!。 他们为什么不给我们机会,让我们至少独立下载历史数据,比如从这里下载http://www.dukascopy.com/swiss/russian/data_feed/historical/, 将其输入测试器并在这些数据上运行 TS?结果大家都很清楚,难道没有人遇到过吗? 在测试器中一切都很好,但在现实生活中,即使你找到了 TS,你也可以在https://www.mql5.com/ru/forum 上得到如此美丽的容颜。你必须是一个绝对的偏执狂,才能建立这样的模型(即使是在生成器的帮助下),并尝试创建一个能够抵御这样的事情并在这样的条件下工作的 TS....。

现在来比较历史蜱虫数量和建模蜱虫数量....。

是的,这是历史记录的问题(这正是我们要讨论的)。

我给服务台 #14710 2010.05.18 上午 08:42 写过一封关于引号故障的信。他们花了很长时间才解决,似乎还没有解决。20.05 日,我手动清除了所有报价,下载的都是新的,所以不是这个原因(19 日你们在做实验)。我在 2010.05.20 12:08 左右通过服务台的通信从新下载了所有报价。

这样就不会再有误解了。我再次完全删除了文件夹历史记录,并上传了一个新的。

  1. 的确,当我点击刷新按钮时,历史记录发生了变化。数据匹配了 ticks= 678。
  2. 从数据提供者的角度来看,这很好,他可以像向导一样更改历史记录。
  3. 从交易者的角度来看,这简直就是一场噩梦。排除这种情况。我的终端中就有这些数据,它们参与了计算和指标,用于建立 TS 和做出决策。

我还注意到, ,这种检查毫无用处。

if(old_ask!=last_tick.ask || old_bid!=last_tick.bid)  

1.您不会遇到只改变要价或出价的情况(卖方或买方被解散)。这种情况经常发生。出价不变,只有要价变化,反之亦然。

2.价差等于常数。这也不符合实际情况。

3.如果您希望在研究模型质量方面得到帮助。自己收集勾选数据,最好从 3-4 个来源收集并发布。显示这些刻度线的建模结果,而不是以每 1000 个刻度线价格下跌 30 点的图片形式。而是以一天为例,在一天中会出现不同的情况,包括短时间内的大幅波动。

4.给出偏离真实数据的数字特征, ,至少是两个坐标轴上的均方根。

5.全世界都在这样做,如果其他人使用相同的初始数据得到相同的结果,那么结果是可信的。

6.6. 否则,情况就会如上所述,你的终端有 678 个刻度,而我有 5800 个刻度。如果我们在这里加上收集刻度的所有细微差别,我们将永远找不到真相。

7.为了向某人展示或证明什么而坐上两三天收集刻度线, 对不起,我已经在我的时间里收集了。对我来说,看到虱子是如何产生并形成观点就足够了。

8.遗憾的是,由于选择了将历史记录存储和输入终端的格式,我们的交易员丢失了信息。Renat,无论你如何努力,你都无法建立一个图表,比方说,以 Renko、Kagi 的形式。它将被重新绘制,与真实数据不同。

我对交易者的结论和建议。你可以考虑,也可以不考虑,这取决于你。

  1. 测试模式毫无用处。这是浪费时间,因为无法准确再现条形图内的刻度结构。
  2. 最正确的测试方法可能与 MT4 中的开盘价相同。更确切地说,您需要确保新的条形图已经开始,并采用前一个条形图的价格。同时,在实际交易中,您需要 "偏执地 "检查数据是否存在和同步,如https://www.mql5.com/ru/forum/993,结果可能仍然不一致。
  3. 如果用较小的止损或拖曳值测试系统,即使是开盘价,结果也可能不同,因为低点 高点 的时间可能不匹配。(它们可以重新排列)。
  4. 在 Expert Advisor 实际运行之前,初始化时应检查历史记录的正确性(模拟按刷新按钮)。
MetaTrader не отражает реальности ! как с этим бороться? - MQL4 форум
  • www.mql5.com
MetaTrader не отражает реальности ! как с этим бороться? - MQL4 форум
 
Prival :

我不理解那些不知道自己在说什么就给别人贴标签的人。再次重申,这是第一页的链接。https://www.mql5.com/ru/forum/115584/page11#150512。 仔细看看图片!!你可以看到所有的东西--交易都绘制在图表上。

参数 - 平均交易点数为 650 点,最短交易时间为 1 小时。我是点数达人吗?

您为什么禁止我分析点差?难道我禁止您按照自己的想法来分析输入的信息?您认为按小时烛台分析就能自动消除噪音 - 这是个误解,我建议一个更好的选择 - 按年烛台分析,系统会更好,更强大,甚至没有噪音, 数据提供者也没有问题,每年给交易者 5 位数的OHLC 和 "交易量",然后让他交易。大家都很高兴,交易者有了一个强大的系统,没有噪音,供应商在缩放等方面也没有问题。(科学中有这样一种方法,用极端情况来理解所表达的想法是否是无稽之谈......您可以得出自己的结论)。

................

你为什么反应这么激烈,我有点吃惊?我是在支持你的观点。我不喜欢 "小不点 "这个词--我收回。很抱歉,我给你带来了一场负面情绪的风暴。

我对 "吹笛者 "一词的理解更为宽泛。吹笛者是指对笛子质量敏感的 TS。仅此而已。好像你只读了我帖子的第一行。在我的帖子中,我还提出了一个折中的解决方案。

PS 除了切换到更高的 TF 之外,我还使用了其他噪音过滤方法(我帖子中的粗体字)。我的研究重点是 M1。

 
joo писал(а) :

....

如果您对这些信息有偏见,我深表歉意。 是的,我的反应很激烈,因为我没有进行交易,也没有为我的家庭挣一份面包,而是坐在那里写作。这篇文章是写给那些认为只要分析刻度线就是点数玩家的人的。事实并非如此。我尽可能地证明这一点。

没有定性/非定性勾股的概念。因此,也不存在定性或非定性刻度线的集合体。刻度线是交易终端给我们的现实。它出现在我们面前,启动智能交易系统,然后我们对其进行分析。在座的各位可以说:这个刻度线质量高吗?

有人只分析条形图的收盘 = 一个小时结束时出现的刻度线。这个刻度线与前一秒出现的刻度线在质量上有什么不同?比方说,有人说它更 "蓬松",这是什么意思? 我希望您能明白这种说法的荒谬之处。

试想一下,报价提供商是在 "虱子 "的层面上工作的,是的,他们对 "虱子 "进行过滤,他们有多个供应商,他们在特定的时间向我们提供他们认为必要的、有利可图的报价。但是,他们的工作是在 "点 "上,而不是在 "OHLC"上,而是在 "点 "上。 ,然后折叠成条形图。难道那里的所有交易员都是傻瓜,不知道在刻度线水平上工作是在自杀吗?

如果不是,那他们又是否聪明能干呢? 为什么我们要在医院的平均温度下工作,而不是在蜱虫的温度下工作呢?从蜱虫身上你可以剪下任何你想要的东西,任何类型的图表。分钟数就不行了,因为它是一种有损失的数据压缩形式、 不可逆转的损失

这就好比打包算法,同样是 *.rar 压缩信息,传给另一个人,他解压缩后阅读,比方说这是一本书。 现在我们改变算法,只解压缩句子中的第一个字母(Open)和最后一个字母(Close),好吧,你可以再加两个字母,最厚的(类似于High)和最薄的(类似于Low)。怎么样?谁 谁喜欢读这样的书?这里也一样 ((((