文章 "多交易品种多周期指标中的颜色缓冲区"

 

新文章 多交易品种多周期指标中的颜色缓冲区已发布:

在本文中,我们将回顾多交易品种、多周期指标中指标缓冲区的结构,并在图表上组织这些指标的彩色缓冲区的显示。

单色指标缓冲区是常规的双精度型数组,在计算指标时填充数据。我们可以使用 CopyBuffer() 函数从该数组中获取数据,并将其显示在图表上,前提是接收数组将是一个设置为指标绘制缓冲区的双精度型数组 (SetIndexBuffer())。当将数据从指标计算部分的缓冲区复制到其绘制部分的缓冲区时,数据会以一种颜色显示在图表上,该颜色是由为绘制部分准备的缓冲区数组设置的。对于多色缓冲区,情况略有不同。除了数据数组之外,颜色缓冲区还有一个颜色索引数组。

基于上述情况,我们了解到: 

  1. 指标绘图缓冲区可以使用一个或多个数组进行绘图,具体取决于绘图样式。
  2. 对于任何颜色数组,都会使用一个附加数组,它是绘图缓冲区的颜色索引数组,其索引比分配给绘图缓冲区的最后一个数组的索引大 1。

为了更好地理解,让我们创建一个新指标,其中我们将使用多个数组进行构造,指示几个绘图缓冲区,包括简单的和彩色的:


作者:Artyom Trishkin

 

Artem 你好!如何添加自己的指标?我做不到!我一定是做错了什么!如果有一个例子...一步一步通过代码就会很清楚了!但他马上就!...指标创建 错误...OnInit 返回代码为-1...请提供一般性帮助!

  MqlParam mql_params[];
   ArrayResize(mql_params, 2);

   mql_params[0].type          = TYPE_STRING;
   mql_params[0].string_value  = "My_Indicators\\INDI_MSMT\\Test";
//---
   mql_params[1].type          = TYPE_INT;
   mql_params[1].integer_value = 10;

   handle_ind2 = indicators.AddNewCustom(NULL, PERIOD_CURRENT, "My_Indicators\\INDI_MSMT\\Test.ex5", "DON_MFI_SIS", 1, mql_params);

//handle_ind1 = IndicatorCreate(NULL, PERIOD_CURRENT, IND_CUSTOM, 1, mql_params);

 
Igor Bakhrushen 指标创建 错误...OnInit 返回代码为-1...请提供一般性帮助!


从图片上很难看出您做错了什么。请将无法运行的代码与您使用的自定义指标一并附上。
 
Artyom Trishkin #:
从图片上很难看出您做错了什么。请附上无法与您使用的自定义指标一起工作的代码。

您的程序库没有任何改动,我只是复制了它......测试只是在一个缓冲器上进行的,我不太明白当你有 20 个缓冲器时这一切是如何工作的!总之,一步一步来!....谢谢!

附加的文件:
INDI_MSMT_1.mqh  638 kb
Test.mq5  8 kb
DON_MFI_SIS.mq5  10 kb
 
Igor Bakhrushen #:

你的程序库没有任何改动,我只是复制了它...测试只是在一个缓冲区上进行的,我不太明白当你有 20 个缓冲区时这一切是如何工作的!总之,一步一步来!....谢谢!

看了您的代码。正在运行的自定义指标在哪里?只有一个带非彩色缓冲区的虚拟指标。您很可能需要这篇文章:https://www.mql5.com/zh/articles/13578。 它包含了使用单色自定义指标的所有信息。

Готовим мультисимвольные мультипериодные индикаторы
Готовим мультисимвольные мультипериодные индикаторы
  • www.mql5.com
В статье рассмотрим принципы создания мультисимвольных мультипериодных индикаторов и получение от них данных в советниках и индикаторах. Рассмотрим основные нюансы использования мульти-индикаторов в советниках и индикаторах, и их отрисовку через буферы пользовательского индикатора.
 
Artyom Trishkin #:

我看了你的代码。正在运行的自定义指标在哪里?只有一个非彩色缓冲区的假指标。您很可能需要这篇文章:https://www.mql5.com/zh/articles/13578。 它包含了使用单色自定义指标的所有信息。

Artem 你好,谢谢你看了这篇文章!我已经可以使用非彩色缓冲区了,但还有些不成熟...由于某些原因,加载需要很长时间...也许星期天吧?你需要历史记录吗?重启终端后,是否会立即绘制?在相框中的照片上,三个缓冲区的值是一样的,不应该是这样的。偏移一格,也在相框中。有颜色的照片就有问题......根本加载不了!能帮我看看吗?谢谢!


附加的文件:
 
对不起,我弄错了缓冲区!我不小心改变了类型......然后没有把它调到正确的类型!因此,我们添加了 0!CIndMSTF::Calculate::Test_Indi_MSMT:CopyBuffer(0) failed.错误 4806:找不到数据!不同的缓冲区都会出现这种情况!

 
Igor Bakhrushen CopyBuffer(0) failed.错误 4806:找不到数据!不同的缓冲区都会出现这种情况!

如果没有收到数据,指标会以返回零值的方式退出 OnCalculate(),表示尚未计算。在这种情况下,第一次访问所需但未收到的数据时,就会启动数据分页过程。

 
Artyom Trishkin #:

如果没有收到数据,指标会以返回零值的方式退出 OnCalculate(),这相当于表明指标尚未计算,而在下一个刻度,指标会再次尝试接收数据。在这种情况下,第一次访问所需但未收到的数据时,就会启动数据分页过程。

为什么重启终端时不会出现这个问题?一切都是一次性绘制的!切换到另一个 TF 时会出现这种情况...有时这个"'INDI_MSMT_!!.mqh' (680,51)中的数组超出范围 "总是有足够的大小,有时却没有....。这对我来说是个谜!


 
Igor Bakhrushen #:
INDI_MSMT_。

我没有这个文件。我不知道该怎么帮你...

 
Artyom Trishkin #:

我没有那个文件。我不知道该怎么帮忙...

文件

昨天我附加了"INDI_MSMT_!.mqh",这是第一个...