错误、漏洞、问题 - 页 1936 1...192919301931193219331934193519361937193819391940194119421943...3184 新评论 Renat Fatkhullin 2017.07.21 09:00 #19351 Aleksey Vyazmikin:还没有准备好展示代码,因为但准备显示MT5的剖析结果--据我所知,交易功能是不存在的。对于OHLC环境,我使用以下功能 也许我做错了什么?不幸的是,你所做的一切都错了。你没有写一个原生和高效的MQL5代码,而是使用一个效率极低的MQL4模拟器,使操作速度 降低了几十倍。 糟糕的是,你甚至不知道自己在做什么,因为你在问关于速度的问题。 fxsaber 2017.07.21 09:07 #19352 Aleksey Vyazmikin:结果是以下代码https://www.mql5.com/ru/code/18305 Высокопроизводительная библиотека iTimeSeries 投票: 192017.05.25nicholishenwww.mql5.com Эта библиотека предоставляет молниеносный доступ к таймсериям для реализации привычных методов MQL4 (например, iBarShift) в чувствительных к задержкам приложениях на MQL5. Aleksey Vyazmikin 2017.07.21 12:14 #19353 fxsaber:https://www.mql5.com/ru/code/18305谢谢--我见过这个图书馆--描述很混乱大部分时间是在初始化阶段。除非你打算多次访问时间序列数据--在条形图形成期间超过几千次--否则你应该考虑其他方法。 我的专家顾问只在条形图开盘时工作--你认为尝试一下有意义吗? Aleksey Vyazmikin 2017.07.21 12:27 #19354 Renat Fatkhullin:不幸的是,你的做法完全错误。你没有写一个原生和高效的MQL5代码,而是使用一个效率极低的MQL4模拟器,这使操作速度降低了几十倍。 糟糕的是,你甚至不明白你在做什么,因为你在问关于速度的问题。当然,我一直在寻找解决方案--如何用MQL5替换MQL4函数,特别是指时间序列,并看到这是大多数人转移到MQL5所遇到的问题之一。因此,我在同一个网站上找到了解决方案,其中一篇文章推荐了我的方法。就个人而言,我不明白为什么要把一个好的、方便的功能从语言中排除出去。因此,我的问题是,什么是接收信息的正确方式,以及你如何利用MQL5 的优势? Renat Fatkhullin 2017.07.21 12:55 #19355 Aleksey Vyazmikin:所以我的问题是:如何正确组织数据接收,以感受MQL5的 优势?要使用MQL5的原生的、更有成效的功能,而不是死守MQL4的代码。任何MQL4->MQL5转换器/分流器的性能都要慢几十倍,因为它试图通过MQL5批量操作来模拟MQL4的直接访问微函数。而模拟是在完全没有优化和缓存的情况下进行的。在使用一个特定的函数(一段代码,包括其他人的代码)的根源上,应该了解到底在做什么。否则,你会得到 "我刚刚使用了别人的代码,速度就下降了!"。如果不了解这个工具以及你在用它做什么,你就不能得到一个好的结果。 除了 "如何做好 "之外,我还应该澄清,只要你超过了对一种语言的最基本操作(甚至不是理解,而是操作)水平,"学习编程 "的任务就非常困难。所以我认为除了阅读大量的文章、文档、图书馆中现成的代码和强制练习几年外,没有其他的学习方法。 Aleksey Vyazmikin 2017.07.21 13:10 #19356 Renat Fatkhullin:使用MQL5语言的原生的、更有成效的功能,不要拘泥于MQL4的代码。使用一个特定的函数(一段代码,包括其他人的代码)的根源应该是了解正在做什么。否则,你会得到 "我刚刚使用了别人的代码,看--速度下降了!"。如果不了解这个工具以及你在用它做什么,你就不能得到一个好的结果。 除了 "如何做好它",我还应该澄清,一旦你超过了最基本的语言操作(甚至不是理解,而是操作)水平,"学习编程 "的任务是非常困难的。这就是为什么我认为除了阅读文章、文档、图书馆中的现成代码和几年的强制性实践外,没有其他学习方法。雷纳特,你看了代码库吗?我有一些代码,其中有从MQL4改编的函数。我特别要求你写出如何获得关于环境的正确信息--提及抽象的书籍是没有效果的,只会加强我(可能是错误的)的想法,即这只是你无法检查的借口。如果说我笨到不明白函数的含义,也就是把信息复制到数组中,那就说明编程语言的配套文档很低。我不明白这种从一个数组复制到另一个数组的好处,为什么一个根据需要从数组中获取信息的函数是可怕的代码。 Alexey Viktorov 2017.07.21 13:42 #19357 Aleksey Vyazmikin:当然,我一直在寻找一个解决方案--如何用MQL5替换MQL4函数,特别是指时间序列,并看到这是大多数人转移到MQL5所遇到的问题之一。因此,我在同一个网站上找到了解决方案,其中一篇文章推荐了我的方法。就个人而言,我不明白为什么要把一个好的、方便的功能从语言中排除出去。这就是为什么我问你,什么是正确的信息接收方式,让我感受到MQL5的 优势?也许我搜索得不好?在这里, 你有你需要的一切,而不是所有这些代码都在一个副本中 关于交易、自动交易系统和策略测试的论坛 错误, 漏洞, 问题 Aleksey Vyazmikin, 2017.07.21 01:20 谢谢 - 纠正了。结果是,代码如下//------------------------------------------------------------------- //==MQL4toMQL5 //+------------------------------------------------------------------+ //| Получим Open для заданного номера бара | //+------------------------------------------------------------------+ double Open(int index) { double open=0; int copied=CopyOpen(Symbol(),0,index,1,Open); if(copied>0) open=Open[0]; return(open); } //+------------------------------------------------------------------+ //| Получим Low для заданного номера бара | //+------------------------------------------------------------------+ double Low(int index) { double low=0; int copied=CopyLow(Symbol(),0,index,1,Low); if(copied>0) low=Low[0]; return(low); } //+------------------------------------------------------------------+ //| Получим High для заданного номера бара | //+------------------------------------------------------------------+ double High(int index) { double high=0; int copied=CopyHigh(Symbol(),0,index,1,High); if(copied>0) high=High[0]; return(high); } //+------------------------------------------------------------------+ //| Получим Close для заданного номера бара | //+------------------------------------------------------------------+ double Close(int index) { double close=0; int copied=CopyClose(Symbol(),0,index,1,Close); if(copied>0) close=Close[0]; return(close); } //+------------------------------------------------------------------+ //| Получим IOpen для заданного номера бара | //+------------------------------------------------------------------+ double iOpen(string symbol,ENUM_TIMEFRAMES timeframe,int index) { double open=0; int copied=CopyOpen(symbol,timeframe,index,1,OpenI); if(copied>0) open=OpenI[0]; return(open); } //+------------------------------------------------------------------+ //| Получим iLow для заданного номера бара | //+------------------------------------------------------------------+ double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index) { double low=0; int copied=CopyLow(symbol,timeframe,index,1,LowI); if(copied>0) low=LowI[0]; return(low); } //+------------------------------------------------------------------+ //| Получим iHigh для заданного номера бара | //+------------------------------------------------------------------+ double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index) { double high=0; int copied=CopyHigh(symbol,timeframe,index,1,HighI); if(copied>0) high=HighI[0]; return(high); } //+------------------------------------------------------------------+ //| Получим iClose для заданного номера бара | //+------------------------------------------------------------------+ double iClose(string symbol,ENUM_TIMEFRAMES timeframe,int index) { double close=0; int copied=CopyClose(symbol,timeframe,index,1,CloseI); if(copied>0) close=CloseI[0]; return(close); }在测试器中的时间增加了 - 已经厌倦了等待:)为了使用它,你只需要了解什么是结构struct MqlRates { datetime time; // время начала периода double open; // цена открытия double high; // наивысшая цена за период double low; // наименьшая цена за период double close; // цена закрытия long tick_volume; // тиковый объем int spread; // спред long real_volume; // биржевой объем }; Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates www.mql5.com Доступ к таймсериям и индикаторам / CopyRates - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Aleksey Vyazmikin 2017.07.21 14:10 #19358 Alexey Viktorov:也许我看得不够仔细?在这里,在一个副本中,你可以得到你需要的一切,而不是所有这些代码为了使用这个,你所要做的就是了解什么是结构我们得到了同样的东西--事实上...你建议的变体适合ifle。- 计算只发生在一个酒吧的开幕式上。- 你事先知道需要多少条我的代码里有循环,计算量可能事先不知道。而且,如果简单地添加一个新条目的信息会更合理,那么每次我们打开它时复制300个条目的信息有什么意义呢--为什么开发者不这样做? Renat Fatkhullin 2017.07.21 14:42 #19359 我很抱歉,但我绝对没有时间来处理教每个初学者编程的问题。特别是当你看到这个人甚至没有经过了解编程的基础知识,他就问一些琐碎的事情。 但我会给你指明方向。MQL5文件代码库文章论坛(不是 "为我写,你为什么不教我,做我的工作?"的模式)。自由职业者(他们可以在这里正确书写)。独立工作,深思熟虑地分析 "为什么这个包装器要减慢速度,浪费资源,也许要重写优化?" 使用剖析器,显示每行代码中的真实资源消耗情况 Профилирование кода - Разработка программ - Справка по MetaEditor www.metatrader5.com Профилирование — это сбор характеристик программы, таких как время выполнения отдельных ее фрагментов (функций, строк). В MetaEditor встроена... Alexey Viktorov 2017.07.21 14:54 #19360 我不希望以这种方式进行交流。人们不是试图理解所说的内容,弄清楚将要发生的事情,而是抛出了一些令人难以置信的反对意见。 1...192919301931193219331934193519361937193819391940194119421943...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
还没有准备好展示代码,因为
但准备显示MT5的剖析结果--据我所知,交易功能是不存在的。
也许我做错了什么?对于OHLC环境,我使用以下功能
不幸的是,你所做的一切都错了。
你没有写一个原生和高效的MQL5代码,而是使用一个效率极低的MQL4模拟器,使操作速度 降低了几十倍。
糟糕的是,你甚至不知道自己在做什么,因为你在问关于速度的问题。结果是以下代码
https://www.mql5.com/ru/code/18305
https://www.mql5.com/ru/code/18305
谢谢--我见过这个图书馆--描述很混乱
大部分时间是在初始化阶段。除非你打算多次访问时间序列数据--在条形图形成期间超过几千次--否则你应该考虑其他方法。
不幸的是,你的做法完全错误。
你没有写一个原生和高效的MQL5代码,而是使用一个效率极低的MQL4模拟器,这使操作速度降低了几十倍。
糟糕的是,你甚至不明白你在做什么,因为你在问关于速度的问题。当然,我一直在寻找解决方案--如何用MQL5替换MQL4函数,特别是指时间序列,并看到这是大多数人转移到MQL5所遇到的问题之一。
因此,我在同一个网站上找到了解决方案,其中一篇文章推荐了我的方法。
就个人而言,我不明白为什么要把一个好的、方便的功能从语言中排除出去。
因此,我的问题是,什么是接收信息的正确方式,以及你如何利用MQL5 的优势?
所以我的问题是:如何正确组织数据接收,以感受MQL5的 优势?
要使用MQL5的原生的、更有成效的功能,而不是死守MQL4的代码。任何MQL4->MQL5转换器/分流器的性能都要慢几十倍,因为它试图通过MQL5批量操作来模拟MQL4的直接访问微函数。而模拟是在完全没有优化和缓存的情况下进行的。
在使用一个特定的函数(一段代码,包括其他人的代码)的根源上,应该了解到底在做什么。否则,你会得到 "我刚刚使用了别人的代码,速度就下降了!"。如果不了解这个工具以及你在用它做什么,你就不能得到一个好的结果。
除了 "如何做好 "之外,我还应该澄清,只要你超过了对一种语言的最基本操作(甚至不是理解,而是操作)水平,"学习编程 "的任务就非常困难。所以我认为除了阅读大量的文章、文档、图书馆中现成的代码和强制练习几年外,没有其他的学习方法。
使用MQL5语言的原生的、更有成效的功能,不要拘泥于MQL4的代码。
使用一个特定的函数(一段代码,包括其他人的代码)的根源应该是了解正在做什么。否则,你会得到 "我刚刚使用了别人的代码,看--速度下降了!"。如果不了解这个工具以及你在用它做什么,你就不能得到一个好的结果。
除了 "如何做好它",我还应该澄清,一旦你超过了最基本的语言操作(甚至不是理解,而是操作)水平,"学习编程 "的任务是非常困难的。这就是为什么我认为除了阅读文章、文档、图书馆中的现成代码和几年的强制性实践外,没有其他学习方法。
雷纳特,你看了代码库吗?我有一些代码,其中有从MQL4改编的函数。
我特别要求你写出如何获得关于环境的正确信息--提及抽象的书籍是没有效果的,只会加强我(可能是错误的)的想法,即这只是你无法检查的借口。
如果说我笨到不明白函数的含义,也就是把信息复制到数组中,那就说明编程语言的配套文档很低。我不明白这种从一个数组复制到另一个数组的好处,为什么一个根据需要从数组中获取信息的函数是可怕的代码。
当然,我一直在寻找一个解决方案--如何用MQL5替换MQL4函数,特别是指时间序列,并看到这是大多数人转移到MQL5所遇到的问题之一。
因此,我在同一个网站上找到了解决方案,其中一篇文章推荐了我的方法。
就个人而言,我不明白为什么要把一个好的、方便的功能从语言中排除出去。
这就是为什么我问你,什么是正确的信息接收方式,让我感受到MQL5的 优势?
也许我搜索得不好?在这里, 你有你需要的一切,而不是所有这些代码都在一个副本中
关于交易、自动交易系统和策略测试的论坛
错误, 漏洞, 问题
Aleksey Vyazmikin, 2017.07.21 01:20
谢谢 - 纠正了。
结果是,代码如下
在测试器中的时间增加了 - 已经厌倦了等待:)
为了使用它,你只需要了解什么是结构
也许我看得不够仔细?在这里,在一个副本中,你可以得到你需要的一切,而不是所有这些代码
为了使用这个,你所要做的就是了解什么是结构
我们得到了同样的东西--事实上...
你建议的变体适合ifle。
- 计算只发生在一个酒吧的开幕式上。
- 你事先知道需要多少条
我的代码里有循环,计算量可能事先不知道。
而且,如果简单地添加一个新条目的信息会更合理,那么每次我们打开它时复制300个条目的信息有什么意义呢--为什么开发者不这样做?
但我会给你指明方向。
我不希望以这种方式进行交流。人们不是试图理解所说的内容,弄清楚将要发生的事情,而是抛出了一些令人难以置信的反对意见。