指标: 应用加权相关系数的最近相邻发现, 进行价格预测 - 页 3 1234 新评论 Ryan L Johnson 2026.04.14 01:21 #21 Amos Tsopotsa #:这段代码需要稍加改进,但好吧,你的想法确实有道理 我对代码稍作了改进,具体做法是 在全局范围内为 b 添加一个变量,以及 添加一个 lastPatternStartTime 变量和一个将其与新模式开始时间进行比较的条件,如果两者不一致,则调用 ChartRedraw()。 (从我几个小时的测试中可以看出,当发现新模式时,垂直线会出现混乱)。 附加的文件: nearest_neighbor_-_weighted_corr.mq5 6 kb Ryan L Johnson 2026.04.14 18:25 #22 还有一些小改进: 将 OnInit() 从 void 变为 int,因此现在返回 INIT_SUCCEEDED、 添加了一个终端范围的全局变量(GlobalVariable,GV),用于存储指标的第一个未来价格值(CopyBuffer()在使用 "未来指标缓冲区 值 "的 EA 中不起作用),以及 添加了 OnDeinit(),GV 会自动从终端删除。 这些更改的目的是使指标更适合自动交易。如果您需要更多的未来价格值,只需在代码末尾循环 0 至 48 条并更新 GV 值即可。 附加的文件: nearest_neighbor_-_weighted_corr.mq5 7 kb Stanislav Korotky 2026.04.14 21:11 #23 Ryan L Johnson #: 添加了一个终端范围的全局变量 (GV),用于存储指标的第一个未来价格值(CopyBuffer() 在使用 "未来指标缓冲区 值 "的 EA 中不起作用)、 这些更改的目的是使指标更适合自动交易。如果您需要更多的未来价格值,只需在代码末尾循环第 0 至 48 条,并更新 GV 值即可。 为什么要这样做?您可以从指标缓冲区 访问任何值,甚至是未来值。 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... Ryan L Johnson 2026.04.14 23:16 #24 Stanislav Korotky #: 这是为什么呢?您可以访问指标缓冲区中的 任何值,甚至是未来值。 我可以在指标中做到这一点,但在 EA 中做不到。请问您是否有其他在 EA 中这样做的例子/文章? Ryan L Johnson 2026.04.15 01:22 #25 Ryan L Johnson #:我可以在指标中做到这一点,但在 EA 中 做不到。请问您是否有其他例子/文章可以在 EA 中做到这一点? 请忽略我的帖子 #24。我怀疑我在 EA 中用错了 Copybuffer() 的形式。正确的形式似乎是 "在参数 CopyBuffer ( 第一种形式)中 ,必须给出 等于 (- N)的偏移量..... ." int CopyBuffer(int handle, int buffer, int offset, int count, double &array[]) Ryan L Johnson 2026.04.15 03:06 #26 @Stanislav Korotky,谢谢你指导我查阅文档。第一种形式 "对于复制未来的缓冲区值非常有用--尤其是在自定义图表上。 @Vladimir, 感谢您(尽管姗姗来迟)发布该指标的源代码。我不知道几十年前的这种价格形态在今天还能如此有效。我用它捕捉到了两笔成功的交易。一次是在 1999 年,另一次是在 2005 年。 下面是我现在使用的指标代码(去掉了 GV): 附加的文件: nearest_neighbor_-_weighted_corr.mq5 7 kb Ryan L Johnson 2026.04.27 16:30 #27 可以想象,可能会出现一种新的价格形态,其开始时间与当前形态相同,但结束时间却不同,因此我在附带条件的 ChartRedraw() 函数中添加了形态结束时间。无论是开始时间差还是结束时间差都会调用 ChartRedraw()。 附加的文件: nearest_neighbor_-_weighted_corr.mq5 7 kb Renat Akhtyamov 2026.04.27 17:19 #28 可以对该指标进行测试 需要在指标上添加两条垂直线--计算开始线和计算结束线 然后您就可以立即看到红线的位置以及图表是如何形成的,即预测是否可行? Ryan L Johnson 2026.04.27 20:20 #29 Renat Akhtyamov 垂直线--计算开始和计算结束 然后您就可以立即看到红线的位置以及图表是如何形成的,即预测是否可行? 这就是蓝线的作用,它将历史形态的开盘价作为叠加。 Ryan L Johnson 2026.04.28 01:20 #30 这里有一个 "愚蠢而简单 "的柱形开盘价 指标,可以与历史蓝线进行对比。 附加的文件: Bar_Open_Prices_Line_Study.mq5 3 kb 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这段代码需要稍加改进,但好吧,你的想法确实有道理
我对代码稍作了改进,具体做法是
- 在全局范围内为 b 添加一个变量,以及
- 添加一个 lastPatternStartTime 变量和一个将其与新模式开始时间进行比较的条件,如果两者不一致,则调用 ChartRedraw()。
(从我几个小时的测试中可以看出,当发现新模式时,垂直线会出现混乱)。还有一些小改进:
这些更改的目的是使指标更适合自动交易。如果您需要更多的未来价格值,只需在代码末尾循环 0 至 48 条并更新 GV 值即可。
这些更改的目的是使指标更适合自动交易。如果您需要更多的未来价格值,只需在代码末尾循环第 0 至 48 条,并更新 GV 值即可。
这是为什么呢?您可以访问指标缓冲区中的 任何值,甚至是未来值。
我可以在指标中做到这一点,但在 EA 中做不到。请问您是否有其他在 EA 中这样做的例子/文章?
我可以在指标中做到这一点,但在 EA 中 做不到。请问您是否有其他例子/文章可以在 EA 中做到这一点?
请忽略我的帖子 #24。我怀疑我在 EA 中用错了 Copybuffer() 的形式。正确的形式似乎是
"在参数 CopyBuffer ( 第一种形式)中 ,必须给出 等于 (- N)的偏移量..... ."
@Stanislav Korotky,谢谢你指导我查阅文档。第一种形式 "对于复制未来的缓冲区值非常有用--尤其是在自定义图表上。
@Vladimir, 感谢您(尽管姗姗来迟)发布该指标的源代码。我不知道几十年前的这种价格形态在今天还能如此有效。我用它捕捉到了两笔成功的交易。一次是在 1999 年,另一次是在 2005 年。
下面是我现在使用的指标代码(去掉了 GV):
可以想象,可能会出现一种新的价格形态,其开始时间与当前形态相同,但结束时间却不同,因此我在附带条件的 ChartRedraw() 函数中添加了形态结束时间。无论是开始时间差还是结束时间差都会调用 ChartRedraw()。
可以对该指标进行测试
需要在指标上添加两条垂直线--计算开始线和计算结束线
然后您就可以立即看到红线的位置以及图表是如何形成的,即预测是否可行?
然后您就可以立即看到红线的位置以及图表是如何形成的,即预测是否可行?