绕过MQL4和MQL5中的Digits(),获取任何数字的小数位数(不仅仅是引号)。 - 页 16 1...910111213141516171819202122 新评论 Ilya Malev 2018.12.07 22:54 #151 这里还有一个有趣的任务:让一个数组排序 函数比内置的ArraySort更快。 Dmitry Fedoseev 2018.12.08 07:54 #152 Ilya Malev: sizeof(S)/sizeof(T)是否保证所有结构的大小都能被所有变量的大小所除? struct SZ{ char x1; char x2; char x3; }; Print(sizeof(SZ)/sizeof(int)); // 0 Dmitry Fedoseev 2018.12.08 08:05 #153 fxsaber:我可以集思广益,快速实现将一个结构数组(长度为sizeof(int)的倍数)转换为int[]数组,并从int[]数组中转换 出来吗? /// 只需在描述完一个结构后,再写几行包括这个结构和一个数组的联盟。 struct SS{ int a; double b; }; union UX{ SS s; char a[sizeof(S)]; }; 甚至可以不在每个结构后面写,而是以模板形式写--不管你怎么方便。 fxsaber 2018.12.08 08:34 #154 Dmitry Fedoseev:所有结构的大小是否保证除以所有变量的大小? 关于交易、自动交易系统和策略测试的论坛 在MQL4和MQL5中绕过Digits()获得任何数字的小数位数(不仅仅是引号)。 fxsaber, 2018.12.07 15:12 我可以集思广益,快速实现将一个结构数组(长度为sizeof(int)的倍数)转换为int[]数组,或者从int[]数组中转换出来吗?一般来说,解决方案在同一环节,但由于多功能性,那里有一个刹车。因此,多重性是一个可以理解的附加条件。 这也出现了。 关于交易、自动交易系统和策略测试的论坛 新版MetaTrader 5 build 1930:MQL5中的浮动图表窗口和.Net库 MetaQuotes软件公司。, 2018.10.25 17:18 MQL5:为结构添加了pack( integer_value ) 属性。它允许你设置结构内字段的对齐方式,在使用DLL时可能是必要的。对于integer_value可以有1、2、4、8和16的值。 如果没有定义该属性,默认对齐方式为1字节--pack(1)。 使用实例。//+------------------------------------------------------------------+ //| Default packing | //+------------------------------------------------------------------+ struct A { char a; int b; }; //+------------------------------------------------------------------+ //| Specified packing | //+------------------------------------------------------------------+ struct B pack(4) { char a; int b; }; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { Print("sizeof(A)=",sizeof(A)); Print("sizeof(B)=",sizeof(B)); } //+------------------------------------------------------------------+ 输出。sizeof(A)=5 sizeof(B)=8 关于结构中对齐的更多信息可在MSDN上 找到。 Get the number of 如何开始使用Metatrader 5 初学者以 MQL5 实现对数字滤波器的实际实施 fxsaber 2018.12.08 08:37 #155 Dmitry Fedoseev:简单地说,在描述完结构后,再写几行包括这个结构和数组的联合。你甚至可以不写在每个结构之后,而是写在模板上--不管是什么都更方便。我不明白。如果你想参加,请写下你的变体。 Taras Slobodyanik 2018.12.08 08:55 #156 fxsaber:我可以集思广益,快速实现将一个结构数组(长度为sizeof(int)的倍数)转换为int[]数组,并从int[]数组中转换 出来吗? 为什么是int,而不是char? (而且时间会更长--会复制得更快) fxsaber 2018.12.08 09:00 #157 Taras Slobodyanik:为什么是英特? 关于交易、自动交易系统和策略测试的论坛 在MQL4和MQL5中绕过Digits()获得任何数字的小数位数(不仅仅是引号)。 fxsaber, 2018.12.07 15:12 实际应用是通过资源快速交换数据。我的变体 太一般了,所以很慢。 fxsaber 2018.12.08 09:02 #158 Ilya Malev:显然,你的已经更快 :)// Перевод массива тиков в массив int[]. int TicksToIntArray_fxsaber3( const MqlTick &Ticks[], int &Array[] ) { INTEGER<MqlTick> TickInteger; const int Size = ArraySize(Ticks); ArrayResize(Array, Size * sizeof(MqlTick) / sizeof(int)); int j = 0; for (int i = 0; i < Size; i++) { TickInteger.Data = Ticks[i]; // j += ArrayCopy(Array, TickInteger.Integer, j); for (int k = 0; k < sizeof(MqlTick) / sizeof(int); k++) Array[j++] = TickInteger.Integer[k]; } return(j); } // Перевод массива int[] в массив тиков. int IntArrayToTicks_fxsaber3( const int &Array[], MqlTick &Ticks[] ) { INTEGER<MqlTick> TickInteger = {0}; const int Size = ArraySize(Array); ArrayResize(Ticks, Size * sizeof(int) / sizeof(MqlTick)); int j = 0; for (int i = 0; i < Size; j++) { // i += ArrayCopy(TickInteger.Integer, Array, 0, i, sizeof(MqlTick) / sizeof(int)); for (int k = 0; k < sizeof(MqlTick) / sizeof(int); k++) TickInteger.Integer[k] = Array[i++]; Ticks[j] = TickInteger.Data; } return(j); } 我将尝试大大加快它的速度。 Dmitry Fedoseev 2018.12.08 09:19 #159 fxsaber:我不明白。如果你愿意参加,请写出你的选择。我 做到了。 Dmitry Fedoseev 2018.12.08 09:21 #160 fxsaber: 一般来说,解决方案是在同一环节,但由于普遍性,有刹车的情况。因此,多重性是一个可以理解的附加条件。 这也出现了。 谁将控制这种多重性? 1...910111213141516171819202122 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这里还有一个有趣的任务:让一个数组排序 函数比内置的ArraySort更快。
是否保证所有结构的大小都能被所有变量的大小所除?
我可以集思广益,快速实现将一个结构数组(长度为sizeof(int)的倍数)转换为int[]数组,并从int[]数组中转换 出来吗?
///
只需在描述完一个结构后,再写几行包括这个结构和一个数组的联盟。
甚至可以不在每个结构后面写,而是以模板形式写--不管你怎么方便。
所有结构的大小是否保证除以所有变量的大小?
关于交易、自动交易系统和策略测试的论坛
在MQL4和MQL5中绕过Digits()获得任何数字的小数位数(不仅仅是引号)。
fxsaber, 2018.12.07 15:12
我可以集思广益,快速实现将一个结构数组(长度为sizeof(int)的倍数)转换为int[]数组,或者从int[]数组中转换出来吗?
一般来说,解决方案在同一环节,但由于多功能性,那里有一个刹车。因此,多重性是一个可以理解的附加条件。
这也出现了。
关于交易、自动交易系统和策略测试的论坛
新版MetaTrader 5 build 1930:MQL5中的浮动图表窗口和.Net库
MetaQuotes软件公司。, 2018.10.25 17:18
如果没有定义该属性,默认对齐方式为1字节--pack(1)。
使用实例。
输出。
关于结构中对齐的更多信息可在MSDN上 找到。
简单地说,在描述完结构后,再写几行包括这个结构和数组的联合。
你甚至可以不写在每个结构之后,而是写在模板上--不管是什么都更方便。
我不明白。如果你想参加,请写下你的变体。
我可以集思广益,快速实现将一个结构数组(长度为sizeof(int)的倍数)转换为int[]数组,并从int[]数组中转换 出来吗?
为什么是int,而不是char?
(而且时间会更长--会复制得更快)
为什么是英特?
关于交易、自动交易系统和策略测试的论坛
在MQL4和MQL5中绕过Digits()获得任何数字的小数位数(不仅仅是引号)。
fxsaber, 2018.12.07 15:12
实际应用是通过资源快速交换数据。我的变体 太一般了,所以很慢。
显然,你的已经更快 :)
我将尝试大大加快它的速度。
我不明白。如果你愿意参加,请写出你的选择。
我 做到了。
一般来说,解决方案是在同一环节,但由于普遍性,有刹车的情况。因此,多重性是一个可以理解的附加条件。
这也出现了。
谁将控制这种多重性?