程序库: BestInterval - 页 23 1...1617181920212223242526272829 新评论 fxsaber 2019.12.11 12:48 #221 fxsaber:这是我目前做的唯一一件事其余部分不需要批量更正。但有一些错误与其他(旧)相关。有必要更正。 已更新。在激活的 BestInterval 模式下,我建议使用该选项。 关于交易、自动交易系统和测试交易策略的论坛库:虚拟fxsaber, 2019.12.11 12:15 pm. 很难说开发人员何时会解决初始符号价格正常化的问题,也很难说他们是否会这样做。这就是引入该模式的原因。 //https://www.mql5.com/ru/forum/321656/page34#comment_14192799 #define TICKS_FORCE_NORMALIZE // 对输入的跳动价格进行强制正常化处理 traveller00 2019.12.20 22:12 #222 非常出乎意料的行为。 如果以 Action=false 运行一次,它似乎会将传递结果保存到文件中,以便以后应用。但出乎意料的是,它还会保存所有参数,如总计、RF、DD 等。换句话说,如果在同一符号或其他符号的另一个时间间隔内以 Action=true 运行,它不仅会应用最佳交易时间,还会在日志中记录旧值。 fxsaber 2019.12.21 00:23 #223 traveller00:如果在同一符号的另一个区间或另一个符号等上以 Action=true 运行,它不仅会应用最佳交易时间,还会在日志中记录旧值。 它不会显示真实运行的值,而是显示已应用的错误运行的数据。您可以更改符号、时间间隔等,但它显示的值不会改变。它们只与输入的时间相关。这样做是有目的的。 traveller00 2020.01.22 18:27 #224 为了以防万一,我想指出的是,从架构的角度来看,它不能与 StopLoss 正常工作。理论上,在操作=false 时触发的 StopLoss 可能会落入 BestInterval 决定抛出的范围。因此,当操作=true 时,它会发生偏移,结果数字有时会与操作=false 时预测的数字大相径庭。 fxsaber 2020.01.22 18:43 #225 traveller00: 为了以防万一,我想指出的是,从架构的角度来看,它不能与 StopLoss 正常工作。理论上,在操作=false 时触发的 StopLoss 可能会落入 BestInterval 决定抛出的范围。因此,它会在操作=true 时发生偏移,结果数字有时会与操作=false 时预测的数字大相径庭。 看来你误解了什么。即使从理论上讲,也不应该有问题。 traveller00 2020.01.23 17:21 #226 是的,问题似乎在于,Virtual 中包含的使用 BestInterval 的 Sync 忽略了 StopLoss 和 TakeProfit。问题不在于架构,而是我没有完全弄明白。 fxsaber 2020.01.23 17:54 #227 traveller00: 是的,问题似乎在于,Virtual 中包含的使用 BestInterval 的 Sync 忽略了 StopLoss 和 TakeProfit。问题不在于架构,而是我没有完全弄明白。 我正在通过限价器和止损器编写 TC,因此最好能提供一个重现该问题的原始示例。 traveller00 2020.01.23 18:20 #228 当 BestInterval.mqh 中的 active=true 时,有voidOnTick( void ),其内部是SYNC::Positions<BEST_TIME>();,这将导致 Sync.mqh 中的 staticvoid Positions( const intHandle= 0, const bool Reverse = false )。mqh 中的staticvoid Positions( constint Handle = 0, constbool Reverse = false )。内部重新计算手数,如果手数在要求的区间内,则通过SYNC::NewOrderSend(_Symbol, Type, ::MathAbs(AddLots), Price, 100, 0, 0, 0);; 将手数从虚拟环境转移到真实环境。 有点奇怪的是,价格不是从仓位中获取,而是就地读取,不过没关系。正如你所看到的,StopLoss 和 TakeProfit 均为零。也许你使用的是BESTINTERVAL_LIMITSYNC_NETTING 选项,其中 TakeProfit 已被考虑在内。 Libraries: BestInterval 程序库: MT4Orders 不懂就问。编程0基础,想学MQL5语言,有没有必要先学C++?谢谢各位大佬! fxsaber 2020.01.23 18:30 #229 traveller00: 当 BestInterval.mqh 中的 active=true 时,有voidOnTick( void ),其内部是SYNC::Positions<BEST_TIME>();,这将导致 Sync.mqh 中的 staticvoid Positions( const intHandle= 0, const bool Reverse = false )。mqh 中的staticvoid Positions( constint Handle = 0, constbool Reverse = false )。内部重新计算手数,如果手数在要求的区间内,则通过SYNC::NewOrderSend(_Symbol, Type, ::MathAbs(AddLots), Price, 100, 0, 0, 0);; 将手数从虚拟环境转移到真实环境。 有点奇怪的是,价格不是从仓位中获取,而是在现场读取,不过没关系。正如您所看到的,StopLoss 和 TakeProfit 均为零。也许您使用的是BESTINTERVAL_LIMITSYNC_NETTING 选项,其中 TakeProfit 已被考虑在内。 是的,我使用这种模式。真实模式更多是为了演示。我根本没想过要在通用解决方案上浪费时间,因为这样一切都白费了。 如果稍加修补,就可以将 BestInterval-true 用于封闭源代码的 EA(市场等)的单次交易。 不过,BestInterval 的主要功能还是在优化模式 下工作。True 是一个很好的功能,但不是必须的。 Enrique Dangeroux 2020.02.07 18:45 #230 int FromFile( const string FileName = __FILE__, const int CommonFlag = 0 ) { const bool Res = (::FileLoad(FileName, this.Intervals, CommonFlag) > 0) && (this.IsCalculated = true); if (Res) { this.AmountDeleteIntervals = ::ArraySize(this.Intervals) - (this.Intervals[0].OpenTime ? 0 : 1); this.FullInterval.Calculate(this.Intervals); } else ::Print("ERROR: Can not load the File " + FileName + "!"); return(Res); } 小的外观修正,int => bool。或者,我建议用返回 AmountDeleteIntervals 代替。 1...1617181920212223242526272829 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这是我目前做的唯一一件事
其余部分不需要批量更正。但有一些错误与其他(旧)相关。有必要更正。
已更新。在激活的 BestInterval 模式下,我建议使用该选项。
关于交易、自动交易系统和测试交易策略的论坛
库:虚拟
fxsaber, 2019.12.11 12:15 pm.
很难说开发人员何时会解决初始符号价格正常化的问题,也很难说他们是否会这样做。这就是引入该模式的原因。非常出乎意料的行为。
如果以 Action=false 运行一次,它似乎会将传递结果保存到文件中,以便以后应用。但出乎意料的是,它还会保存所有参数,如总计、RF、DD 等。换句话说,如果在同一符号或其他符号的另一个时间间隔内以 Action=true 运行,它不仅会应用最佳交易时间,还会在日志中记录旧值。
如果在同一符号的另一个区间或另一个符号等上以 Action=true 运行,它不仅会应用最佳交易时间,还会在日志中记录旧值。
它不会显示真实运行的值,而是显示已应用的错误运行的数据。您可以更改符号、时间间隔等,但它显示的值不会改变。它们只与输入的时间相关。这样做是有目的的。
为了以防万一,我想指出的是,从架构的角度来看,它不能与 StopLoss 正常工作。理论上,在操作=false 时触发的 StopLoss 可能会落入 BestInterval 决定抛出的范围。因此,它会在操作=true 时发生偏移,结果数字有时会与操作=false 时预测的数字大相径庭。
看来你误解了什么。即使从理论上讲,也不应该有问题。
是的,问题似乎在于,Virtual 中包含的使用 BestInterval 的 Sync 忽略了 StopLoss 和 TakeProfit。问题不在于架构,而是我没有完全弄明白。
我正在通过限价器和止损器编写 TC,因此最好能提供一个重现该问题的原始示例。
当 BestInterval.mqh 中的 active=true 时,有voidOnTick( void ),其内部是SYNC::Positions<BEST_TIME>();,这将导致 Sync.mqh 中的 staticvoid Positions( const intHandle= 0, const bool Reverse = false )。mqh 中的staticvoid Positions( constint Handle = 0, constbool Reverse = false )。内部重新计算手数,如果手数在要求的区间内,则通过SYNC::NewOrderSend(_Symbol, Type, ::MathAbs(AddLots), Price, 100, 0, 0, 0);; 将手数从虚拟环境转移到真实环境。 有点奇怪的是,价格不是从仓位中获取,而是在现场读取,不过没关系。正如您所看到的,StopLoss 和 TakeProfit 均为零。也许您使用的是BESTINTERVAL_LIMITSYNC_NETTING 选项,其中 TakeProfit 已被考虑在内。
是的,我使用这种模式。真实模式更多是为了演示。我根本没想过要在通用解决方案上浪费时间,因为这样一切都白费了。
如果稍加修补,就可以将 BestInterval-true 用于封闭源代码的 EA(市场等)的单次交易。
不过,BestInterval 的主要功能还是在优化模式 下工作。True 是一个很好的功能,但不是必须的。