程序库: 多功能测试仪 - 页 50 1...4344454647484950515253545556 新评论 Stanislav Korotky 2025.09.05 16:09 #491 我的帖子发错了主题,应该在这里: 关于交易、自动交易系统和交易策略测试的论坛 新版 MetaTrader 5 build 5200:OpenBLAS 扩展和 MQL5 中更强的控制能力 Stanislav Korotky, 2025.09.05 11:13 AM 为什么是 30 而不是 31?标题似乎是为 31 天设计的。 uint Buffer[64 + 12 * 30]; 如果是加密货币呢? fxsaber 2025.09.05 19:51 #492 Stanislav Korotky #:为什么是 30 天而不是 31 天?标题似乎是 31 天。 从 0 到 30 的指数是 31。 Stanislav Korotky 2025.09.06 12:00 #493 fxsaber #:0 至 30 的指数为31 个。 确切地说,从 0 到 30(含 30)一共是 31 个。 fxsaber 2025.09.06 19:51 #494 Stanislav Korotky #:确切地说,0 到 30(含 30),共 31 个。 你说对了吗? Stanislav Korotky 2025.09.07 13:29 #495 fxsaber #:所以你说对了? 在文件头中,据我所知,31 天的数组是保留的,这是合乎逻辑的。所以在代码中应该是 12*31。我错在哪里了? 或者提供一个 tkc 格式说明的链接,其中提到一个月中应该(最多)有 30 天。 fxsaber 2025.09.07 15:04 #496 Stanislav Korotky #:据我所知,文件头为 31 天保留了一个数组,这很合理。 我没有关于文件头的任何信息。我正在做一个自定义字符,并查看哪些字节发生了变化。只有通过这些操作,我才知道页眉中的某些字节负责什么。 所以在代码中应该是 12*31。我错在哪里? 或者提供一个 tkc 格式说明的链接,其中说一个月最多应该有 30 天。 uint Buffer[64 + 12 * 30]; uint Read; kernel32::ReadFile(handle, Buffer, sizeof(Buffer), Read, 0); if (Read == sizeof(Buffer)) for (int i = 63; i < (sizeof(Buffer) >> 2); i += 12) Res += (int)Buffer[i]; 变量i 有 31 个值。 Stanislav Korotky 2025.09.08 11:44 #497 fxsaber #:我没有关于报头的任何信息。我制作了一个自定义符号,并观察哪些字节发生了变化。只有通过这些操作,我才知道报头中的某些字节负责什么。变量i 有 31 个值。 显然,循环从 63 开始计数,但在描述数组时,64 被分配给了头,这相当于循环从-1 开始。这不是很直观,但数学上是可行的。 fxsaber 2025.09.09 18:38 #498 fxsaber #: 以非标准方式获取日历月中的刻度数。 按符号获取可用的历史刻度线信息。 #include <fxsaber\MultiTester\MTTester.mqh> //https://www.mql5.com/zh/code/26132 string NumToString( ulong Num, const string Delimeter = " " ) { string Res = (Num ? NULL : "0"); while (Num) { Res = ((Num < 1000) ? (string)(Num % 1000) : ::IntegerToString(Num % 1000, 3, '0')) + ((Res == NULL) ? NULL : Delimeter) + Res; Num /= 1000; } return(Res); } string TicksDataToString( const string Symb ) { datetime From = 0; datetime To; const int Amount = MTTESTER::GetAmountFileTicks(From, To, Symb); const string SizeStr = ::DoubleToString((long)Amount * sizeof(MqlTick) / (double)(1 << 20), 3) + " MB"; return(Symb + ": " + NumToString(Amount) +" ticks (MqlTick[] = " + SizeStr + ")" + (From ? ", " + ::TimeToString(From) + " - " + ::TimeToString(To) + ", " + GetDiffTime(From, To) //https://www.mql5.com/ru/forum/170952/page308#comment_57872629 : NULL)); } void OnStart() { const int Size = SymbolsTotal(true); for (int i = 0; i < Size; i++) Print(IntegerToString(i + 1, 3, '0') + "/" + IntegerToString(Size, 3, '0') + ". " + TicksDataToString(SymbolName(i, true))); } 结果。 001/045. EURUSD: 473 689 648 ticks (MqlTick[] = 27104.739 MB), 2011.12.01 00:00 - 2025.09.01 00:00, 13 Years 9 Months 002/045. GBPUSD: 508 981 458 ticks (MqlTick[] = 29124.153 MB), 2011.12.01 00:00 - 2025.01.01 00:00, 13 Years 1 Months 003/045. USDCAD: 402 756 151 ticks (MqlTick[] = 23045.892 MB), 2011.12.01 00:00 - 2025.01.01 00:00, 13 Years 1 Months 004/045. USDCHF: 353 129 808 ticks (MqlTick[] = 20206.250 MB), 2011.12.01 00:00 - 2025.01.01 00:00, 13 Years 1 Months 005/045. USDJPY: 482 177 651 ticks (MqlTick[] = 27590.427 MB), 2011.12.01 00:00 - 2025.01.01 00:00, 13 Years 1 Months 006/045. AUDCAD: 446 882 461 ticks (MqlTick[] = 25570.820 MB), 2011.12.01 00:00 - 2025.01.01 00:00, 13 Years 1 Months 007/045. AUDCHF: 387 336 224 ticks (MqlTick[] = 22163.557 MB), 2011.12.01 00:00 - 2025.01.01 00:00, 13 Years 1 Months 您可以看到错误 4004 的 原因。 Goesta Torsten Hulden 2025.09.21 04:34 #499 MTTester.mqh 无法编译。我想这是因为最近的 MT5 版本导致很多东西突然无法编译了。有没有可能提供该库的更新版本?它看起来是个很棒的库。 fxsaber 2025.09.21 07:33 #500 Goesta Torsten Hulden #: MTTester.mqh 未编译。 最新版本只能在俄语页面的库 中找到。 1...4344454647484950515253545556 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我的帖子发错了主题,应该在这里:
关于交易、自动交易系统和交易策略测试的论坛
新版 MetaTrader 5 build 5200:OpenBLAS 扩展和 MQL5 中更强的控制能力
Stanislav Korotky, 2025.09.05 11:13 AM
为什么是 30 而不是 31?标题似乎是为 31 天设计的。
如果是加密货币呢?
为什么是 30 天而不是 31 天?标题似乎是 31 天。
从 0 到 30 的指数是 31。
0 至 30 的指数为31 个。
确切地说,从 0 到 30(含 30)一共是 31 个。
确切地说,0 到 30(含 30),共 31 个。
你说对了吗?
所以你说对了?
在文件头中,据我所知,31 天的数组是保留的,这是合乎逻辑的。所以在代码中应该是 12*31。我错在哪里了?
或者提供一个 tkc 格式说明的链接,其中提到一个月中应该(最多)有 30 天。
据我所知,文件头为 31 天保留了一个数组,这很合理。
我没有关于文件头的任何信息。我正在做一个自定义字符,并查看哪些字节发生了变化。只有通过这些操作,我才知道页眉中的某些字节负责什么。
所以在代码中应该是 12*31。我错在哪里?
或者提供一个 tkc 格式说明的链接,其中说一个月最多应该有 30 天。
变量i 有 31 个值。
我没有关于报头的任何信息。我制作了一个自定义符号,并观察哪些字节发生了变化。只有通过这些操作,我才知道报头中的某些字节负责什么。
变量i 有 31 个值。
显然,循环从 63 开始计数,但在描述数组时,64 被分配给了头,这相当于循环从-1 开始。这不是很直观,但数学上是可行的。
以非标准方式获取日历月中的刻度数。
按符号获取可用的历史刻度线信息。
结果。
您可以看到错误 4004 的 原因。
MTTester.mqh 未编译。
最新版本只能在俄语页面的库 中找到。