晚上好,阿泰姆您活到老,学到老!感谢您的辛勤劳动和丰富经验。
当然,其中也不乏误解,更确切地说,我学得越多,就越不明白。
在附件中,我试图修改您的智能交易系统 TestDoEasyPart08,添加一个自定义指标,也是您的 iCrossAD。
我使用了 iCustom(asymbol.Name(), _Period, "iCrossAD")函数;
CrossAD = iCustom(asymbol.Name(), _Period, "iCrossAD"); if (CrossAD == INVALID_HANDLE) { Print("创建 iCrossAD 指标描述符失败!"); return(INIT_FAILED); }
然后,我试着将指标中的数据复制到 EA 缓冲区,并检查我做得如何。
void OnTick() { //+------------------------------------------------------------------+////////////////////////////// int buf_size = 30; double Buf_Arrow_Sell[], Last_Arrow_Sell; double Buf_Arrow_Buy[], Last_Arrow_Buy; ArraySetAsSeries(Buf_Arrow_Sell, true); ArraySetAsSeries(Buf_Arrow_Buy, true); if (CopyBuffer(CrossAD, 3, 0, buf_size, Buf_Arrow_Sell) != buf_size || ArraySize(Buf_Arrow_Sell) != buf_size) { Print("未能正确从 iCrossAD 复制数据"); return; } else Last_Arrow_Sell = Buf_Arrow_Sell[0]; if (CopyBuffer(CrossAD, 2, 0, buf_size, Buf_Arrow_Buy) != buf_size || ArraySize(Buf_Arrow_Buy) != buf_size) { Print("未能正确从 iCrossAD 复制数据"); return; } else Last_Arrow_Buy = Buf_Arrow_Buy[0]; //+------------------------------------------------------------------+ Comment("输出分形数据"。, "\n Last_Arrow_Buy = ",Last_Arrow_Buy, "\n ---------------------- ", "\n Last_Arrow_Sell = ",Last_Arrow_Sell ); //+------------------------------------------------------------------+ //+------------------------------------------------------------------+//////////////////////////////
所有这些技巧都不起作用,请告诉我哪里做错了,以及如何才能真正做到 ????。
晚上好,阿泰姆您活到老,学到老!感谢您的辛勤劳动和丰富经验。
当然,这其中也不乏误解,更确切地说--我学得越多,不理解的就越多。
在附件中,我试图修改您的智能交易系统 TestDoEasyPart08,添加一个自定义指标,也是您的 iCrossAD。
我使用了函数 iCustom(asymbol.Name(), _Period, "iCrossAD");
然后,我尝试将指标中的数据复制到 EA 缓冲区,并检查我做得如何
所有这些技巧都不起作用,请告诉我哪里做错了,到底该怎么做?
"不想工作"--到底是什么不想工作?
这是我在全局层面要做的事情:
int buf_size = 30; double Buf_Arrow_Sell[], Last_Arrow_Sell; double Buf_Arrow_Buy[], Last_Arrow_Buy;
这个在 OnInit() 中:
ArraySetAsSeries(Buf_Arrow_Sell, true); ArraySetAsSeries(Buf_Arrow_Buy, true);
检查指标在零点时的缓冲区中是否有数值--你只能在零点时检查它们。我不记得它在哪一栏给出了什么值。
- "到底是什么地方出了问题......?- 现阶段,我正试图查看 "注释 "中指标的最后一个向上和向下箭头的值。如果做到了这一点,我就可以按时间对它们进行比较,从而知道哪一个是最后一个,也就是 "当前"。在改变数值时,这可以被视为一个信号,或者作为其他信号的过滤器(可以/不可以)。但问题是,我无法将这些值输入 "注释",更糟糕的是,我看不到 "注释 "本身,文本应该是可见的吗?
- "我想在全局范围内这样做:......"- 移动了它,试着理解为什么会这样,我想我明白了,谢谢你的科普!!!!
- "我会在 OnInit() 中这样做:......"- 移走了,非常感谢,我会记住的。
- "检查指标在零点时的缓冲区中是否有数值--......"- 我会试着在指标内部组织一个注释,然后运行指标,用眼睛查看数值本身,但它们如何在一个图表上显示呢?在另一张图表上激活指标?
- "您只能在零线上检查它们......"- 是的,我意识到,通过使用这些箭头访问数组,我可能几乎总是得到一个空值,只有在极少数情况下,当画出 一个箭头 时,该值才不是空的。因此,我需要在指标端对最后一个信号进行切换,或者运行一个循环,写出最后一个值,直到 Expert Advisor 中的第一个非空值?也就是说,与指标侧的切换完全相同?????。
请帮忙评论一下,我不明白为什么不显示!!!!!
- "到底是什么地方出了问题......?- 现阶段,我正试图查看 "注释 "中指标的最后一个向上和向下箭头的值。如果做到了这一点,我就可以按时间对它们进行比较,从而知道哪一个是最后一个,也就是 "当前"。在改变数值时,这可以被视为一个信号,或者作为其他信号的过滤器(可以/不可以)。但问题是,我无法将这些值输入 "注释",更糟糕的是,我看不到 "注释 "本身,文本应该是可见的吗?
- "这是我在全局级别要做的事情:" - 移动了它,试着去理解为什么会这样,我想我明白了,谢谢你的科普!!!!!
- "这个在 OnInit():" - 移动了,非常感谢,我会记住的。
- "并检查指标在零杆处的缓冲区中是否有数值--......"- 我会试着在指标内部组织一个注释,然后运行指标,用眼睛查看数值本身,但它们如何在一个图表上显示呢?在另一张图表上激活指标?
- "您只能在零柱上检查它们......"- 是的,我意识到,通过使用这些箭头访问数组,我可能几乎总是得到一个空值,只有在极少数情况下,当画出 一个箭头 时,该值才不是空的。因此,我需要在指示器上切换最后一个信号,或者运行一个循环,写出最后一个值,直到第一个非空值?我的意思是与指标侧的切换完全相同????。
请帮忙评论一下,我不明白为什么不显示!!!!!
专家 "日志中写了什么?是否创建了指标句柄?
专家 "日志中写了什么?是否创建了指标句柄?
下午好。是的,已经创建了手柄,它等于 10。
我取得了一点进展(非常小!)。有评论 记录
有 Print() 记录
2019.05.19 17:31:13.127 2018.01.02 00:00:00 句柄 iCrossAD = 10
2019.05.19 17:31:13.580 2018.01.02 09:00:00:00 从 iCrossAD 指标的第二个缓冲区复制数据
2019.05.19 17:31:13.580 2018.01.02 09:00:00 CrossAD = 10, period_find = 400, Last_Arrow_Buy = 1.797693134862316e+308
2019.05.19 17:31:13.580 2018.01.02 09:00:00 从 iCrossAD 指标的第三个缓冲区复制数据
2019.05.19 17:31:13.580 2018.01.02 09:00:00 CrossAD = 10, period_find = 400, Last_Arrow_Sell = 1.797693134862316e+308
2019.05.19 17:31:13.580 2018.01.02 09:00:20 从 iCrossAD 指标的第二个缓冲区复制数据
2019.05.19 17:31:13.581 2018.01.02 09:00:20 CrossAD = 10, period_find = 400, Last_Arrow_Buy = 1.797693134862316e+308
2019.05.19 17:31:13.581 2018.01.02 09:00:20 从 iCrossAD 指标的第三个缓冲区复制数据
2019.05.19 17:31:13.581 2018.01.02 09:00:20 CrossAD = 10, period_find = 400, Last_Arrow_Sell = 1.797693134862316e+308
从指标中复制数据的两个缓冲区包含指标箭头的设置值。它们在设置箭头时被写入。因此,我的结论是,在箭头形成时,应该用双倍价格填充它们。但出于某种原因,我得到了一个宇宙数字,如果我没记错的话,这是 MT5 中可能出现的最大双倍值。
但我在测试器中尝试并实现了这一点,昨天和今天都没有报价,今天是周日。
如果有这方面的需求,请帮助我理解。专家顾问和指标附在帖子后面。智能交易系统已更改,我在上面写了,指标也是您的,没有更改。
下午好。是的,手柄已经创建,等于 10。
我取得了一点进展(非常小!)。评论记录已经出现
出现了 Print() 记录
2019.05.19 17:31:13.127 2018.01.02 00:00:00 手柄 iCrossAD = 10
2019.05.19 17:31:13.580 2018.01.02 09:00:00:00 从 iCrossAD 指标的第二个缓冲区复制数据
2019.05.19 17:31:13.580 2018.01.02 09:00:00 CrossAD = 10, period_find = 400, Last_Arrow_Buy = 1.797693134862316e+308
2019.05.19 17:31:13.580 2018.01.02 09:00:00 从 iCrossAD 指标的第三个缓冲区复制数据
2019.05.19 17:31:13.580 2018.01.02 09:00:00 CrossAD = 10, period_find = 400, Last_Arrow_Sell = 1.79769313486262316e+308
2019.05.19 17:31:13.580 2018.01.02 09:00:20 从 iCrossAD 指标的第二个缓冲区复制数据
2019.05.19 17:31:13.581 2018.01.02 09:00:20 CrossAD = 10, period_find = 400, Last_Arrow_Buy = 1.79769313486262316e+308
2019.05.19 17:31:13.581 2018.01.02 09:00:20 从 iCrossAD 指标的第三个缓冲区复制数据
2019.05.19 17:31:13.581 2018.01.02 09:00:20 CrossAD = 10, period_find = 400, Last_Arrow_Sell = 1.79769313486262316e+308
从指标中复制数据的两个缓冲区包含指标箭头的设置值。它们在设置箭头时被写入。因此,我得出结论,这两个缓冲区不应填入双重价格。但出于某种原因,我有一个宇宙数字,如果我没记错的话,它是 MT5 中可能出现的最大双重值。
不过,我在测试器中尝试并实现了这一点,昨天和今天都没有报价,今天是周日。
如果有这方面的需求,请帮助我理解。专家顾问和指标附在帖子后面。智能交易系统已经更改,我在上面已经写过,指标也是你的,没有更改。
罗杰,听到了,谢谢。我想我知道一些关于空值的事,我会查查的。
如果这里不合适,您能不能推荐其他主题,让我从您或您的同事那里得到关于这些更蹩脚问题的答案?
如果没有这样的地方,也许值得创建一个。
很抱歉打扰您,但这里没有热烈的讨论,没有人打扰,除了作者,谁又能给出最好的建议呢?
此外,我正在尝试使用您的图书馆。当然很原始,但我可以,抱歉。
如果有与图书馆无关的问题,请写信到这里:

- 2016.11.09
- www.mql5.com
与图书馆无关的问题,请在此处发帖:
非常感谢,我去看了看,读了读。这正是我需要的,我会用它的。
新文章 轻松快捷开发 MetaTrader 程序的函数库(第八部分):订单和持仓修改事件已发布:
在之前的文章中,我们已着手创建一个大型跨平台函数库,简化 MetaTrader 5 和 MetaTrader 4 平台程序的开发。 在第七部分中,我们加入了 StopLimit 订单激活跟踪,以及准备了其它涉及订单和持仓事件的跟踪功能。 在本文中,我们将开发用于跟踪订单和持仓修改事件的类。
我们来编译 EA。
将 止损点数和止盈点数设置为零,即开仓和下挂单时没有停止级别。 将止损修改(点数)和止盈修改(点数)设置为 20 和 60(默认值)— 按下按钮时会设置这些止损和止盈价位。
在测试器中启动 EA 并设置挂单。 然后按下按钮,逐一设置止损和止盈。 设置价位,并在日志中显示相应的项目。 接着,启用尾随,并观察订单如何追随价格变化,并在日志帐中显示相应的项目。 由订单触发的持仓有其自身的尾随止损价位,并在日志中显示相应的项目。
净持:
对冲:
作者:Artyom Trishkin