类似于iBarShift - 页 7 1234567891011121314...17 新评论 Nikolai Semko 2018.04.04 06:28 #61 这里是所有TFs上最快的、正确的工作版本。 int iBarShift3(const string Symb,const ENUM_TIMEFRAMES TimeFrame,datetime time) { static int Res=-1; static string LastSymb=NULL; static ENUM_TIMEFRAMES LastTimeFrame=0; static datetime LastTime=0; static int PerSec=::PeriodSeconds(LastTimeFrame); if(LastTimeFrame!=TimeFrame) PerSec=::PeriodSeconds(TimeFrame); if(TimeFrame<PERIOD_D1) time-=time%PerSec; if((time!=LastTime) || (Symb!=LastSymb) || (TimeFrame!=LastTimeFrame)) { Res=::Bars(Symb,TimeFrame,time,UINT_MAX); if(TimeFrame<PERIOD_D1) Res--; if(Res<0) Res=0; LastTime = time; LastSymb = Symb; LastTimeFrame=TimeFrame; } return(Res); } TF D1、W1和MN1的速度减慢了 这里有一个测试指标,清楚地显示了不同版本的反应,以及它们的速度(第二个数字。 数字越小,功能越快)。 第3版和第4版都能正常工作。但第3个更快。 带有CopyTime的变体是最慢的。这可以在MQL4中检查(见所附指标)。 我没有说明不同变体的作者,因为我已经被搞糊涂了。 但第三个最有用的方法是80%来自@fxsaber。我只是稍微调整了一下。 附加的文件: TestBarShift.mq5 16 kb TestBarShift.mq4 9 kb fxsaber 2018.04.04 06:40 #62 Nikolai Semko:选项3和4都能正确工作。但3是最快的。CopyTime的变体是最慢的。 关于交易、自动交易系统和策略测试的论坛 关于 "交易者的生活秘诀:将ForEach混入定义中(#define)"的讨论 fxsaber, 2018.02.14 11:58 ZZY功能速度测量应该在一个对性能很重要的环境中进行测量--测试者。 Nikolai Semko 2018.04.04 06:45 #63 fxsaber: 测量结果在这里其实并不重要。你可以看到,该逻辑是最快的。 Aleksey Vyazmikin 2018.04.04 10:14 #64 Nikolai Semko:这里是所有TFs上最快的、正确的工作版本。 TF D1、W1和MN1的速度减慢了 这里有一个测试指标,清楚地显示了不同版本的反应,以及它们的速度(第二个数字。 数字越小,功能越快)。 第3版和第4版都能正常工作。但第3个更快。 带有CopyTime的变体是最慢的。可以在MQL4中检查(见所附指标)。 我没有指出不同变体的作者,因为我已经很困惑了。 但第三种,最有效的变体是80%来自@fxsaber。我只是稍微调整了一下。我已经在你的指标中加入了TF--前两种算法根本没有用。 在数字中,目前的TF是H1,计算是基于每日费率。 Aleksey Vyazmikin 2018.04.04 10:27 #65 Renat Akhtyamov: 是的(强调)。-1是一个1的减号(澄清),由错误函数返回,表示没有这样的酒吧 所以我的函数 还需要完善 虽然... 文件。 "注意。 如果在调用Bars() 函数时,具有指定参数的时间序列的数据尚未在终端生成,或者在调用函数的时刻,时间序列的数据没有与交易服务器同步,那么 函数 将返回0值。" ==== 如果res==0,那么我们将从函数中捕获-1,因为它是。 === 因此,这一切都很有效,利用它来发挥你的优势吧!在上面的指标上,你可以清楚地看到这种方法是多么错误。 Vitaly Muzichenko 2018.04.04 10:53 #66 Nikolai Semko:这里是所有TFs上最快的、正确的工作版本。 TF D1、W1和MN1的速度减慢了 这里有一个测试指标,清楚地显示了不同版本的反应,以及它们的速度(第二个数字。 数字越小,功能越快)。 第3版和第4版都能正常工作。但第3个更快。 带有CopyTime的变体是最慢的。可以在MQL4上检查(见所附指标)。 我没有说明不同变体的作者,因为我已经被搞糊涂了。 但第三种,最有效的变体是80%来自@fxsaber。我只是稍微调整了一下。iBarShift3 变体不能正常工作。 Evgeniy Kvasov 2018.04.04 11:03 #67 这是我的版本。似乎对初级和高级框架都有效。速度比iBarshift3快一点。 int iBarShift(string symbol, ENUM_TIMEFRAMES timeframe, datetime time){datetime t1 = TimeCurrent()+10000000;int ps = PeriodSeconds(timeframe);double div = time/(double)ps;double mant = div - MathFloor(div)。int ret = Bars(symbol, timeframe, (datetime)(time(ps*mant)), t1)-1;return(ret)。} Aleksey Vyazmikin 2018.04.04 11:38 #68 Vitaly Muzichenko:iBarShift3 选项不能正确工作。我可以有一个不能正常工作的例子吗? 那么就只剩下第四个方案了? Nikolai Semko 2018.04.04 12:20 #69 Vitaly Muzichenko:iBarShift3 选项不能正常工作。词汇是我们的一切。 Vitaly Muzichenko 2018.04.04 12:32 #70 Nikolai Semko:词汇是我们的一切。我做了一个快速检查:有一个函数已经工作了一天多,我用iBarShift3 代替,得到的EA工作不正确。这就是我得出的结论。 这是我使用的一种方法 int iBarShift(string symbol,ENUM_TIMEFRAMES timeframe,datetime time,bool exact=false) { datetime LastBAR; if(!SeriesInfoInteger(symbol,timeframe,SERIES_LASTBAR_DATE,LastBAR)) { datetime opentimelastbar[1]; if(CopyTime(symbol,timeframe,0,1,opentimelastbar)==1) LastBAR=opentimelastbar[0]; else return(-1); } //--- if time > LastBar we always return 0 if(time>LastBAR) return(0); //--- int shift=Bars(symbol,timeframe,time,LastBAR); datetime checkcandle[1]; if(CopyTime(symbol,timeframe,time,1,checkcandle)==1) { if(checkcandle[0]==time) return(shift-1); else if(exact && time>checkcandle[0]+PeriodSeconds(timeframe)) return(-1); else return(shift); } return(-1); } 1234567891011121314...17 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这里是所有TFs上最快的、正确的工作版本。
TF D1、W1和MN1的速度减慢了
这里有一个测试指标,清楚地显示了不同版本的反应,以及它们的速度(第二个数字。 数字越小,功能越快)。
第3版和第4版都能正常工作。但第3个更快。
带有CopyTime的变体是最慢的。
这可以在MQL4中检查(见所附指标)。
我没有说明不同变体的作者,因为我已经被搞糊涂了。
但第三个最有用的方法是80%来自@fxsaber。我只是稍微调整了一下。
选项3和4都能正确工作。但3是最快的。CopyTime的变体是最慢的。
关于交易、自动交易系统和策略测试的论坛
关于 "交易者的生活秘诀:将ForEach混入定义中(#define)"的讨论
fxsaber, 2018.02.14 11:58
ZZY功能速度测量应该在一个对性能很重要的环境中进行测量--测试者。
测量结果在这里其实并不重要。你可以看到,该逻辑是最快的。
这里是所有TFs上最快的、正确的工作版本。
TF D1、W1和MN1的速度减慢了
这里有一个测试指标,清楚地显示了不同版本的反应,以及它们的速度(第二个数字。 数字越小,功能越快)。
第3版和第4版都能正常工作。但第3个更快。
带有CopyTime的变体是最慢的。
可以在MQL4中检查(见所附指标)。
我没有指出不同变体的作者,因为我已经很困惑了。
但第三种,最有效的变体是80%来自@fxsaber。我只是稍微调整了一下。
我已经在你的指标中加入了TF--前两种算法根本没有用。
在数字中,目前的TF是H1,计算是基于每日费率。
是的(强调)。
-1是一个1的减号(澄清),由错误函数返回,表示没有这样的酒吧
所以我的函数
还需要完善
虽然...
文件。
"注意。
如果在调用Bars() 函数时,具有指定参数的时间序列的数据尚未在终端生成,或者在调用函数的时刻,时间序列的数据没有与交易服务器同步,那么 函数 将返回0值。"
====
如果res==0,那么我们将从函数中捕获-1,因为它是。
===
因此,这一切都很有效,利用它来发挥你的优势吧!
在上面的指标上,你可以清楚地看到这种方法是多么错误。
这里是所有TFs上最快的、正确的工作版本。
TF D1、W1和MN1的速度减慢了
这里有一个测试指标,清楚地显示了不同版本的反应,以及它们的速度(第二个数字。 数字越小,功能越快)。
第3版和第4版都能正常工作。但第3个更快。
带有CopyTime的变体是最慢的。
可以在MQL4上检查(见所附指标)。
我没有说明不同变体的作者,因为我已经被搞糊涂了。
但第三种,最有效的变体是80%来自@fxsaber。我只是稍微调整了一下。
iBarShift3 变体不能正常工作。
这是我的版本。似乎对初级和高级框架都有效。速度比iBarshift3快一点。
int iBarShift(string symbol, ENUM_TIMEFRAMES timeframe, datetime time){
datetime t1 = TimeCurrent()+10000000;
int ps = PeriodSeconds(timeframe);
double div = time/(double)ps;
double mant = div - MathFloor(div)。
int ret = Bars(symbol, timeframe, (datetime)(time(ps*mant)), t1)-1;
return(ret)。
}
iBarShift3 选项不能正确工作。
我可以有一个不能正常工作的例子吗?
那么就只剩下第四个方案了?
iBarShift3 选项不能正常工作。
词汇是我们的一切。
词汇是我们的一切。
我做了一个快速检查:有一个函数已经工作了一天多,我用iBarShift3 代替,得到的EA工作不正确。这就是我得出的结论。
这是我使用的一种方法