MQL5的股权振荡器意味着 - 页 3

 

DV2010:

...雷纳特,按照我的理解,测试完成后 指标在图表上显示是基于测试期间的计算和指标阵列的填充但是,结果没有从测试器转移到自定义指标图上,这是什么意思?

当然,测试仪-代理的指标计算数据不会转移到终端图表。我们不会把几百兆的计算数据传给终端,它们会立即(在下一个tick)被指标重新计算(对OnCalculate函数的调用没有被取消)。

该指标应自行计算。

 

sergey1294:
Отвечу вам одно, пока не появиться режим визуализации решить вашу задачу не так просто. Есть одно решение, это записывать данные эквити в файл при тесте. потом данные из этого файла записать в буфер индикатора тем самым построить график эквити.

但我究竟在哪里把数据写入缓冲区?

我以为它只能写入OnCalculated,并试图这样实现它。

 
DV2010:

Rosh,在线的变体已经发布了,但作为一个主要从事历史工作的人,我需要一个能在历史数据上发挥作用的变体。而且我仍然觉得很难理解这里的主要困难是什么。


将股权值写进文件。然后按这些值绘制指标。然而,数据文件将不得不手动移动,因为在测试期间,文件被写入agent_name/MQL5/Files 文件夹中。
 
DV2010:

但我究竟在哪里把数据写入缓冲区?

我以为它只能写入OnCalculated,并试图这样实现它。

我们使用expert将数值写入文件,然后在指标中写下从文件中读取和向缓冲区中写入数据的代码。我还不能给你看代码,我需要一些时间来写。

 
Renat:

当然,计算出的指标值不能从测试器-代理处转移到终端图表上。我们不会把几百兆的计算数据传给终端,它们会立即(在下一个tick)被指标重新计算(对OnCalculate函数的 调用没有被取消)。

雷纳特,该指标应读作自己

这就是为什么 OnCalculated方法中 用一些值来初始化指标数组值 。但是,为什么能以这种方式初始化(建立)指标线,而 股票价值 ,却不能?

 
DV2010:

雷纳特,指标应改为自己

这就是为什么 OnCalculated方法中 用一些值来初始化指标数组的值 。但是,为什么 能够以这种方式初始化(建立)指标线 ,而股票价值 却不能?

因为价格有历史,但股权没有。因此,你需要为Equity建立自己的历史,把它写进文件。
 
Rosh: 将股权值写进文件。然后根据这些值来构建指标。然而,数据文件必须手动传输,在测试时,文件被写入Agent_name/MQL5/Files 文件夹中。

按照我的理解,它应该在专家顾问的OnInit中根据定义通过 AccountInfoDouble(ACCOUNT_EQUITY) 写入文件,并从文件中读取 - 在 OnCalculated 指标

但是为什么 通过 AccountInfoDouble(ACCOUNT_EQUITY)的变量Equty的数据 可以 直接在 OnCalculated 使用

这样一来,代码就会变得过于繁琐,.....。

不明白 ......Print AccountInfoDouble(ACCOUNT_EQUITY) OnCalculated 输出一些值

究竟是什么阻止了它立即被分配到指标值的数组中?

我一直认为,在测试器中对历史值的显示与对当前值的显示不同,只是因为历史已经被记录下来,而当前的数据才刚刚到达。

 

sergey1294:
потому что цены имеют историю а эквити нет. По этому для эквити вам нужно строить собственную историю записав ее в файл.

但是,在OnCalculated指标中, Equty动态是如何通过AccountInfoDouble(ACCOUNT_EQUITY) 显示的(不仅仅是在OnTick Expert Advisor)?

还是OnCalculated Indicator在测试模式 和显示模式下的工作方式不同?

 

在EA的全局层面上声明两个数组 Equity[]和Time[]

在测试EA时,将股权和时间的值写入相应的数组中。

使用一个脚本在测试结束 时读取文件,并在所需的图表上绘制股权。

这是对你的目的最好的方法,我不明白你为什么需要一个指标。

 
DV2010:

据我所知,它应该在专家顾问的OnInit中根据定义通过 AccountInfoDouble(ACCOUNT_EQUITY) 写入文件,并从文件中读取 - 在 OnCalculated 指标

但是为什么 通过 AccountInfoDouble(ACCOUNT_EQUITY)的变量Equty的数据 可以 直接在 OnCalculated 使用

这样一来,代码就会变得过于繁琐,.....。

不明白 ......Print AccountInfoDouble(ACCOUNT_EQUITY) OnCalculated 输出一些值

究竟是什么阻止了它立即被分配到指标值的数组中?

我一直认为,在测试器中显示历史上的数值与显示当前的数值不同,只是因为历史已经被记录下来,而当前的数据才刚刚到达。

我甚至不知道该如何向你解释。AccountInfoDouble(ACCOUNT_EQUITY) 存储最后的权益值 在测试之后,正如Renat所说,指标被重新初始化并重新计算。因此,在测试过程中积累在指示器缓冲器中的权益数据被擦除。