MetaTrader 5策略测试器:缺陷,缺陷,改进建议 - 页 47 1...404142434445464748495051525354...84 新评论 Aleksey Sergan 2020.01.08 05:48 #461 traveller00:建2280。交易所、期货市场。所有的历史记录都被加载,但测试是离线进行的。iBarShift在指标中的工作很奇怪。而同样的代码在脚本中运行良好。这是一个错误还是我错过了什么?有这样一个代码。它基本上贯穿了市场回顾中的所有符号,并拉出了iBarShift。同样的代码在脚本中运行良好。该指标对所有的符号都产生-1,除了当前的符号(在它运行的图表上),错误是没有历史记录。同时,在第二次运行时,它加载历史记录并正常显示。 指标中数据的可用性是不保证的,所以你应该检查数据检索的成功率。如果失败了,就在OnCalculate 中重试。在OnInit 中引用数据并不是一个好主意。 #property indicator_separate_window void OnInit() { } int OnCalculate(const int rates_total,const int prev_calculated,const datetime& time[],const double& open[],const double& high[], const double& low[],const double& close[],const long& tick_volume[],const long& volume[],const int& spread[]) { static bool printed = false; if( !printed ){ printed = TryToPrint(); } return 0; } bool TryToPrint(){ datetime Time[]; ArraySetAsSeries(Time, true); Print("try"); if( CopyTime(_Symbol,_Period,0,1,Time) != 1 )return false; int Shift=iBarShift(_Symbol,_Period,Time[0]); bool fail = false; if( Shift < 0 )fail = true; string toprint = "Symbol="+_Symbol+", Shift="+(string)Shift; for(int i=0;i!=SymbolsTotal(true);++i) { const string SymbName=SymbolName(i,true); Shift=iBarShift(SymbName,_Period,Time[0]); if( Shift < 0 )fail = true; toprint = toprint + "\r\n" + "Symbol="+SymbName+", Shift="+(string)Shift; } if( !fail ) Print( toprint ); return !fail; } fxsaber 2020.01.08 08:30 #462 服务器名称并不总是显示在缓存记录中。 fxsaber 2020.01.08 10:07 #463 在tst格式中,交易/订单的时间只以秒为单位(数据时间)。没有毫秒之分。 fxsaber 2020.01.09 06:30 #464 这样的EA不生成tst文件,这是否正确?input int i = 0; void OnInit() {} 必须满足什么条件才能创建一个单程缓存? Slava 2020.01.09 06:59 #465 fxsaber: 这样的EA不生成tst文件,这是否正确? 必须满足什么条件才能创建一个单通缓存? 是的,正确。 如果没有交易,tst文件就不会被保存。 fxsaber 2020.01.09 08:40 #466 Slava: 是的,这是正确的。 如果没有交易,tst文件就不会被保存。 谢谢你。 Andrey Pogoreltsev 2020.01.09 10:25 #467 我将重复我的问题(显然它被丢失了)。 开发人员,有一个问题要问你。是否可以定制遗传算法的 参数?例如,设置停止和突变标准? 我经常遇到这样的情况:在达到极值之前就出现了停止。 还有一个问题。你是否打算实现其他方法,例如模拟退火? GAGARIN 2020.01.09 13:16 #468 大家好,从mt4切换到mt5,不明白如何在测试器中保存设置文件。请您提供建议。只能找到如何保存ini和opt的方法。 Andrey Pogoreltsev 2020.01.10 08:58 #469 我在测试器中运行机器人。我在某一符号上进行交易。我通过OnTimer输入,并从SymbolInfoTick中获取报价。 如果我使用不同的符号(当我在同一符号上交易时),那么由于某些原因,我的结果会有很大的不同。可能有人遇到过这个问题?我目前正在更详细地研究这种行为。 PS。每一个刻度 都是基于真实的刻度,完美的执行,没有任何延迟。 Andrey Pogoreltsev 2020.01.10 10:39 #470 我已经明白了。如果你有兴趣,为了节省CPU资源,我在OnTimer中检查TimeCurrent,如果它在上次更新后没有变化,就不需要做什么。如果没有报价,状态是一样的。如果你跟踪交易时段,这是一个非常消耗的操作。 对于多个符号来说,一切工作正常。但当他们只有两个人的时候--一切都取决于报价,而报价的到来和开始转移开仓的时间和其他事情。因此,策略测试器中 的结果是不同的。 PS。一般来说,我将通过SymbolInfoTick 单独检查符号状态 1...404142434445464748495051525354...84 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
建2280。交易所、期货市场。所有的历史记录都被加载,但测试是离线进行的。iBarShift在指标中的工作很奇怪。而同样的代码在脚本中运行良好。这是一个错误还是我错过了什么?
有这样一个代码。它基本上贯穿了市场回顾中的所有符号,并拉出了iBarShift。同样的代码在脚本中运行良好。该指标对所有的符号都产生-1,除了当前的符号(在它运行的图表上),错误是没有历史记录。同时,在第二次运行时,它加载历史记录并正常显示。
指标中数据的可用性是不保证的,所以你应该检查数据检索的成功率。如果失败了,就在OnCalculate 中重试。在OnInit 中引用数据并不是一个好主意。
服务器名称并不总是显示在缓存记录中。
必须满足什么条件才能创建一个单程缓存?
这样的EA不生成tst文件,这是否正确?
必须满足什么条件才能创建一个单通缓存?
是的,正确。
如果没有交易,tst文件就不会被保存。
是的,这是正确的。
如果没有交易,tst文件就不会被保存。
谢谢你。
开发人员,有一个问题要问你。是否可以定制遗传算法的 参数?例如,设置停止和突变标准?
我经常遇到这样的情况:在达到极值之前就出现了停止。
还有一个问题。你是否打算实现其他方法,例如模拟退火?
我在测试器中运行机器人。我在某一符号上进行交易。我通过OnTimer输入,并从SymbolInfoTick中获取报价。
如果我使用不同的符号(当我在同一符号上交易时),那么由于某些原因,我的结果会有很大的不同。可能有人遇到过这个问题?我目前正在更详细地研究这种行为。
PS。每一个刻度 都是基于真实的刻度,完美的执行,没有任何延迟。我已经明白了。如果你有兴趣,为了节省CPU资源,我在OnTimer中检查TimeCurrent,如果它在上次更新后没有变化,就不需要做什么。如果没有报价,状态是一样的。如果你跟踪交易时段,这是一个非常消耗的操作。
对于多个符号来说,一切工作正常。但当他们只有两个人的时候--一切都取决于报价,而报价的到来和开始转移开仓的时间和其他事情。因此,策略测试器中 的结果是不同的。
PS。一般来说,我将通过SymbolInfoTick 单独检查符号状态