文章 "自定义品种(符号):实践基础" - 页 6 1234567 新评论 Fernando Carreiro 2022.02.18 02:56 #51 Mr David Frederick Roberts #: 谢谢你,费尔南多,我怀疑是我做了什么蠢事,但我就是看不出来!正如我所说,我对 MT4 要熟悉得多(大约 8 年),我没有发现 MT5 中有两个"£Every Tick "选项。 我刚启动它,看到它被设置为 "Every Tick",就想如果它有真正的刻度,就会使用它们。这一定是个很简单的问题,再次感谢您的发现。 不客气! Andrei Iakovlev 2023.06.03 14:07 #52 也许在某个地方有 EqualVolumeBars 的新版本?使用该 EA 时,我发现了两个问题: 1.编译 EqualVolumeBars 时,会出现 1 个警告(在 Symbol.mqh 中很容易解决,例如用 _time 替换 time): declaration of 'time' hides global variable Symbol.mqh 28 47 2. Bars 消失。据我所知,当终端中出现新的一天时,就会出现这种情况。例如,TimeCurrent() 中的日期是 2023.06.03(BTCUSD 在周末跳动),而最后一个区间条形图是在 2023. 06.02 打开的。 只需几步就能重现这个问题: 在 EqualVolumeBars 中换行 360(这样图表就不会自行更新): //ChartSetSymbolPeriod(id,symbolName,PERIOD_M1); 在 EURAUD 图表中添加 EqualVolumeBars,参数如下: 获得如下图表: 右击图表并单击刷新。结果: Stanislav Korotky 2023.06.03 17:09 #53 Andrei Iakovlev #:也许某个地方有 EqualVolumeBars 的新版本?在使用此智能交易系统时,我发现了两个问题:1.编译 EqualVolumeBars 时出现 1 个警告(在 Symbol.mqh 中很容易解决,例如用 _time 替换 time):2. 条形图消失。据我所知,当终端中出现新的一天时,就会出现这种情况。例如,TimeCurrent() 中的日期是 2023.06.03(BTCUSD 在周末跳动),而最后一个区间条形图是在 2023.06.02 打开的。您只需几步就可以重现这个问题: 在 EqualVolumeBars 中换行 360(这样图表就不会自行更新): 在 EURAUD 图表中添加 EqualVolumeBars,参数如下: 获得如下图表: 右击图表并单击刷新。结果: 没有新版本。 终端中自定义字符的实现存在错误,我曾在某处写过,但并未真正修复。 在这种情况下,您可以查看代码 - 当启动 Expert Advisor 时,现有符号会被完全重新填充,因此,如果有多余的东西,或者相反,一天的开始就会消失 - 这就是 MQL5 API 的工作方式。 由于源代码是开放的,您可以提出修复建议来解决问题。 mntiwana 2023.09.26 07:14 #54 斯坦尼斯拉夫-科罗茨基 感谢您就 "自定义符号 "主题的各种方法和类型所做的一切。 其次,很抱歉用英语写作,因为我不懂俄语--:) 在 "RenkoTicks "代码中出现了一个问题(一种错误)。 您能否抽出时间消除这个错误? 问候 Stanislav Korotky 2023.04.26www.mql5.com Trader's profile Stanislav Korotky 2023.09.26 20:08 #55 mntiwana #:请您管理好时间,删除此错误 只需删除大括号内的 0 即可。请关注新闻公告中的 MQL5 语法更改。这一条有点旧了,我现在记不起确切的参考资料了。 Ryan L Johnson 2023.10.16 23:08 #56 Stanislav Korotky #:这个有点旧了、 我又一次花了三年时间才找到这件艺术品。如果这是 "旧 "的,那么旧就是......慢。哈。谢谢。 Ryan L Johnson 2023.10.28 19:29 #57 关于 RenkoTicks.mq5,我在三位数定价时遇到了点数到点数的转换问题。我之前在 MT4 中的一些实用程序中也遇到过同样的问题,因此我实施了相同的修复方法: //在全局中,插入 double _PntsToPips; //在启动时,插入 if(_Digits == 3 || _Digits == 5) { PntsToPips = 10; } else { _PntsToPips = 1; } //在包含 _Point 的 2 行中(不在 sendSpread... 中),插入 * _PntsToPips //2 新行将是 double Renko::boxPoints = NormalizeDouble(RenkoBoxSize * _Point * _PntsToPips, _Digits); Renko::setBoxPoints(NormalizeDouble(RenkoBoxSize * _Point * _PntsToPips, _Digits)); Stanislav Korotky 2024.02.08 19:12 #58 这里是对基于 2 MA 交叉的自定义信号的一个微小但重要的改进。底层指标对象维护着包含指标数据的内部缓冲区(不仅是 MA 情况,而且是一般情况),因此调用m_maFast.Main(ind) 或m_maSlow.Main(ind) 会导致从对象而不是从指标本身读取过时(缓存)的数据,如果您的交易系统是按刻度线交易的话(!)。现在,它被以下对GetData 的调用所取代,GetData 基本上是直接CopyBuffer 的封装: class Signal2MACross : public CExpertSignal { ... // 读取指标数据的辅助函数 double FastMA(int ind) { static double buffer[1]; m_maFast.GetData(ind, 1, 0, buffer); return buffer[0]; } double SlowMA(int ind) { static double buffer[1]; m_maSlow.GetData(ind, 1, 0, buffer); return buffer[0]; } }; 更新后的头文件附后。它应该放在/MQL5/Include/Expert/Signal/MySignals/。如果没有这个头文件,信号将由已完成的条形图建立。 附加的文件: Signal2MACross.mqh 7 kb Stanislav Korotky 2024.02.10 01:25 #59 <br/ translate="no"> 结果更糟。有些时候,当新的刻度被触发时,时间序列还没有被重新计算 ,因此应该动态调整条形图指数,以便进行交易信号分析。例如(粗略方法): double FastMA(int ind) { MqlTick t; SymbolInfoTick(m_symbol.Name(), t); bool correction = false; if(t.time / 60 * 60 != iTime(m_symbol.Name(), PERIOD_CURRENT, 0) && ind > 0) { ind--; correction = true; } static double buffer[1]; m_maFast.GetData(ind, 1, 0, buffer); if(correction) PrintFormat("F: %s'%03d %s %.5f", TimeToString(t.time, TIME_SECONDS), t.time_msc % 1000, TimeToString(iTime(m_symbol.Name(), PERIOD_CURRENT, 0)), buffer[0]); return buffer[0]; } 这对于在开仓时交易的 EA 和刻度稀疏的符号至关重要。 John 2024.02.19 15:41 #60 如何使用 (bid+ask)/2 公式制作平均价格在线图表? 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
也许在某个地方有 EqualVolumeBars 的新版本?使用该 EA 时,我发现了两个问题:
1.编译 EqualVolumeBars 时,会出现 1 个警告(在 Symbol.mqh 中很容易解决,例如用 _time 替换 time):
2. Bars 消失。据我所知,当终端中出现新的一天时,就会出现这种情况。例如,TimeCurrent() 中的日期是 2023.06.03(BTCUSD 在周末跳动),而最后一个区间条形图是在 2023. 06.02 打开的。
只需几步就能重现这个问题:
//ChartSetSymbolPeriod(id,symbolName,PERIOD_M1);获得如下图表:
也许某个地方有 EqualVolumeBars 的新版本?在使用此智能交易系统时,我发现了两个问题:
1.编译 EqualVolumeBars 时出现 1 个警告(在 Symbol.mqh 中很容易解决,例如用 _time 替换 time):
2. 条形图消失。据我所知,当终端中出现新的一天时,就会出现这种情况。例如,TimeCurrent() 中的日期是 2023.06.03(BTCUSD 在周末跳动),而最后一个区间条形图是在 2023.06.02 打开的。
您只需几步就可以重现这个问题:
获得如下图表:
没有新版本。
终端中自定义字符的实现存在错误,我曾在某处写过,但并未真正修复。
在这种情况下,您可以查看代码 - 当启动 Expert Advisor 时,现有符号会被完全重新填充,因此,如果有多余的东西,或者相反,一天的开始就会消失 - 这就是 MQL5 API 的工作方式。
由于源代码是开放的,您可以提出修复建议来解决问题。
斯坦尼斯拉夫-科罗茨基
感谢您就 "自定义符号 "主题的各种方法和类型所做的一切。
其次,很抱歉用英语写作,因为我不懂俄语--:)
在 "RenkoTicks "代码中出现了一个问题(一种错误)。
您能否抽出时间消除这个错误?
问候
请您管理好时间,删除此错误
只需删除大括号内的 0 即可。请关注新闻公告中的 MQL5 语法更改。这一条有点旧了,我现在记不起确切的参考资料了。
这个有点旧了、
我又一次花了三年时间才找到这件艺术品。如果这是 "旧 "的,那么旧就是......慢。哈。谢谢。
关于 RenkoTicks.mq5,我在三位数定价时遇到了点数到点数的转换问题。我之前在 MT4 中的一些实用程序中也遇到过同样的问题,因此我实施了相同的修复方法:
这里是对基于 2 MA 交叉的自定义信号的一个微小但重要的改进。底层指标对象维护着包含指标数据的内部缓冲区(不仅是 MA 情况,而且是一般情况),因此调用m_maFast.Main(ind) 或m_maSlow.Main(ind) 会导致从对象而不是从指标本身读取过时(缓存)的数据,如果您的交易系统是按刻度线交易的话(!)。现在,它被以下对GetData 的调用所取代,GetData 基本上是直接CopyBuffer 的封装:
更新后的头文件附后。它应该放在/MQL5/Include/Expert/Signal/MySignals/。如果没有这个头文件,信号将由已完成的条形图建立。
结果更糟。有些时候,当新的刻度被触发时,时间序列还没有被重新计算 ,因此应该动态调整条形图指数,以便进行交易信号分析。例如(粗略方法):
这对于在开仓时交易的 EA 和刻度稀疏的符号至关重要。
如何使用 (bid+ask)/2 公式制作平均价格在线图表?