初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1498 1...1491149214931494149514961497149814991500150115021503 新评论 Mikhail Toptunov 2024.02.12 18:06 #14971 你好,请指示。 将数据保存到文件。 void OrderExport(MqlTradeRequest &request) { static long trans = 0; static long keepTrans = 0; string file = "OrderExchange" + (request.magic > 0 ? IntegerToString(request.magic) : "") + ".csv"; int handle = FileOpen(file, FILE_CSV | FILE_READ | FILE_SHARE_READ | FILE_WRITE | FILE_SHARE_WRITE | (Common ? FILE_COMMON : 0), ';'); if(handle != INVALID_HANDLE) { FileSeek(handle, 0, SEEK_END); long tr = TimeGMT(); trans = (tr > trans) ? tr : (trans + 1); FileWrite(handle, trans, request.action, request.magic,从文件中获取数据void OrderImport(MqlTradeRequest &aReq[], int magic, string symbol) { ArrayFree(aReq); long tr; static long trans = 0; if(trans == 0) trans = TimeGMT() - 3; string file = "OrderExchange" + (magic > 0 ? IntegerToString(magic) : "") + ".csv"; int handle = FileOpen(file, FILE_TXT | FILE_READ | FILE_SHARE_READ | FILE_ANSI | (Common ? FILE_COMMON : 0)); if(handle != INVALID_HANDLE) { FileSeek(handle, 0, SEEK_SET); while(!FileIsEnding(handle)) { string s = FileReadString(handle); string aS[]; int cnt = StringSplit(s, ';', aS); if(cnt <= 0) continue; //--- ПРОБЛЕМНОЕ МЕСТО ОТ tr = StringToInteger(aS[0]); //--- ПРОБЛЕМНОЕ МЕСТО ДО if(tr <= trans) continue;GetLastError() 出错原因是 -破坏了字符串类型 参数如果通过 Print() 输出 aS[0] 数组,字体与其他部分不同。 如果只打印参数 tr , 则 = 0 Maxim Kuznetsov 2024.02.12 22:41 #14972 Mikhail Toptunov 字符串类型 参数如果我通过 Print() 输出一个 S[0] 数组,字体与其他数组不同。如果只打印参数 tr , 则 = 0 你试过查看文件本身吗? 您正在写入二进制值并读取文本字符串.... Mikhail Toptunov 2024.02.13 05:09 #14973 Maxim Kuznetsov #:您试过查看文件本身吗?您正在写入二进制值并读取文本字符串....我是这样导入的void OrderImport(MqlTradeRequest &aReq[], int magic, string symbol) { ArrayFree(aReq); long tr; static long trans = 0; if(trans == 0) trans = TimeGMT() - 1; string file = "OrderExchange" + (magic > 0 ? IntegerToString(magic) : "") + ".csv"; int handle = FileOpen(file, FILE_READ | FILE_SHARE_READ | (Common ? FILE_COMMON : 0));像这样导出void OrderExport(MqlTradeRequest &request) { static long trans = 0; static long keepTrans = 0; string file = "OrderExchange" + (request.magic > 0 ? IntegerToString(request.magic) : "") + ".csv"; int handle = FileOpen(file, FILE_READ | FILE_SHARE_READ | FILE_WRITE | FILE_SHARE_WRITE | (Common ? FILE_COMMON : 0), ';');变得更好,但第一次导入第一个参数 字符串 (aS[0]) 时总是出错。 下一个tr - 以 int(aS[0]) 为单位反映翻译后的字符串 文件已查看,一切就绪。 但是导入第一行的第一个参数 aS[0] 并不能将其转换为 int。 Nauris Zukas 2024.02.13 06:52 #14974 Aleksandr Slavskii #:如果不对数组进行初始化,数组中往往会包含垃圾。 谢谢,我甚至想起来以前遇到过这种情况(0 让我很困惑)。可惜文档中没有说明,我只能把这些东西记在脑子里。 Mikhail Toptunov 2024.02.13 08:46 #14975 Mikhail Toptunov #:进口像这样导出但第一次导入第一个参数 字符串 (aS[0]) 时总是出错。下一个tr - 以 int(aS[0]) 为单位反映翻译后的字符串 文件已查看,一切就绪。但是导入第一行的第一个参数 aS[0] 并没有将其转换为 int。 怎么会这样?- 第一个 aS[0] 总是坏的(错误 5040) Иван Пахневич 2024.02.13 12:29 #14976 好心人,请给我一点提示。我有一个运行优化的任务,但为了优化,我需要使用外部数据。我是这样做的:我创建了一个包含数据的文件,每次通过时,我都打开文件,写入数组,然后关闭。如何优化并加快这一过程? Maxim Kuznetsov 2024.02.13 16:04 #14977 Mikhail Toptunov #:怎么会这样?- 第一个 aS[0] 总是坏掉(错误 5040) 在 "导出 "和 "导入 "中设置 UTF-8 编码(或至少设置相同的不含 BOM 的单字节编码)。 (以二进制形式查看文件--前两个字节可能是 BOM,即它是 Unicode)--当你 FileSeek(0,SEEK_SET),然后读取时,你把它们读成了字符串,转换失败。 Mikhail Toptunov 2024.02.13 19:10 #14978 Maxim Kuznetsov #: BOM 好吧,看来起作用了。确实有一次还是没有反映出来,但之后删除文件时至少不再出现故障了。 FILE_CSV | FILE_READ | FILE_SHARE_READ | FILE_ANSI | (Common ? FILE_COMMON : 0),CP_UTF8 非常感谢! MrBrooklin 2024.02.17 04:28 #14979 早上好,心情不错! 我遇到了MQL5 参考手册 中缺少ResultRetcodeExternal 描述的问题。在搜索引擎中,我得到了以下答案:没有找到与您的请求 相关的内容。绕了一圈,我发现似乎是"外部交易系统返回的错误代码"。这些错误的拼写和类型取决于经纪商和交易操作输出的外部交易系统"。 问题:我找到的定义是否正确? 同时还要问文档开发人员第二个问题:如果是这样,为什么不立即向用户提供完整的信息,而要让他们到处去找这个定义是什么? 弗拉基米尔 Artyom Trishkin 2024.02.17 05:31 #14980 MrBrooklin #: ResultRetcodeExternal 您不会找到这样的东西。它不存在于 MQL5 中。 有MqlTradeResult,其中有一个字段 retcode_external,并且有对该字段的描述。 Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса www.mql5.com Структура результата торгового запроса - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 1...1491149214931494149514961497149814991500150115021503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
将数据保存到文件。
从文件中获取数据
GetLastError() 出错原因是 -破坏了字符串类型 参数
如果通过 Print() 输出 aS[0] 数组,字体与其他部分不同。
如果只打印参数 tr , 则 = 0
如果我通过 Print() 输出一个 S[0] 数组,字体与其他数组不同。
如果只打印参数 tr , 则 = 0
你试过查看文件本身吗?
您正在写入二进制值并读取文本字符串....
您试过查看文件本身吗?
您正在写入二进制值并读取文本字符串....
我是这样导入的
像这样导出
变得更好,但第一次导入第一个参数 字符串 (aS[0]) 时总是出错。
下一个
tr - 以 int(aS[0]) 为单位反映翻译后的字符串
![](https://c.mql5.com/3/429/2674531064981.png)
文件已查看,一切就绪。
如果不对数组进行初始化,数组中往往会包含垃圾。
谢谢,我甚至想起来以前遇到过这种情况(0 让我很困惑)。可惜文档中没有说明,我只能把这些东西记在脑子里。
进口
像这样导出
但第一次导入第一个参数 字符串 (aS[0]) 时总是出错。
下一个
tr - 以 int(aS[0]) 为单位反映翻译后的字符串
文件已查看,一切就绪。
但是导入第一行的第一个参数 aS[0] 并没有将其转换为 int。怎么会这样?- 第一个 aS[0] 总是坏的(错误 5040)
![](https://c.mql5.com/3/429/2292895576156.png)
怎么会这样?- 第一个 aS[0] 总是坏掉(错误 5040)
在 "导出 "和 "导入 "中设置 UTF-8 编码(或至少设置相同的不含 BOM 的单字节编码)。
(以二进制形式查看文件--前两个字节可能是 BOM,即它是 Unicode)--当你 FileSeek(0,SEEK_SET),然后读取时,你把它们读成了字符串,转换失败。
BOM
好吧,看来起作用了。确实有一次还是没有反映出来,但之后删除文件时至少不再出现故障了。
非常感谢!
早上好,心情不错!
我遇到了MQL5 参考手册 中缺少ResultRetcodeExternal 描述的问题。在搜索引擎中,我得到了以下答案:没有找到与您的请求 相关的内容。绕了一圈,我发现似乎是"外部交易系统返回的错误代码"。这些错误的拼写和类型取决于经纪商和交易操作输出的外部交易系统"。
问题:我找到的定义是否正确?
同时还要问文档开发人员第二个问题:如果是这样,为什么不立即向用户提供完整的信息,而要让他们到处去找这个定义是什么?
弗拉基米尔
ResultRetcodeExternal
您不会找到这样的东西。它不存在于 MQL5 中。
有MqlTradeResult,其中有一个字段 retcode_external,并且有对该字段的描述。