ZigZag指标的问题 - 页 4 1234 新评论 Fernando Carreiro 2014.02.23 22:02 #31 aed71: 好的,谢谢FMIC。 事实上,我的问题是关于我在论坛上分享的专家。你的脚本工作得很好,非常感谢,但基本上我需要的是能在近乎实时模式下工作的专家形式。 你在这个主题上的原始询问是。 如何通过使用 "iCustom "函数正确访问ZigZag指标的数据? 如何收集和处理ZigZag的高点和低点进行统计分析? 我的脚本为你提供了回答这两个问题的示例代码和知识,因此,你现在可以将这些知识应用于其他用途,如你想开发的EA。你所要做的就是使用我的iCustom()用法和测试ZigZag高低点的代码,并将其应用于你的EA代码。 然而,你后来提到的另一个问题,即如何在EA中使用ZigZag数据,以满足优化你已经在另一个EA中运行的策略的需要,在这个主题中还没有被提出或描述得足够详细。因此,从本质上讲,我无法提供建议或帮助你,因为我不知道你需要什么。 如果你阅读了代码库中伴随我的ZigZagZug 指标的文章,你会发现在策略和EA中使用ZigZag并不容易,因为要不断重绘,需要仔细了解它的工作原理以及如何可能在不同的策略和EA中使用它。 换句话说,ZigZag数据和EA策略之间的结合是复杂的,需要很好的定义。因此,在不了解你目前的策略或如何优化它的情况下,我无法为你提供更多的帮助或建议。 由于可以理解,你可能不愿意在公开场合说得更多,我甚至为你提供了私下里说的机会,而且不收取任何费用。我是一名软件开发人员,我通常对这些服务收费。 除了我已经提供给你的,在不了解你想解决的问题的性质的情况下,我不能做更多的事情,也不能给你更多的建议。 AED71 2014.02.24 13:11 #32 你好。 我设法修正了我的代码。在循环的逻辑上有一个错误,现在就我的测试而言,它运行良好。 有兴趣的人可以使用它。它被设计为作为专家使用,它使用了metaquotes的标准ZigZag指标。 它所做的基本上是在Zigzag指标中找到真正的高点和低点。它可以用来寻找历史数据中的低点和高点,也可用于周期和振幅分析。 它不是实时的!它回溯到最后的高点和低点数值,所以根据最后的趋势长度,它可以回溯并修正数值。在策略测试器中 进行快速测试之前,请不要使用它。 FMIC,感谢您的努力和帮助。 附加的文件: ab_zigzagdigger_10.mq4 5 kb Fernando Carreiro 2014.02.25 00:29 #33 你好,aed71。 你的代码中仍然有一些逻辑错误。 你所谓的 "tick loop",实际上是一个 "New Bar Condition",因为你正在测试 "Time[0]"的时间变化,以检测一个新条形。我建议修改注释,以避免误导代码。 你是在测试条件之前给数组赋值,然后你在不需要的情况下多次测试某些变量,以便再次擦除它。这只会使你的代码变慢,同时也使你很难遵循逻辑。 你寻找重绘点的方法是不正确的,而且一点也不健全。你真的应该研究一下ZigZag是如何工作的,以便正确找到重绘点。阅读它的代码,或者ZigZagZug的代码(哪一个对你来说更容易理解),以了解它的逻辑。 你在数组中存储空值 是没有必要的。为什么在没有ZigZag点的情况下也要不断地增加计数器和添加到数组中。你只是在浪费宝贵的资源(RAM和CPU周期)而没有必要。它会减慢你的代码执行速度。宁可使用动态增长的数组而不是静态的,因为你不能事先保证一定的大小要求。 为了事后分析数据,如波段或频率,你还需要跟踪时间指数和/或条形移动指数。 最好的问候, FMIC AED71 2014.02.25 19:19 #34 FMIC:你好,aed71。你的代码中仍然有一些逻辑错误。 你所谓的 "tick loop",实际上是一个 "New Bar Condition",因为你正在测试 "Time[0]"的时间变化,以检测一个新条形。我建议修改注释,以避免误导代码。 你是在测试条件之前给数组赋值,然后你在不需要的情况下多次测试某些变量,以便再次擦除它。这只会使你的代码变慢,同时也使你很难遵循逻辑。 你寻找重绘点的方法是不正确的,而且一点也不健全。你真的应该研究一下ZigZag是如何工作的,以便正确找到重绘点。阅读它的代码,或者ZigZagZug的代码(哪一个对你来说更容易理解),以了解它的逻辑。 你在数组中存储空值是没有必要的。为什么在没有ZigZag点的情况下也要不断地增加计数器和添加到数组中。你只是在浪费宝贵的资源(RAM和CPU周期)而没有必要。它会减慢你的代码执行速度。宁可使用动态增长的数组而不是静态的,因为你不能事先保证一定的大小要求。 为了事后分析数据,如波段或频率,你还需要跟踪时间索引和/或条形移动索引。 最好的问候, FMIC 再次感谢您的意见。 我不是一个好的程序员,所以代码本身可能并不完美:-)然而,让我试着解释一下我的逻辑。 1-) 评论部分可以改成 "每一个新条"。 2-) 4-) 5-)使用大数组的逻辑是,之后在一个新的过程中,我将计算高点之间或高点和低点之间的零值条,以便找到周期、振幅等。所以我需要在使用数组之前对其进行初始化,而且我不需要处理时间索引等问题。只有更多的缓冲区,这对我的项目 来说目前不是一个大问题。 在 "之 "字形中,尽管你在最后有真正的高点和低点,但如果你把这些值放到一个数组中,你会发现在低点和高点之间有一些间隔。你无法避免它们,也无法避免你使用模式0和模式1/模式2的组合。总会有介于低点和高点之间的情况出现。在zigzagzug中你可以清楚地看到这些点。除此之外,我看到有些情况下模式0是零,但模式1或模式2大于零,这是不正确的点。所以我决定加入额外的代码来避免这些点。 正如我所提到的,这可能不是寻找 "之 "字形点的最佳代码,但在我的测试中,这段代码本身是正确工作的。我已经测试过几次了。我总是建议那些想使用它的人在使用之前先测试一下。 你测试过它吗?难道它没有给出正确的点。当你说它不健全或不正确时,我想你的测试是失败的,是吗? 谢谢。 Fernando Carreiro 2014.02.25 21:04 #35 aed71: 再次感谢您的意见。 我不是一个好的程序员,所以代码本身可能并不完美:-) 然而,让我试着解释一下我的逻辑。 1-) 评论部分可以改成 "每一个新条"。 2-) 4-) 5-)使用大数组的逻辑是,之后在一个新的过程中,我将计算高点之间或高点和低点之间的零值条,以便找到周期、振幅等。所以我需要在使用数组之前对其进行初始化,而且我不需要处理时间索引等问题。只有更多的缓冲区,这对我的项目来说目前不是一个大问题。 在 "之 "字形中,尽管你在最后有真正的高点和低点,但如果你把这些值放到一个数组中,你会发现在低点和高点之间有一些间隔。你无法避免它们,也无法避免你使用模式0和模式1/模式2的组合。总会有介于低点和高点之间的情况出现。在zigzagzug中你可以清楚地看到这些点。除此之外,我看到有些情况下模式0是零,但模式1或模式2大于零,这是不正确的点。所以我决定加入额外的代码来避免这些点。 正如我所提到的,这可能不是寻找 "之 "字形点的最佳代码,但在我的测试中,这段代码本身是正确工作的。我已经测试过几次了。我总是建议那些想使用它的人在使用之前先测试一下。 你测试过它吗?难道它没有给出正确的点。当你说它不健全或不正确时,我想你的测试是失败的,是吗? 谢谢。 你错过了重点!我提供的代码告诉你如何正确识别高/低ZigZag点;但你却选择无视它,用你自己的方式来做,这使得代码更难理解,速度更慢,而且使用的资源也超过了必要的范围。为什么? Sahar Joorabchian 2021.12.30 15:59 #36 Fernando Carreiro #:你在你的iCustom例子中对ZigZag的使用是错误的。MetQuotes的标准ZigZag有三个 (而不是两个)缓冲区(iCustom中的模式或行指数)。 模式=0:同时保持高点和低点ZigZag。 模式=1:高点,但不一定只有ZigZag点(因为它也持有重绘点)。 模式 = 2: 低点,但不一定只有ZigZag点(因为它也持有重绘点)。 你需要将第一个缓冲区(模式0)与其他两个缓冲区进行比较,以决定它是一个高点还是一个低点(例如,如果缓冲区1和缓冲区3的值相同,那么它就是一个低ZigZag点,如果缓冲区1和缓冲区2的值相同,那么它就是一个高点)。另外,为了更好地理解ZigZag是如何工作的,以及它是如何重绘的,我建议玩一下我的 ZigZagZug指标。然而,在你的代码中使用MetaQuotes ZigZag,因为它更快。我的版本做了更多的处理,因为有额外的功能,所以比较慢。PS!如果缓冲区1(模式=0)的值为0.0,但其他缓冲区的值非零,那么它们是旧的重绘点,而不是ZigZag点。在你的代码中,你把模式0缓冲区作为低点,模式1缓冲区作为高点。这是完全不正确的。 你不会相信这对我有多大的帮助,非常感谢。 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
好的,谢谢FMIC。
事实上,我的问题是关于我在论坛上分享的专家。你的脚本工作得很好,非常感谢,但基本上我需要的是能在近乎实时模式下工作的专家形式。
你在这个主题上的原始询问是。
我的脚本为你提供了回答这两个问题的示例代码和知识,因此,你现在可以将这些知识应用于其他用途,如你想开发的EA。你所要做的就是使用我的iCustom()用法和测试ZigZag高低点的代码,并将其应用于你的EA代码。
然而,你后来提到的另一个问题,即如何在EA中使用ZigZag数据,以满足优化你已经在另一个EA中运行的策略的需要,在这个主题中还没有被提出或描述得足够详细。因此,从本质上讲,我无法提供建议或帮助你,因为我不知道你需要什么。
如果你阅读了代码库中伴随我的ZigZagZug 指标的文章,你会发现在策略和EA中使用ZigZag并不容易,因为要不断重绘,需要仔细了解它的工作原理以及如何可能在不同的策略和EA中使用它。
换句话说,ZigZag数据和EA策略之间的结合是复杂的,需要很好的定义。因此,在不了解你目前的策略或如何优化它的情况下,我无法为你提供更多的帮助或建议。
由于可以理解,你可能不愿意在公开场合说得更多,我甚至为你提供了私下里说的机会,而且不收取任何费用。我是一名软件开发人员,我通常对这些服务收费。
除了我已经提供给你的,在不了解你想解决的问题的性质的情况下,我不能做更多的事情,也不能给你更多的建议。
你好。
我设法修正了我的代码。在循环的逻辑上有一个错误,现在就我的测试而言,它运行良好。
有兴趣的人可以使用它。它被设计为作为专家使用,它使用了metaquotes的标准ZigZag指标。
它所做的基本上是在Zigzag指标中找到真正的高点和低点。它可以用来寻找历史数据中的低点和高点,也可用于周期和振幅分析。
它不是实时的!它回溯到最后的高点和低点数值,所以根据最后的趋势长度,它可以回溯并修正数值。在策略测试器中 进行快速测试之前,请不要使用它。
FMIC,感谢您的努力和帮助。
你好,aed71。
你好,aed71。
再次感谢您的意见。
我不是一个好的程序员,所以代码本身可能并不完美:-)然而,让我试着解释一下我的逻辑。
1-) 评论部分可以改成 "每一个新条"。
2-) 4-) 5-)使用大数组的逻辑是,之后在一个新的过程中,我将计算高点之间或高点和低点之间的零值条,以便找到周期、振幅等。所以我需要在使用数组之前对其进行初始化,而且我不需要处理时间索引等问题。只有更多的缓冲区,这对我的项目 来说目前不是一个大问题。
在 "之 "字形中,尽管你在最后有真正的高点和低点,但如果你把这些值放到一个数组中,你会发现在低点和高点之间有一些间隔。你无法避免它们,也无法避免你使用模式0和模式1/模式2的组合。总会有介于低点和高点之间的情况出现。在zigzagzug中你可以清楚地看到这些点。除此之外,我看到有些情况下模式0是零,但模式1或模式2大于零,这是不正确的点。所以我决定加入额外的代码来避免这些点。
正如我所提到的,这可能不是寻找 "之 "字形点的最佳代码,但在我的测试中,这段代码本身是正确工作的。我已经测试过几次了。我总是建议那些想使用它的人在使用之前先测试一下。
你测试过它吗?难道它没有给出正确的点。当你说它不健全或不正确时,我想你的测试是失败的,是吗?
谢谢。
再次感谢您的意见。
我不是一个好的程序员,所以代码本身可能并不完美:-) 然而,让我试着解释一下我的逻辑。
1-) 评论部分可以改成 "每一个新条"。
2-) 4-) 5-)使用大数组的逻辑是,之后在一个新的过程中,我将计算高点之间或高点和低点之间的零值条,以便找到周期、振幅等。所以我需要在使用数组之前对其进行初始化,而且我不需要处理时间索引等问题。只有更多的缓冲区,这对我的项目来说目前不是一个大问题。
在 "之 "字形中,尽管你在最后有真正的高点和低点,但如果你把这些值放到一个数组中,你会发现在低点和高点之间有一些间隔。你无法避免它们,也无法避免你使用模式0和模式1/模式2的组合。总会有介于低点和高点之间的情况出现。在zigzagzug中你可以清楚地看到这些点。除此之外,我看到有些情况下模式0是零,但模式1或模式2大于零,这是不正确的点。所以我决定加入额外的代码来避免这些点。
正如我所提到的,这可能不是寻找 "之 "字形点的最佳代码,但在我的测试中,这段代码本身是正确工作的。我已经测试过几次了。我总是建议那些想使用它的人在使用之前先测试一下。
你测试过它吗?难道它没有给出正确的点。当你说它不健全或不正确时,我想你的测试是失败的,是吗?
谢谢。
你错过了重点!我提供的代码告诉你如何正确识别高/低ZigZag点;但你却选择无视它,用你自己的方式来做,这使得代码更难理解,速度更慢,而且使用的资源也超过了必要的范围。为什么?
你在你的iCustom例子中对ZigZag的使用是错误的。MetQuotes的标准ZigZag有三个 (而不是两个)缓冲区(iCustom中的模式或行指数)。
你需要将第一个缓冲区(模式0)与其他两个缓冲区进行比较,以决定它是一个高点还是一个低点(例如,如果缓冲区1和缓冲区3的值相同,那么它就是一个低ZigZag点,如果缓冲区1和缓冲区2的值相同,那么它就是一个高点)。
另外,为了更好地理解ZigZag是如何工作的,以及它是如何重绘的,我建议玩一下我的 ZigZagZug指标。然而,在你的代码中使用MetaQuotes ZigZag,因为它更快。我的版本做了更多的处理,因为有额外的功能,所以比较慢。
PS!如果缓冲区1(模式=0)的值为0.0,但其他缓冲区的值非零,那么它们是旧的重绘点,而不是ZigZag点。
在你的代码中,你把模式0缓冲区作为低点,模式1缓冲区作为高点。这是完全不正确的。