新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1060 1...105310541055105610571058105910601061106210631064106510661067...1953 新评论 Alexey Viktorov 2020.01.29 15:09 #10591 Igor Zakharov: 这不是一个替代物--MB在指示器中不起作用,因为它在按下按钮之前会停止流动!这不是一个替代品。 我不经意地建议了这一点,但说明中根本不是这么说的。 注意事项 不建议 在自定义指标中使用这个函数,因为调用MessageBox()会在等待用户回答的整个过程中停止指标线程的执行。而由于每个符号的所有指标都在一个线程中执行,这个符号的所有时间段的所有图表都将被停止。 在策略测试器中工作时,MessageBox()函数没有被执行。 Alexey Viktorov 2020.01.29 15:10 #10592 MakarFX: 我不是程序员,我编辑指标是为了自己的方便。我没有在测试器中检查,而是在实时中检查。 顺便说一句,没有心灵感应者。 如果你知道这里有哪些指标使用这个功能,请告诉我,也许这样我就能自己想出办法。 谢谢 我们拥有一切。 Клуб Телепатов 2011.05.08www.mql5.com Клуб телепатов Вас послали сюда? Тогда давайте знакомиться! Как же такое могло случиться со мной... Seric29 2020.01.29 15:21 #10593 Artyom Trishkin: 你在局部范围内 声明一个结构类型的变量,它就是你发送给函数的东西。在同一个局部范围内。 问题是,当你在字段中为一个结构创建一个变量时,它的范围是在整个函数上,而不是在一个局部区域。下面是一个例子。 int OnInit() { {int In=8; MyPoint qr;} qr - видна здесь In - здесь не видна return(INIT_SUCCEEDED); } void OnDeinit(const int reason){} struct MyPoint { int x[5]; int y; }; 事实证明,在当地工作已经不可能了。 Yurixx 2020.01.29 15:43 #10594 试图在一个脚本中从csv文件中读取数据。没有运气,我完全不明白为什么。 我使用一个简单的程序来阅读它。 bool GetBiFromFile(string InFNam,int& alBars,double& xClose[],datetime& xTime[]) { int InHndl,nBars; bool fset; double aval; InHndl = FileOpen(InFNam+".csv",FILE_READ|FILE_CSV,","); if (InHndl==INVALID_HANDLE) { Print("File "+InFNam+" does not open. Error: ", GetLastError()); return(false); } else { fset = FileSeek(InHndl,0,SEEK_SET); ArrayResize(xClose,alBars); ArrayInitialize(xClose,0.0); ArrayResize(xTime,alBars); ArrayInitialize(xTime,0); nBars = 0; while (!FileIsEnding(InHndl)) { nBars++; xTime[nBars-1] = FileReadDatetime(InHndl);; xClose[nBars-1] = FileReadDouble(InHndl); aval = FileReadDouble(InHndl); if (nBars>=alBars) break; } } Print("nBars = ",nBars," allBars = ",alBars); Print("Start: ",xClose[0]," " + TimeToString(xTime[0],TIME_DATE|TIME_SECONDS)); Print("End: ",xClose[nBars-1]," " + TimeToString(xTime[nBars-1],TIME_DATE|TIME_SECONDS)); return(true); } 载有数据的文件有以下形式。 2012.01.02 02:00:02,1.293240,1.293410 2012.01.02 02:00:52,1.293330,1.293500 2012.01.02 02:00:55,1.293810,1.293980 .... 而该程序的Print()语句的结果是 nBars = 1000 alBars = 1000 开始:0.0 2020.01.29 01:00:00 结束:0.0 2020.01.29 01:00:00 也就是说,所有的行都在读循环中被处理了,但什么也没读到。而且没有错误信息。 谁能向我解释一下这个问题? fxsaber 2020.01.29 15:45 #10595 Yurixx: 谁能向我解释一下这个问题? 二进制函数读取一个文本文件。 Tretyakov Rostyslav 2020.01.29 15:48 #10596 Alexey Viktorov: 我们拥有一切。 你是邪恶的! Alexey Viktorov 2020.01.29 15:59 #10597 MakarFX:你真坏! 我是假装的。 如果你想了解编程,就开始尝试弄清楚它。如果你只是需要这样做,请到他们提供免费编写的主题,在那里发布你的指标并描述你的要求。 ps:我检查了一切。由于某些原因,Alert()即使放在PlaySound() 之前也不能播放所选择的声音。也许我的记忆力不好,但这不是重点。 你可以通过双击Alert()得到一个红叉来使其静音。 在这种情况下,Alert()或PlaySound()写在它前面并不重要。 Tretyakov Rostyslav 2020.01.29 16:17 #10598 Alexey Viktorov: 我是假装的。 在这种情况下,无论前面写的是Alert()还是PlaySound(),都没有区别。 在这种情况下,警报窗口并没有打开。 Yurixx 2020.01.29 16:22 #10599 fxsaber:你用二进制函数读取一个文本文件。 关于FileReadDouble() 函数,确实说过它是从二进制文件中读取的。 但关于FileReadDatetime(),它说:"从CSV文件中读取一个字符串,其格式为:"YYYY.MM.DD HH:MI:SS","YYYY.MM.DD "或 "HH:MI:SS" - 并将其转换为日期时间值。 另外,同样的图片是在我使用FileReadString(),然后自己将字符串转换为正确的类型。 你认为我应该怎么做? fxsaber 2020.01.29 16:30 #10600 Yurixx: 你认为应该如何做? void OnStart() { datetime time; double PriceBid; double PriceAsk; string Str = "2012.01.02 02:00:02,1.293240,1.293410"; string StrArray[]; if (StringSplit(Str, ',', StrArray) > 2) { time = (datetime)StrArray[0]; PriceBid = (double)StrArray[1]; PriceAsk = (double)StrArray[2]; } } 1...105310541055105610571058105910601061106210631064106510661067...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这不是一个替代物--MB在指示器中不起作用,因为它在按下按钮之前会停止流动!这不是一个替代品。
我不经意地建议了这一点,但说明中根本不是这么说的。
注意事项
不建议 在自定义指标中使用这个函数,因为调用MessageBox()会在等待用户回答的整个过程中停止指标线程的执行。而由于每个符号的所有指标都在一个线程中执行,这个符号的所有时间段的所有图表都将被停止。
在策略测试器中工作时,MessageBox()函数没有被执行。
我不是程序员,我编辑指标是为了自己的方便。我没有在测试器中检查,而是在实时中检查。
顺便说一句,没有心灵感应者。
如果你知道这里有哪些指标使用这个功能,请告诉我,也许这样我就能自己想出办法。
谢谢
我们拥有一切。
你在局部范围内 声明一个结构类型的变量,它就是你发送给函数的东西。在同一个局部范围内。
问题是,当你在字段中为一个结构创建一个变量时,它的范围是在整个函数上,而不是在一个局部区域。下面是一个例子。
事实证明,在当地工作已经不可能了。
试图在一个脚本中从csv文件中读取数据。没有运气,我完全不明白为什么。
我使用一个简单的程序来阅读它。
载有数据的文件有以下形式。
2012.01.02 02:00:02,1.293240,1.293410
2012.01.02 02:00:52,1.293330,1.293500
2012.01.02 02:00:55,1.293810,1.293980
....
而该程序的Print()语句的结果是
nBars = 1000 alBars = 1000
开始:0.0 2020.01.29 01:00:00
结束:0.0 2020.01.29 01:00:00
也就是说,所有的行都在读循环中被处理了,但什么也没读到。而且没有错误信息。
谁能向我解释一下这个问题?
谁能向我解释一下这个问题?
二进制函数读取一个文本文件。
我们拥有一切。
你是邪恶的!
你真坏!
我是假装的。
如果你想了解编程,就开始尝试弄清楚它。如果你只是需要这样做,请到他们提供免费编写的主题,在那里发布你的指标并描述你的要求。
ps:我检查了一切。由于某些原因,Alert()即使放在PlaySound() 之前也不能播放所选择的声音。也许我的记忆力不好,但这不是重点。
你可以通过双击Alert()得到一个红叉来使其静音。
在这种情况下,Alert()或PlaySound()写在它前面并不重要。
我是假装的。
在这种情况下,无论前面写的是Alert()还是PlaySound(),都没有区别。
在这种情况下,警报窗口并没有打开。
你用二进制函数读取一个文本文件。
关于FileReadDouble() 函数,确实说过它是从二进制文件中读取的。
但关于FileReadDatetime(),它说:"从CSV文件中读取一个字符串,其格式为:"YYYY.MM.DD HH:MI:SS","YYYY.MM.DD "或 "HH:MI:SS" - 并将其转换为日期时间值。
另外,同样的图片是在我使用FileReadString(),然后自己将字符串转换为正确的类型。
你认为我应该怎么做?
你认为应该如何做?