类似于iBarShift - 页 5 123456789101112...17 新评论 Andrey Khatimlianskii 2018.03.30 14:19 #41 Aleksey Vyazmikin:为什么脚本这么慢? 答案就在剖析器中。 Aleksey Vyazmikin 2018.03.30 14:35 #42 Andrey Khatimlianskii:答案就在剖析器中。好了,剖析器提到了这段代码 Res=::Bars(Symb,TimeFrame,time,UINT_MAX)-1; 它不喜欢什么?这个功能不是我的,但上面的作者声称它应该能快速工作... Nikolai Semko 2018.03.30 15:23 #43 Aleksey Vyazmikin:好了,剖析器提到了这段代码那它不喜欢什么呢?这个功能不是我的,但上面的作者声称它应该能快速工作...我不太理解这种幽默,你为什么要重载MQL4的iBarShift 函数?编译器可能因此而感到困惑。 iBarShift2函数是为MQL5设计的,在MQL4中,它只通过与标准函数的比较来测试其执行的正确性。 Konstantin Nikitin 2018.03.30 15:28 #44 Nikolai Semko:我不明白你的幽默,你为什么要重载MQL4的iBarShift函数?编译器可能因此而感到困惑。没有人取消 #ifdef __MQL5__ /**************************/ #else /**************************/ #endif 而且不应该有任何混淆。 Aleksey Vyazmikin 2018.03.30 15:30 #45 Nikolai Semko:我不明白这种幽默,你为什么要重载MQL4的iBarShift函数?编译器可能因此而感到困惑。 iBarShift2函数是为MQL5设计的,在MQL4中,它只测试其执行的正确性,与标准函数进行比较。我想我没有注意,但我又看了看你的帖子--即你对MT4的功能?只是这个话题是关于MT5的,我想这就是误导我的原因。 我补充说:该死的,我又发现了一个代码,都是模糊的,我道歉。 Nikolai Semko 2018.03.30 15:52 #46 Aleksey Vyazmikin:我想我没有注意,但我又看了看你的帖子--即你对MT4的功能?只是这个话题是关于MT5的,我想这就是误导我的原因。 补充:妈的,就是这样--发现了另一个代码--都变模糊了,抱歉。哇。没有。我在MQL5中尝试了你的代码,但感到很困惑。现在我明白你的意思了。 这里有一张有趣的图片。 如果你的脚本在原生的TF=1日运行,那么一切都很好。 但如果我在另一个TF上运行它,我就会得到令人难以置信的不相称的滞后,我还不能解释,除了编译器的一些错误。 同时,在调试模式或剖析模式 下,没有这些刹车!!。 我现在要做实验,寻找刹车的来源。 Alexey Viktorov 2018.03.30 16:27 #47 Nikolai Semko:哇哦。没有。我在MQL5中尝试了你的代码,但感到很困惑。我现在明白你的意思了。 这里有一张有趣的图片。 如果你的脚本在原生的TF=1日运行,那么一切都很好。 但如果我在另一个TF上运行它,我就会得到令人难以置信的不相称的滞后,我还不能解释,除了编译器的一些错误。 同时,在调试模式或剖析模式 下,没有这些刹车!!。 我现在要做实验,寻找刹车的来源。通过替换一个正常的日期时间值来开始你的搜索 Res=::Bars(Symb,TimeFrame,time,UINT_MAX)-1; Nikolai Semko 2018.03.30 18:25 #48 Aleksey Vyazmikin:为什么脚本这么慢?是的,这很令人惊讶。 我已经定位了刹车的位置。 //+------------------------------------------------------------------+ //| iBarShift.mq5 | //| Copyright 2017, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #property script_show_inputs input ENUM_TIMEFRAMES TF=PERIOD_D1; input int Bar=3; input int calcN=1; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { for(int index=0;index<calcN;index++) { Print("0"); datetime T=iTime(_Symbol,PERIOD_CURRENT,index); Print("00 "+ TimeToString(T)); int Day_Shift=iBarShift(_Symbol,TF,T,false); Print("1"); int Start=iBarShift(_Symbol,PERIOD_CURRENT,iTime(_Symbol,TF,Bar+Day_Shift),false); Print("2"); int Stop=iBarShift(_Symbol,PERIOD_CURRENT,iTime(_Symbol,TF,Day_Shift),false); Print("3"); if(index<3)Print("1 Start=",Start," Stop=",Stop," Day_Shift=",Day_Shift," index=",index); Print("4"); if(index<3)Print("1 Start=",TimeToString(iTime(_Symbol,TF,Bar+Day_Shift),TIME_DATE|TIME_MINUTES), " Stop=",TimeToString(iTime(_Symbol,TF,Day_Shift),TIME_DATE|TIME_MINUTES), " Day_Shift=",TimeToString(iTime(_Symbol,PERIOD_CURRENT,index),TIME_DATE|TIME_MINUTES)," index=",index); } Print("5"); } //+------------------------------------------------------------------+ //| Получим iBarShift для заданного номера бара | //+------------------------------------------------------------------+ int iBarShift(const string Symb,const ENUM_TIMEFRAMES TimeFrame,datetime time,bool exact=false) { static int Res=-1; static string LastSymb=NULL; static ENUM_TIMEFRAMES LastTimeFrame=0; static datetime LastTime=0; if((time!=LastTime) || (Symb!=LastSymb) || (TimeFrame!=LastTimeFrame)) { Print("10"); Res=::Bars(Symb,TimeFrame,time,UINT_MAX)-1; Print("11"); if(Res<0) Res=0; LastTime = time; LastSymb = Symb; LastTimeFrame=TimeFrame; } return(Res); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ datetime iTime(string symbol,ENUM_TIMEFRAMES tf,int index) { if(index < 0) return(-1); datetime Arr[]; if(CopyTime(symbol,tf,index,1,Arr)>0) return(Arr[0]); else return(-1); } //+------------------------------------------------------------------+ 如果你在例如H4上运行这个脚本 你可以看到,它第一次访问的是 Res=::Bars(Symb,TimeFrame,time,UINT_MAX)-1; 系统就会冻结。 而在剖析或调试时,这种昏昏沉沉的状态并不存在。 服务台的 一个明确问题 Nikolai Semko 2018.03.30 23:12 #49 Aleksey Vyazmikin:为什么脚本这么慢? 2018.03.30 09:21:05.208 BS (Si Splice,H4) 1 Start=15 Stop=3 Day_Shift=0 index=02018.03.30 09:21:05.208 BS (Si Splice,H4) 1 Start=2018.03.26 00:00 Stop=2018.03.29 00:00 Day_Shift=2018.03.29 20:00 index=02018.03.30 09:21:20.209 BS (Si Splice,H4) 2 Start=15 Stop=3 Day_Shift=0 index=02018.03.30 09:21:20.209 BS (Si Splice,H4) 2 Start=2018.03.26 00:00 Stop=2018.03.29 00:00 Day_Shift=2018.03.29 20:00 index=0 2018.03.30 09:20:49.300 Scripts script BS (Si Splice,H4) loaded successfully 2018.03.30 09:21:20.209 Scripts script BS (Si Splice,H4) removed 谢谢阿列克谢的意见。 这是Bars()函数中一个明显的错误。 在bug、bug、question 线程中开放了问题 Aleksey Vyazmikin 2018.03.30 23:57 #50 Nikolai Semko:谢谢阿列克谢的意见。 这是Bars()函数中一个明显的错误。 在bug、bug、question 线程中开设了一个问题 谢谢你的分析,所以我还没有完全疯了...... 123456789101112...17 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
为什么脚本这么慢?
答案就在剖析器中。
答案就在剖析器中。
好了,剖析器提到了这段代码
它不喜欢什么?这个功能不是我的,但上面的作者声称它应该能快速工作...
好了,剖析器提到了这段代码
那它不喜欢什么呢?这个功能不是我的,但上面的作者声称它应该能快速工作...
我不太理解这种幽默,你为什么要重载MQL4的iBarShift 函数?编译器可能因此而感到困惑。
iBarShift2函数是为MQL5设计的,在MQL4中,它只通过与标准函数的比较来测试其执行的正确性。
我不明白你的幽默,你为什么要重载MQL4的iBarShift函数?编译器可能因此而感到困惑。
没有人取消
而且不应该有任何混淆。
我不明白这种幽默,你为什么要重载MQL4的iBarShift函数?编译器可能因此而感到困惑。
iBarShift2函数是为MQL5设计的,在MQL4中,它只测试其执行的正确性,与标准函数进行比较。
我想我没有注意,但我又看了看你的帖子--即你对MT4的功能?只是这个话题是关于MT5的,我想这就是误导我的原因。
我补充说:该死的,我又发现了一个代码,都是模糊的,我道歉。
我想我没有注意,但我又看了看你的帖子--即你对MT4的功能?只是这个话题是关于MT5的,我想这就是误导我的原因。
补充:妈的,就是这样--发现了另一个代码--都变模糊了,抱歉。
哇。没有。我在MQL5中尝试了你的代码,但感到很困惑。现在我明白你的意思了。
这里有一张有趣的图片。
如果你的脚本在原生的TF=1日运行,那么一切都很好。
但如果我在另一个TF上运行它,我就会得到令人难以置信的不相称的滞后,我还不能解释,除了编译器的一些错误。
同时,在调试模式或剖析模式 下,没有这些刹车!!。
我现在要做实验,寻找刹车的来源。
哇哦。没有。我在MQL5中尝试了你的代码,但感到很困惑。我现在明白你的意思了。
这里有一张有趣的图片。
如果你的脚本在原生的TF=1日运行,那么一切都很好。
但如果我在另一个TF上运行它,我就会得到令人难以置信的不相称的滞后,我还不能解释,除了编译器的一些错误。
同时,在调试模式或剖析模式 下,没有这些刹车!!。
我现在要做实验,寻找刹车的来源。
通过替换一个正常的日期时间值来开始你的搜索
为什么脚本这么慢?
是的,这很令人惊讶。
我已经定位了刹车的位置。
如果你在例如H4上运行这个脚本
你可以看到,它第一次访问的是
系统就会冻结。
而在剖析或调试时,这种昏昏沉沉的状态并不存在。
服务台的 一个明确问题
为什么脚本这么慢?
2018.03.30 09:21:05.208 BS (Si Splice,H4) 1 Start=15 Stop=3 Day_Shift=0 index=0
2018.03.30 09:21:05.208 BS (Si Splice,H4) 1 Start=2018.03.26 00:00 Stop=2018.03.29 00:00 Day_Shift=2018.03.29 20:00 index=0
2018.03.30 09:21:20.209 BS (Si Splice,H4) 2 Start=15 Stop=3 Day_Shift=0 index=0
2018.03.30 09:21:20.209 BS (Si Splice,H4) 2 Start=2018.03.26 00:00 Stop=2018.03.29 00:00 Day_Shift=2018.03.29 20:00 index=0
2018.03.30 09:20:49.300 Scripts script BS (Si Splice,H4) loaded successfully
2018.03.30 09:21:20.209 Scripts script BS (Si Splice,H4) removed谢谢阿列克谢的意见。
这是Bars()函数中一个明显的错误。
在bug、bug、question 线程中开放了问题
谢谢阿列克谢的意见。
这是Bars()函数中一个明显的错误。
在bug、bug、question 线程中开设了一个问题
谢谢你的分析,所以我还没有完全疯了......