CL 022:29:43.402 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::AddNewMA: MA(10) indicator (handle 10) added to the collection
OS 022:29:43.402 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::AddNewMA: MA(EURUSD,H1:10) indicator (handle 11) added to the collection
DQ 022:29:43.439 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(10): Waiting for data to sync...
QL 022:29:43.439 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(10): Error in indicator calculation: Data is not synchronized
IO 022:29:43.439 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(EURUSD,H1:10): Waiting for data to sync...
PQ 022:29:43.439 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(EURUSD,H1:10): Error in indicator calculation: Data is not synchronized
LN 022:29:43.439 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate: Not all indicators have been calculated successfully. It is necessary to recalculate the buffers of all indicators
KE 022:29:43.443 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(10): Waiting for data to sync...
JH 022:29:43.443 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(10): Error in indicator calculation: Data is not synchronized
RK 022:29:43.443 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(EURUSD,H1:10): Waiting for data to sync...
OD 022:29:43.443 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(EURUSD,H1:10): Error in indicator calculation: Data is not synchronized
CR 022:29:43.443 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate: Not all indicators have been calculated successfully. It is necessary to recalculate the buffers of all indicators
GE 022:30:04.495 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::OnTimer::MA(EURUSD,H1:10): Tick emulation. Attempt 1 of 3 ...
II 022:30:34.092 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(10): Waiting for data to sync...
LD 022:30:34.092 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(10): Error in indicator calculation: Data is not synchronized
DH 022:30:34.092 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(EURUSD,H1:10): Waiting for data to sync...
NH 022:30:34.093 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(EURUSD,H1:10): Error in indicator calculation: Data is not synchronized
RG 022:30:34.093 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate: Not all indicators have been calculated successfully. It is necessary to recalculate the buffers of all indicators
JM 022:30:35.539 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(10): Waiting for data to sync...
KP 022:30:35.539 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(10): Error in indicator calculation: Data is not synchronized
CD 022:30:35.539 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(EURUSD,H1:10): Waiting for data to sync...
FL 022:30:35.539 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(EURUSD,H1:10): Error in indicator calculation: Data is not synchronized
RK 022:30:35.539 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate: Not all indicators have been calculated successfully. It is necessary to recalculate the buffers of all indicators
OM 022:30:37.935 TestMSTFMovingAverages (EURUSD,M15) CIndMSTF::Calculate::MA(EURUSD,H1:10): Waiting for a new tick and when the indicator will be calculated...
PI 022:30:37.935 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate::MA(EURUSD,H1:10): Error in indicator calculation: Calculation not completed
ND 022:30:37.935 TestMSTFMovingAverages (EURUSD,M15) CMSTFIndicators::Calculate: Not all indicators have been calculated successfully. It is necessary to recalculate the buffers of all indicators
PN 222:30:39.604 TestMSTFMovingAverages (EURUSD,M15) array out of range in'TestMSTFMovingAverages.mq5' (211,34)
...При работе с данными не текущего графика для исключения "освобождения" таймсерии, необходимо не реже. чем раз в две минуты обращаться к этой таймсерии. В этом случае будет происходить "удержание" таймсерии, что ускорит к ней обращение (не нужно будет каждый раз дожидаться синхронизации данных)...
进行了一次小型压力测试。我关闭了互联网,通过图表上的面板启动了指标。我已经在上面提供了参数。然后我打开互联网,结果如下:
指标崩溃。
我还注意到一些奇怪的事情。美元兑瑞郎的 M15 图表。
如果我们看一下美元兑瑞郎的图表,或者更确切地说,看一下 MA(USDCHF,H1)指标的红色曲线,那么在过去的 7 个小时里,向下一个值的过渡发生在 00 分钟 5 次。我用红色竖线突出显示了这一点。只有最后 2 小时一切正常。蓝色竖线。我认为,这是缓冲区填充的明显错误....。
进行了一次小型压力测试。我关闭了互联网,通过图表上的面板启动了指标。我已经在上面提供了参数。然后我打开互联网,结果如下:
指标崩溃。
我还注意到一些奇怪的事情。美元兑瑞郎的 M15 图表。
如果我们看一下美元兑瑞郎的图表,或者更确切地说,看一下 MA(USDCHF,H1)指标的红色曲线,那么在过去的 7 个小时里,有 5 次在 00 分钟过渡到下一个值。我用红色竖线突出显示了这一点。只有最后 2 小时一切正常。蓝色竖线。我认为,这是缓冲区填充的明显错误....。
进行了一次小型压力测试。我关闭了互联网,通过图表上的面板启动了指标。我已经在上面提供了参数。然后我打开互联网,结果如下:
指标崩溃。
在第 211 行光标位置 34 处,访问了预定义数组 time[]:
DrawData(mouse_bar_index,time[mouse_bar_index]);结果发现传递给数组的索引不正确。
它不可能大于 rates_total-1,很可能等于-1,因为它在 OnChartEvent 处理程序中通过 iBarShift() 函数接收其值,而iBarShift() 函数 可以返回-1:
在 DrawData() 中,无效的索引值将通过调用 CopyRates() 来处理,如果索引值为负,CopyRates() 将不会获取任何数据,然后退出 DrawData():
因此,在访问 time[] 数组之前,需要检查传递给数组的条形图索引(在第 211 行):
一般来说--理论上是这样。我还没有测试过,因为我正忙于开发主题的延续(多指标彩色缓冲区等)。在下一篇关于这个主题的文章发表后,我会进行检查和测试(如果你没有在我之前测试第 211 页的改动)。
第 211 行,在光标位置 34访问预定义数组 time[]:
看来数组的索引传递错误。
它不可能大于 rates_total-1,很可能等于-1,因为它在 OnChartEvent 处理程序中通过 iBarShift() 函数接收其值,而iBarShift() 函数 可以返回-1:
在 DrawData() 中,无效的指数值将通过调用 CopyRates() 来处理,如果指数为负值,将无法获得任何数据,然后退出 DrawData():
因此,在访问 time[] 数组之前,需要检查传递给数组的条形图索引(第 211 行):
一般来说--理论上是这样。我还没有测试过,因为我正忙于继续开发这个主题(多指标彩色缓冲区等)。在有关此主题的下一篇文章发表后,我将对其进行检查和测试(如果你没有在我之前对第 211 页的改动进行测试的话)。
Artem,条形图指数可以是当前的,iBarShift() 返回 0。这就是为什么我们在任何变量中都 应该写iBarShift()+1,因为条数和条数不相等。
Artem,条形图指数可以是当前的,iBarShift() 返回 0。 但CopyRates() 中的 条形图指数 不能小于 1。因此,我们可能应该在任何变量中 写入iBarShift()+1,因为条数和条数不相等。
在这种情况下:指数就是条数
在这种情况下:索引就是条形码
Artem,索引 - 是的,可以是零。但复制元素的数量
不能等于零。
就像项目列表中的项目数和索引一样...
Artem,索引--是的,可以是零。但复制元素的数量
不能等于零。
就像项目列表中的项目数和索引一样...
就在这里
索引指向哪里?
就在这里
索引指向何处?
够了,我不说了。我没有看 DrawData(mouse_bar_index,time)函数的代码,所以才弄错了...
关于交易、自动交易系统和交易策略测试的论坛
讨论文章 "编制多符号多周期指标"
Artyom Trishkin, 2023.11.01 04:46 AM
......在发表关于这个主题的下一篇文章后,我将进行检查和测试(如果您没有在 第 211 页的改动中对我 进行测试的话)。
要测试 某些东西,您必须了解正在发生的事情 ))
我意识到,我更容易勾勒出自己的版本,因为我并不接近当前的方法。特别是,在我看来,CIndMSTF 类是某种超类。然后在它的基础上创建一系列指标类。令人毛骨悚然的是,IndMSTF.mqh 文件有 4000 行代码))我采用的方法是使用CIndicators 类的实例作为指标集合。这非常方便。你不需要发明一辆自行车。
那为什么 CIndMSTF 类要在缓冲区(SBuffer m_buffers[])中存储数据呢?我们在 OnCalculate() 中计算一次就够了。也就是说,通过引用接受参数,计算并给出....。
一旦我完成了我的版本....,我稍后会写更多我不同意的地方。
是的,我喜欢这种机制:
...При работе с данными не текущего графика для исключения "освобождения" таймсерии, необходимо не реже. чем раз в две минуты обращаться к этой таймсерии. В этом случае будет происходить "удержание" таймсерии, что ускорит к ней обращение (не нужно будет каждый раз дожидаться синхронизации данных)...
Artem,还有一件事。如果文章是作为手册来写的,而人们又有学习的欲望,那么,在我看来,就没有足够的关于这些类的关系的方案,而开发者创造了....。
那么,为什么要把所有指标的代码都放在文章材料中呢?我指的是这一部分--"多符号多周期指标基类的所有继承类的完整列表"。 我看了一下有多少行代码。
这是开头:
这里是结尾:
将近两千行!