指标: 应用加权相关系数的最近相邻发现, 进行价格预测 - 页 3

 
Amos Tsopotsa #:

这段代码需要稍加改进,但好吧,你的想法确实有道理

我对代码稍作了改进,具体做法是

  • 在全局范围内为 b 添加一个变量,以及
  • 添加一个 lastPatternStartTime 变量和一个将其与新模式开始时间进行比较的条件,如果两者不一致,则调用 ChartRedraw()。
(从我几个小时的测试中可以看出,当发现新模式时,垂直线会出现混乱)。
附加的文件:
 

还有一些小改进:

  • 将 OnInit() 从 void 变为 int,因此现在返回 INIT_SUCCEEDED、
  • 添加了一个终端范围的全局变量(GlobalVariable,GV),用于存储指标的第一个未来价格值(CopyBuffer()在使用 "未来指标缓冲区 值 "的 EA 中不起作用),以及
  • 添加了 OnDeinit(),GV 会自动从终端删除。

这些更改的目的是使指标更适合自动交易。如果您需要更多的未来价格值,只需在代码末尾循环 0 至 48 条并更新 GV 值即可。

附加的文件:
 
Ryan L Johnson #:


  • 添加了一个终端范围的全局变量 (GV),用于存储指标的第一个未来价格值(CopyBuffer() 在使用 "未来指标缓冲区 值 "的 EA 中不起作用)、

这些更改的目的是使指标更适合自动交易。如果您需要更多的未来价格值,只需在代码末尾循环第 0 至 48 条,并更新 GV 值即可。

为什么要这样做?您可以从指标缓冲区 访问任何值,甚至是未来值
MQL5 Book: Getting timeseries data from an indicator: CopyBuffer / Creating application programs
MQL5 Book: Getting timeseries data from an indicator: CopyBuffer / Creating application programs
  • www.mql5.com
An MQL program can read data from the indicator's public buffers by its handle. Recall that in custom indicators, such buffers are arrays specified...
 
Stanislav Korotky #:
这是为什么呢?您可以访问指标缓冲区中的 任何值,甚至是未来值

我可以在指标中做到这一点,但在 EA 中做不到。请问您是否有其他在 EA 中这样做的例子/文章?

 
Ryan L Johnson #:

我可以在指标中做到这一点,但在 EA 中 做不到。请问您是否有其他例子/文章可以在 EA 中做到这一点?

请忽略我的帖子 #24。我怀疑我在 EA 中用错了 Copybuffer() 的形式。正确的形式似乎是

"在参数 CopyBuffer 第一种形式),必须给出 等于 (- N)偏移量..... ."

int CopyBuffer(int handle, int buffer, int offset, int count, double &array[])
 

@Stanislav Korotky,谢谢你指导我查阅文档。第一种形式 "对于复制未来的缓冲区值非常有用--尤其是在自定义图表上。

@Vladimir, 感谢您(尽管姗姗来迟)发布该指标的源代码。我不知道几十年前的这种价格形态在今天还能如此有效。我用它捕捉到了两笔成功的交易。一次是在 1999 年,另一次是在 2005 年。

下面是我现在使用的指标代码(去掉了 GV):

附加的文件:
 

可以想象,可能会出现一种新的价格形态,其开始时间与当前形态相同,但结束时间却不同,因此我在附带条件的 ChartRedraw() 函数中添加了形态结束时间。无论是开始时间差还是结束时间差都会调用 ChartRedraw()。

附加的文件:
 

可以对该指标进行测试

需要在指标上添加两条垂直线--计算开始线和计算结束线

然后您就可以立即看到红线的位置以及图表是如何形成的,即预测是否可行?

 
Renat Akhtyamov 垂直线--计算开始和计算结束

然后您就可以立即看到红线的位置以及图表是如何形成的,即预测是否可行?

这就是蓝线的作用,它将历史形态的开盘价作为叠加。
 
这里有一个 "愚蠢而简单 "的柱形开盘价 指标,可以与历史蓝线进行对比。
附加的文件: