我如何在MQL5中获得Open,Low,High,Close参数? - 页 6 1234567891011121314 新评论 Igor Makanu 2019.07.29 21:56 #51 Artyom Trishkin: SERIES_LASTBAR_DATE出现了一些问题。很久以前在这里的某个地方讨论过这个问题。也许它被修复了。 iXXX()函数工作得很好,我已经使用了大约3个月(从我开始使用MQL5开始)--我没有发现任何错误或...- 它非常方便,一切都很好用!"。 SZZY:它的工作原理和帮助中写的一样。 参数 标志 [in] 仪器符号名称。NULL 表示当前符号。 时限 [在]期间。可以是枚举ENUM_TIMEFRAMES中的一个值。 0 表示当前图表的周期。 Реter Konow 2019.07.29 22:11 #52 Igor Makanu: 你总是只写不读吗? 我给了你一个链接,是关于新酒吧的一整篇文章!"。文章是经过检查的--由能力不同的人检查,而不是由那些经常在论坛上写作的人检查;) ZS:如果你停止写作并开始阅读,例如我链接上的文章,你可以找到另一种方法(SERIES_LASTBAR_DATE )不使用iXXX() - 我告诉你不要使用它们 ))- 谁会告诉开发人员发布的缺陷和错误是偷工减料))))) 谢谢你的链接。我不是在批评你的解决方案,只是指出了iTime的调用,它本身暗示了使用iXXX函数,这取代了摆弄CopyRates的意义。也就是说,寻找一个使用iTime的新酒吧来使用CopyRates,以便不使用iXXX函数(iTime)))。恶性循环))))。 fxsaber 2019.07.29 22:13 #53 // Для Тестера. bool IsNewBar() { static int PrevBars = 0; const int CurrBars = Bars; const bool Res = (CurrBars != PrevBars); PrevBars = CurrBars; return(Res); } Реter Konow 2019.07.29 22:14 #54 Roman: 谢谢你。 Реter Konow 2019.07.29 22:14 #55 fxsaber: 谢谢你。 fxsaber 2019.07.29 22:15 #56 在不改变源代码的情况下,将许多 MT4EAs 转换为MT5。我已将萨博特贴为Open[i]。 Artyom Trishkin 2019.07.29 22:26 #57 fxsaber: 我在不修改源代码的情况下将许多MT4 EAs转换为MT5。我把sabot贴成了Open[i]。 有没有在CopyXXX和iXXX函数之间做过性能测量?这个问题非常有趣。 到目前为止,我看到了iXXX函数的一个明显的便利用途--在移植到MQL5时,减少了对MQL4代码的重新制作。 在其他情况下(不了解性能)--选择只基于用户的偏好。 Igor Makanu 2019.07.29 22:32 #58 fxsaber: Sabz以Open[i]的形式发布。 没有注意到这个代码,检查了一下--它起作用了! ZS:我需要在明天头脑清醒的时候看看我是如何得到[]的--我试了好几次--都没有成功! // Позволяет, как в MT4, работать с таймсериями: Open[Pos], High[Pos], Low[Pos], Close[Pos], Time[Pos], Volume[Pos]. // А так же задает привычные MT4-функции: iOpen, iHigh, iLow, iClose, iTime, iVolume. #define DEFINE_TIMESERIE(NAME,FUNC,T) \ class CLASS##NAME \ { \ public: \ static T Get(const string Symb,const int TimeFrame,const int iShift) \ { \ T tValue[]; \ \ return((Copy##FUNC((Symb == NULL) ? _Symbol : Symb, _Period, iShift, 1, tValue) > 0) ? tValue[0] : -1); \ } \ \ T operator[](const int iPos) const \ { \ return(CLASS##NAME::Get(_Symbol, _Period, iPos)); \ } \ }; \ \ CLASS##NAME NAME; \ \ T i##NAME(const string Symb,const int TimeFrame,const int iShift) \ { \ return(CLASS##NAME::Get(Symb, TimeFrame, iShift)); \ } //+------------------------------------------------------------------+ DEFINE_TIMESERIE(Volume,TickVolume,long) DEFINE_TIMESERIE(Time,Time,datetime) DEFINE_TIMESERIE(Open,Open,double) DEFINE_TIMESERIE(High,High,double) DEFINE_TIMESERIE(Low,Low,double) DEFINE_TIMESERIE(Close,Close,double) void OnStart() { for(int i=0;i<10;i++) { ResetLastError(); Print("Bar№ ",i," : ",Time[i]," , O = ",Open[i]," , H = ",High[i]," , L = ",Low[i]," , C = ",Close[i]); int err=GetLastError(); if(err>0) Print("Error № ",err); } } //+------------------------------------------------------------------+ fxsaber 2019.07.29 22:42 #59 Artyom Trishkin: 有没有在CopyXXX和iXXX函数之间做过性能测量?对这个问题非常感兴趣。 我没有。我很少和酒吧打交道。没有什么应该比CopyXXX函数更快。只有当你缓存了它。 Igor Makanu 2019.07.29 22:47 #60 Artyom Trishkin:有没有在CopyXXX和iXXX函数之间做过性能测量?对这个问题非常感兴趣... fxsaber: 我没有。我很少和酒吧打交道。没有什么应该比CopyXXX函数更快。只有当你缓存了它。 测量的。 #define test(M,S,EX) {uint mss=GetTickCount();int nn=(int)pow(10,M);for(int tst=0;tst<nn&&!_StopFlag;tst++){EX;} \ printf("%s: loops=%i ms=%u",S,nn,GetTickCount()-mss);} //+------------------------------------------------------------------+ void OnStart() { double buff[]; test(10,"CopyClose",CopyClose(_Symbol,_Period,rand(),1,buff)); test(10,"iClose",iClose(NULL,0,rand())); } //+------------------------------------------------------------------+ 2019.07.30 00:44:29.156 tst_iXXX_Copy (EURUSD,H1) CopyClose: loops=1410065408 ms=69407 2019.07.30 00:45:29.408 tst_iXXX_Copy (EURUSD,H1) iClose: loops=1410065408 ms=60250 1234567891011121314 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
SERIES_LASTBAR_DATE出现了一些问题。很久以前在这里的某个地方讨论过这个问题。也许它被修复了。
iXXX()函数工作得很好,我已经使用了大约3个月(从我开始使用MQL5开始)--我没有发现任何错误或...- 它非常方便,一切都很好用!"。
SZZY:它的工作原理和帮助中写的一样。
参数
标志
[in] 仪器符号名称。NULL 表示当前符号。
时限
[在]期间。可以是枚举ENUM_TIMEFRAMES中的一个值。 0 表示当前图表的周期。
你总是只写不读吗? 我给了你一个链接,是关于新酒吧的一整篇文章!"。文章是经过检查的--由能力不同的人检查,而不是由那些经常在论坛上写作的人检查;)
ZS:如果你停止写作并开始阅读,例如我链接上的文章,你可以找到另一种方法(SERIES_LASTBAR_DATE )不使用iXXX() - 我告诉你不要使用它们 ))- 谁会告诉开发人员发布的缺陷和错误是偷工减料)))))
我在不修改源代码的情况下将许多MT4 EAs转换为MT5。我把sabot贴成了Open[i]。
有没有在CopyXXX和iXXX函数之间做过性能测量?这个问题非常有趣。
到目前为止,我看到了iXXX函数的一个明显的便利用途--在移植到MQL5时,减少了对MQL4代码的重新制作。
在其他情况下(不了解性能)--选择只基于用户的偏好。
Sabz以Open[i]的形式发布。
没有注意到这个代码,检查了一下--它起作用了!
ZS:我需要在明天头脑清醒的时候看看我是如何得到[]的--我试了好几次--都没有成功!
有没有在CopyXXX和iXXX函数之间做过性能测量?对这个问题非常感兴趣。
我没有。我很少和酒吧打交道。没有什么应该比CopyXXX函数更快。只有当你缓存了它。
有没有在CopyXXX和iXXX函数之间做过性能测量?对这个问题非常感兴趣...
我没有。我很少和酒吧打交道。没有什么应该比CopyXXX函数更快。只有当你缓存了它。
测量的。
2019.07.30 00:44:29.156 tst_iXXX_Copy (EURUSD,H1) CopyClose: loops=1410065408 ms=69407
2019.07.30 00:45:29.408 tst_iXXX_Copy (EURUSD,H1) iClose: loops=1410065408 ms=60250