类似于iBarShift - 页 6 12345678910111213...17 新评论 Aleksey Vyazmikin 2018.03.31 12:11 #51 Vasiliy Pushkaryov:我得到的TimeCurrent() 只是作为一种特殊情况。我现在更仔细地阅读了Bars() 函数的这个注释。"当要求在一个给定的日期范围内的酒吧数量 时,只考虑那些开盘时间在该范围内的酒吧。例如,如果当前的工作日是星期六,当要求获得start_time=lastTuesday和stop_time=lastFriday的周线数量时,函数返回0,因为周线时间框架的开盘时间总是在星期天,没有周线落入指定范围"。由于TimeCurrent() 几乎所有的时间都晚于当前条形的开盘时间,所以Bars() 函数返回0。因此,如果我们将小时时间框架上的02:05所对应的时间作为start_time 参数传递,并且我们希望2点钟开始的条形有效,那么我们必须通过CopyTime() 获得条形的开盘时间(02:00:00)。否则 ,函数Bars() 将忽略此条。例如,如果时间是3:30,我的理解是,每小时时间框架中的2:05时间指的是索引为1的条形。第2页上的所有函数都不会返回这个索引。通过这一修正,雷纳特-阿赫蒂亚莫夫的 函数返回了我预期的结果。我附上一个脚本,有4个索引查找功能的选项,我把它作为一个测试。 试了一下所提出的功能,结果发现,如果它要求的是一个不在图表上的时间的条形图,它就会说谎。例如,如果我们想知道当天的第一条,并要求提供时间 "28.03.2018 00:00"但没有该时间段的条形图,我们将得到前一天的最后一条条形图的指数。 还是注定要这样的? Renat Akhtyamov 2018.03.31 12:29 #52 Aleksey Vyazmikin:我尝试了所提出的功能,结果发现,如果要求的时间不在图表上,它就会谎报一个柱状。例如,如果我们想知道一天中的第一条,并要求提供时间 "28.03.2018 00:00"。但没有该时间段的条形图,我们将得到前一天的最后一条条形图的指数。 还是注定要这样的? 你是如何打发时间的,靠绳子? Aleksey Vyazmikin 2018.03.31 12:36 #53 Renat Akhtyamov: 你是如何打发时间的,靠绳子?我试着用一个字符串和之前发布的代码都试了一下。 int teset_01=iBarShift(_Symbol,PERIOD_CURRENT,StringToTime("30.03.2018 00:00"),false); Print ("teset_01=",teset_01); Renat Akhtyamov 2018.03.31 12:40 #54 Aleksey Vyazmikin:我试着用一个字符串和之前发布的代码来做。 在他的代码中。 int iBarShift2(string symbol, ENUM_TIMEFRAMES timeframe, datetime time) 这就是为什么不太清楚是否有假的 以及如果是的话。 int teset_01=iBarShift 2(_Symbol,PERIOD_CURRENT,StringToTime("30.03.2018 00:00")); Print ("teset_01=",teset_01);? Aleksey Vyazmikin 2018.03.31 12:42 #55 到目前为止,我已经确定了这个代码,它似乎工作得很快。 //+------------------------------------------------------------------+ //| Получим iBarShift для заданного номера бара | //+------------------------------------------------------------------+ int iBarShift3(const string Symb,const ENUM_TIMEFRAMES TimeFrame,datetime time,const bool Exact=false) { static int Res=-1; static string LastSymb=NULL; static ENUM_TIMEFRAMES LastTimeFrame=0; static datetime LastTime=0; static bool LastExact=false; static int PerSec=::PeriodSeconds(LastTimeFrame); if (LastTimeFrame!=TimeFrame) PerSec=::PeriodSeconds(TimeFrame); time-=time%PerSec; if((time!=LastTime) || (Symb!=LastSymb) || (TimeFrame!=LastTimeFrame) || (Exact!=LastExact)) { Res=::Bars(Symb,TimeFrame,time,UINT_MAX)-1; if(Res<0) Res=0; LastTime = time; LastSymb = Symb; LastTimeFrame=TimeFrame; LastExact=Exact; } return(Res); } 有没有人发现这个代码有什么缺点,或者有没有更快的选择? 啊,好吧,唯一的缺点是,如果你对一个尚未出现在图表上的条形图提出请求,即今天的时间,例如.....。也许这也有一个解决方案?在这里,返回最后一个已知的条形图就很有意义了。这可能与在当前时间 上工作的算法有关。 Aleksey Vyazmikin 2018.03.31 12:45 #56 Renat Akhtyamov:他也有同样的情况。 所以有无虚假并不十分清楚false - 为了标准化,它不会影响任何东西 :)说实话,我不知道为什么在一些函数中根本就需要这种假的? Renat Akhtyamov 2018.03.31 12:48 #57 Aleksey Vyazmikin:到目前为止,我已经确定了这个代码,它似乎工作得很快。 有没有人发现这个代码有什么缺点,或者有没有更快的选择? 啊,好吧,唯一的缺点是,如果你对一个尚未出现在图表上的条形图提出请求,即今天的时间,例如.....。也许这也有一个解决方案?在这里,返回最后一个已知的条形图就很有意义了。这可能与在当前时间 上工作的算法有关。返回一个不存在的酒吧号码是不好的。 返回-1比较容易 Renat Akhtyamov 2018.03.31 12:50 #58 Aleksey Vyazmikin:false - 为了标准化,不影响任何东西 :)说实话,我不知道为什么在一些函数中根本就需要这种假的? 我在那里迷路了,我是一个简单代码的追随者,没有冒号。 Aleksey Vyazmikin 2018.03.31 13:12 #59 Renat Akhtyamov:返回一个不存在的酒吧号码不是很好。 返回-1是比较容易的不,它应该只是返回最后一个已知的条形图,即索引为0的条形图,但现在它要花很长时间才能弄清在那里返回什么。 下面是代码,它错了一格,返回的是正确的一格--0。 还是你指的是当历史要求按时间划分的酒吧不存在的情况?然后我认为,最常见的情况是,你需要获得那些可用的最接近我们时间的条形图,在这种情况下,代码返回历史上偏移量为-1的条形图,但它工作正常,如果没有进一步的历史 - 它很快返回零条形图。 Renat Akhtyamov 2018.03.31 13:28 #60 Aleksey Vyazmikin:不,它应该只是返回最后一个已知的条形图,即索引为0的条形图,但现在它要花很长时间才能弄清在那里返回什么。 错了一格的代码,返回正确的一格--零。 还是你指的是当历史要求按时间计算的酒吧不存在的时候? 然后我认为,最常见的是我们应该得到最接近我们时间的条形图,在这种情况下,代码返回历史上偏移量为-1的条形图,但它工作正常,如果没有进一步的历史--它很快返回零条。 是的(强调)。-1是一个减号(我澄清了),函数返回的错误是没有这样的条子 就是说,我的职能。 关于交易、自动交易系统和策略测试的论坛 iBarShift的模拟 Renat Akhtyamov, 2017.06.08 01:19 这也是可能的int iBarShift(string symbol, ENUM_TIMEFRAMES timeframe, datetime tm) { datetime tm0[1]; CopyTime(symbol,timeframe,0,1,tm0); int res=Bars(symbol,timeframe,tm0[0],tm)-1; return(res); }也需要改进 虽然... 文件。 "注意。 如果在调用Bars() 函数时,具有指定参数的时间序列的数据尚未在终端生成,或者在调用函数的时刻,时间序列的数据没有与交易服务器同步,那么 函数 将返回0值。" ==== 如果res==0,我们将从函数中捕获-1,因为它是。 === 因此,这一切都很有效,利用它来发挥你的优势吧! 12345678910111213...17 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我得到的TimeCurrent() 只是作为一种特殊情况。
我现在更仔细地阅读了Bars() 函数的这个注释。
"当要求在一个给定的日期范围内的酒吧数量 时,只考虑那些开盘时间在该范围内的酒吧。例如,如果当前的工作日是星期六,当要求获得start_time=lastTuesday和stop_time=lastFriday的周线数量时,函数返回0,因为周线时间框架的开盘时间总是在星期天,没有周线落入指定范围"。
由于TimeCurrent() 几乎所有的时间都晚于当前条形的开盘时间,所以Bars() 函数返回0。因此,如果我们将小时时间框架上的02:05所对应的时间作为start_time 参数传递,并且我们希望2点钟开始的条形有效,那么我们必须通过CopyTime() 获得条形的开盘时间(02:00:00)。否则 ,函数Bars() 将忽略此条。
例如,如果时间是3:30,我的理解是,每小时时间框架中的2:05时间指的是索引为1的条形。第2页上的所有函数都不会返回这个索引。通过这一修正,雷纳特-阿赫蒂亚莫夫的 函数返回了我预期的结果。
我附上一个脚本,有4个索引查找功能的选项,我把它作为一个测试。
试了一下所提出的功能,结果发现,如果它要求的是一个不在图表上的时间的条形图,它就会说谎。例如,如果我们想知道当天的第一条,并要求提供时间 "28.03.2018 00:00"但没有该时间段的条形图,我们将得到前一天的最后一条条形图的指数。
还是注定要这样的?
我尝试了所提出的功能,结果发现,如果要求的时间不在图表上,它就会谎报一个柱状。例如,如果我们想知道一天中的第一条,并要求提供时间 "28.03.2018 00:00"。但没有该时间段的条形图,我们将得到前一天的最后一条条形图的指数。
还是注定要这样的?
你是如何打发时间的,靠绳子?
我试着用一个字符串和之前发布的代码都试了一下。
我试着用一个字符串和之前发布的代码来做。
在他的代码中。
这就是为什么不太清楚是否有假的
以及如果是的话。
?到目前为止,我已经确定了这个代码,它似乎工作得很快。
有没有人发现这个代码有什么缺点,或者有没有更快的选择?
啊,好吧,唯一的缺点是,如果你对一个尚未出现在图表上的条形图提出请求,即今天的时间,例如.....。也许这也有一个解决方案?在这里,返回最后一个已知的条形图就很有意义了。这可能与在当前时间 上工作的算法有关。
他也有同样的情况。
所以有无虚假并不十分清楚
false - 为了标准化,它不会影响任何东西 :)说实话,我不知道为什么在一些函数中根本就需要这种假的?
到目前为止,我已经确定了这个代码,它似乎工作得很快。
有没有人发现这个代码有什么缺点,或者有没有更快的选择?
啊,好吧,唯一的缺点是,如果你对一个尚未出现在图表上的条形图提出请求,即今天的时间,例如.....。也许这也有一个解决方案?在这里,返回最后一个已知的条形图就很有意义了。这可能与在当前时间 上工作的算法有关。
返回一个不存在的酒吧号码是不好的。
返回-1比较容易
false - 为了标准化,不影响任何东西 :)说实话,我不知道为什么在一些函数中根本就需要这种假的?
返回一个不存在的酒吧号码不是很好。
返回-1是比较容易的
不,它应该只是返回最后一个已知的条形图,即索引为0的条形图,但现在它要花很长时间才能弄清在那里返回什么。
下面是代码,它错了一格,返回的是正确的一格--0。
还是你指的是当历史要求按时间划分的酒吧不存在的情况?然后我认为,最常见的情况是,你需要获得那些可用的最接近我们时间的条形图,在这种情况下,代码返回历史上偏移量为-1的条形图,但它工作正常,如果没有进一步的历史 - 它很快返回零条形图。
不,它应该只是返回最后一个已知的条形图,即索引为0的条形图,但现在它要花很长时间才能弄清在那里返回什么。
错了一格的代码,返回正确的一格--零。
还是你指的是当历史要求按时间计算的酒吧不存在的时候? 然后我认为,最常见的是我们应该得到最接近我们时间的条形图,在这种情况下,代码返回历史上偏移量为-1的条形图,但它工作正常,如果没有进一步的历史--它很快返回零条。
-1是一个减号(我澄清了),函数返回的错误是没有这样的条子
就是说,我的职能。
关于交易、自动交易系统和策略测试的论坛
iBarShift的模拟
Renat Akhtyamov, 2017.06.08 01:19
这也是可能的
也需要改进
虽然...
文件。
"注意。
如果在调用Bars() 函数时,具有指定参数的时间序列的数据尚未在终端生成,或者在调用函数的时刻,时间序列的数据没有与交易服务器同步,那么 函数 将返回0值。"
====
如果res==0,我们将从函数中捕获-1,因为它是。
===
因此,这一切都很有效,利用它来发挥你的优势吧!