文章 "多交易品种多周期指标中的 DRAW_ARROW 绘图类型"

 

新文章 多交易品种多周期指标中的 DRAW_ARROW 绘图类型已发布:

本文将介绍如何绘制多交易品种多周期的箭头指标。我们还将改进类方法,以便正确显示箭头指标的数据,这些数据是根据与当前图表交易品种/周期不一致的交易品种/周期计算的。

我们继续讨论多交易品种多周期指标。本系列的上一篇文章介绍了多交易品种多周期指标。在本文中,我们将修改多指标类,使其可以与箭头指标一起使用。

箭头指标意味着其绘图缓冲区中的数据并非始终可用。该值存在于显示箭头的缓冲区中,而在其他时候,缓冲区中包含的是为其设置的空值。通常是 EMPTY_VALUE,但也可以将缓冲区设置为"空"且不会显示在图表上的任何值。可以使用这个函数

PlotIndexSetDouble(buffer_index,PLOT_EMPTY_VALUE,empty_value);

其中,buffer_index 是要设置为空的缓冲区索引,而 empty_value 则是将为该缓冲区设置的 "空值"。

在多周期指标中,缓冲区充满了有间隙的数据,因此需要考虑到没有箭头的空值的存在,不要将这些空值输入到已经输入了非空值的图表柱中。否则,先前放置的箭头将被一个新的空值擦除。如果将在较低时间框架内计算的指标数据复制到较高时间框架内,就会出现这种情况。

让我举一个例子。М15柱形叠加在M5图表上:

这里我们看到的是 M5 图表的分形,需要将其安装到 M15 图表的柱形图上。

作者:Artyom Trishkin

 

一位交易者曾写信给我,说他正在开发一种 "快速分形",几乎就像一个圣杯

我给他写道:"为什么不使用从 M5 到 M15 的分形呢?故事就是这样。

 
Vitaliy Kuznetsov 圣杯 一样。

我给他写道:"为什么不使用从 M5 到 M15 的分形呢?故事就是这样。

分形原则上没有快慢之分:)

在从头开始的两个小节形成之前,分形是不存在的,或者说是存在的,但它不是分形。


 
Vitaly Muzichenko #:

分形原则上没有快慢之分 :)

在从上往下的两个条形形成之前--没有分形,或者说有一些东西,但不是分形


Artem,我已经将您的面板插入了智能交易系统,我应该怎么做才能让它在测试器中进行可视化测试?

 
Konstantin Seredkin #:

Artem,我在智能交易系统中插入了您的面板,我应该怎么做才能让它在可视化测试的测试器中工作?

答案取决于您在视觉测试时需要在面板上看到什么。

 
Artyom Trishkin #:

答案取决于目测时需要在面板上看到什么。

例如,您在前几篇文章 TestTrendADX 中使用的智能交易系统,如果在可视化状态下运行,只有在初始化后才会显示数据,然后就什么都不显示了。



如果这样做,就会开始显示当前条形图的数据和指标数据。

//+------------------------------------------------------------------+
//| 专家勾选功能|
//+------------------------------------------------------------------+
void OnTick()
  {
//---
//--- 在面板上显示当前条形图数据
   DrawData(0,TimeCurrent());
  }



但我不知道这样做是否正确。

 
Konstantin Seredkin #:

例如,您在前几篇文章 TestTrendADX 中使用的智能交易系统,如果在可视化模式下运行,只有在初始化后才会显示数据,然后就什么都不显示了。



如果这样做,就会显示当前条形图的数据和指标数据6



我不知道我这样做对不对。

问题在于,OnChartEvent() 在 Expert Advisors 测试仪的可视化模式下不起作用,在指标中只有鼠标点击图表的事件才起作用。在您提到的测试指标中,面板会显示鼠标光标下的数据。也就是说,程序会跟踪光标位置,并从光标下的条形图向面板发送数据。在测试仪的可视模式下,您需要点击要在面板上获取数据的条形图。或者在 OnTick() 中获取数据,但只能从当前条形图中获取。

 
Artyom Trishkin #:

问题在于,OnChartEvent() 在 Expert Advisors 测试仪的可视化模式下不起作用,只有在指标中点击图表上的鼠标事件才起作用。在您提到的测试指标中,面板会显示鼠标光标下的数据。也就是说,程序会跟踪光标位置,并从光标下的条形图向面板发送数据。在测试仪的可视模式下,您需要点击要在面板上获取数据的条形图。或者在 OnTick() 中获取数据,但只能从当前条形图中获取。

所有问题都解决了,请重新阅读第一个主题。

事实上,要将信息输出到面板上,我只需要一个事件处理程序并在 OnTick() 中调用 DrawData() 就可以了。

谢谢,我一直在寻找最简单的面板来输出调试信息,因为通过 Comment() 进行可视化测试的速度会下降很多倍,而通过面板进行测试的速度就像没有它一样。

 
Konstantin Seredkin #:

所有问题都解决了,请重新阅读第一条主题。

事实上,要在面板中显示我的信息,我只需要一个事件处理程序,在 OnTick() 中调用 DrawData() 就可以了。

谢谢,我一直在寻找一个最简单的面板来输出调试信息,因为不知道为什么,通过 Comment() 进行可视化测试的速度会下降很多倍,而通过面板进行测试的速度就好像没有它一样。

很好。我很高兴你能自己解决这个问题

 
Artyom Trishkin #:

很好很高兴你自己想通了

很抱歉,我可能跑题了,我一直在关注您的话题,您写道,当时机成熟时,您将在库中创建一个机器人示例,在此基础上,您就可以清楚地知道在什么地方插入什么内容,以便充分利用和收集算法。

时间还没到吗? 我只看到关于库的话题已经结束了。

 
Konstantin Seredkin #:

我很抱歉,可能跑题了,我关注您的主题很久了,您写道,时机成熟时,您将在您的库中创建一个机器人示例,在此基础上,您就可以清楚地知道在什么地方插入什么内容,以充分利用和收集算法。

时间还没到吗? 我只看到关于库的话题已经结束了。

关于库--关于图形的继续,而暂停开发是因为一个令人不快的错误,它表现为物体隐藏部分的周期性闪烁。在找到原因之前,我不应该制作图形,以免积累错误。但库的其他功能很快就会继续开发。然后我们将开始举例说明。