优化过程中的单一阵列计算 - 页 7 12345678 新评论 forexman77 2016.09.20 15:04 #61 forexman77:尝试在全局层面声明一个数组(mql4代码)。填写当开始时未设置,它打印出1971年的日期,即数组是空的。如果我在开始时填充数组,就会出现这些值。可能的原因是,数组被重新初始化的时间,但没有它,代码就无法编译?阵列消失了。我做错了什么?我这里有一个想法,如果有人也需要的话。我把一个数组复制到另一个数组。datetime T_[];//на глобальном уровне ////////////////////////////////////////////////////////////////// int init() { ArraySetAsSeries(T_,true); massiv(); return(0); } ///////////////////////////////////////////////////////////////// int start() { if(ArraySize(T_)==0) massiv(); return(0); } //////////////////////////////////////////////////////////////// void massiv() { datetime T[40]= { 1262731020,1262735700,1262821920,1262903400,1262989740,1263247200,1263339060,1263420000,1263507480,1263595500, 1265324700,1265407200,1265752980,1265926500,1265930820,1267657200,1267740300,1267826460,1268175840,1268346360, 1270504920,1270684140,1270768500,1272924180,1273011720,1273097100,1273272240,1273528800,1273617180,1275344100, 1275516000,1275602400,1275689160,1276034400,1276124580,1276208700,1276211640,1278027960,1278369780,1278373920 }; ArraySetAsSeries(T,true); ArrayInitialize(T_,0); ArrayResize(T_,40); ArrayCopy(T_,T,0,0,WHOLE_ARRAY); ArrayFree(T); } Alexey Viktorov 2016.09.20 15:17 #62 forexman77:这里有一个想法,如果有人也需要的话。将一个数组复制到另一个数组。这是为了什么?原来的问题是为了使阵列在随后的优化迭代中不被重新计算。现在,它被简单地填充并复制到另一个。这不会有任何好处。我认为这个数组T[40]以这种方式表示只是为了说明问题,而事实上它应该是按顺序计算和填充。每次下一次优化运行 都会像以前一样重新计算这个数组,唯一不同的是,它的组织方式不同。 forexman77 2016.09.20 15:31 #63 Alexey Viktorov:它是用来做什么的?原来的问题是为了使阵列在随后的优化迭代中不被重新计算。而现在,它被简单地填充和复制到另一个人身上。这不会有任何好处。我认为这个数组T[40]以这种方式表示只是为了说明问题,而事实上它应该是按顺序计算和填充。在接下来的每一次优化运行 中,这个数组将按照之前的方式重新计算,唯一不同的是,它的排列方式不同。通过大括号声明的数组没有被保存;它不能被全局声明,然后在inite中填充(数组在一次运行中没有被保存)。在优化迭代之间,按照我的理解,数组是不被保存的,也就是说,程序会重置原来的一切。 Alexey Viktorov 2016.09.20 15:52 #64 forexman77:用大括号声明的数组没有被保存,它不能被全局声明,然后在inite中填充(数组在一次运行中没有被保存)。在优化迭代之间,按照我的理解,数组是不被保存的,也就是说,程序会重置原来的一切。 像这样在循环中填充它不会花很长时间。但这是另一个问题,如果计算数组项目 需要很长的时间。如果是这样的话,就没有用了。 数组元素在每次迭代时仍然会被重新计算。而如果数组是这样填充的,你也可以在大括号中全局地枚举所有的元素。 我不明白这个巫术的意义... forexman77 2016.09.20 16:05 #65 Alexey Viktorov: 如果数组以这种方式填充,你也可以在全局层面上用大括号列出所有的元素。有些东西我不明白这个魔法的意义...... 你也可以在全球范围内这样做。但是,我不喜欢在那里的顶部有一个几千个元素的塔) Alexey Viktorov 2016.09.20 17:11 #66 forexman77: 你可以在全球范围内做到这一点。但我不喜欢在它上面建造一个由几千个元素组成的塔的想法)。感谢上帝,这一切都按你的意愿进行。速度上升了吗? forexman77 2016.09.20 18:51 #67 Alexey Viktorov:感谢上帝,这一切都按你的意愿进行。速度上升了吗? 越来越快了。 forexman77 2016.11.06 10:49 #68 我没有创建一个新的主题。现在我想做的是:有一个数组,第一个值是日期,第二个和第三个数字是双数。我需要按日期对数组进行排序,但我希望第二个和第三个值能与日期绑定。然后我打算把几个数组集中到一起,按日期排序。我试图这样做,但据我所知,排序是按数组索引 进行的,即按i进行排序。double m[215][3]; m[i][0]=Data; m[i][1]=f1; m[i][2]=f2; Anatoli Kazharski 2016.11.06 11:00 #69 forexman77:我没有创建一个新的主题。现在我想做的是:有一个数组,第一个值是日期,第二个和第三个数字是双数。需要按日期值对数组进行排序,但要让第二和第三个值与日期绑定。... 请看这里:https://www.mql5.com/ru/forum/42036 Сортировка двухмерного массива. www.mql5.com Форум трейдеров MQL5.community forexman77 2016.11.06 11:21 #70 Anatoli Kazharski: 看这里:https://www.mql5.com/ru/forum/42036主要都是在班上,对我来说是一片黑暗的森林。但是,有些想法已经出现了。将日期和数字分别做成一个数组。只是,如何在排序后得到日期所在的索引号,即得到第二维中的i?datetime m[215][1];double d[215][2]; m[0][i]=Dat_DtTm; d[i][0]=f1; d[i][1]=f2; 12345678 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
尝试在全局层面声明一个数组(mql4代码)。
填写
当开始时未设置,它打印出1971年的日期,即数组是空的。
如果我在开始时填充数组,就会出现这些值。可能的原因是,数组被重新初始化的时间,但没有它,代码就无法编译?
阵列消失了。我做错了什么?
我这里有一个想法,如果有人也需要的话。我把一个数组复制到另一个数组。
这里有一个想法,如果有人也需要的话。将一个数组复制到另一个数组。
这是为了什么?
原来的问题是为了使阵列在随后的优化迭代中不被重新计算。现在,它被简单地填充并复制到另一个。这不会有任何好处。我认为这个数组T[40]以这种方式表示只是为了说明问题,而事实上它应该是按顺序计算和填充。每次下一次优化运行 都会像以前一样重新计算这个数组,唯一不同的是,它的组织方式不同。
它是用来做什么的?
原来的问题是为了使阵列在随后的优化迭代中不被重新计算。而现在,它被简单地填充和复制到另一个人身上。这不会有任何好处。我认为这个数组T[40]以这种方式表示只是为了说明问题,而事实上它应该是按顺序计算和填充。在接下来的每一次优化运行 中,这个数组将按照之前的方式重新计算,唯一不同的是,它的排列方式不同。
通过大括号声明的数组没有被保存;它不能被全局声明,然后在inite中填充(数组在一次运行中没有被保存)。
在优化迭代之间,按照我的理解,数组是不被保存的,也就是说,程序会重置原来的一切。
用大括号声明的数组没有被保存,它不能被全局声明,然后在inite中填充(数组在一次运行中没有被保存)。
在优化迭代之间,按照我的理解,数组是不被保存的,也就是说,程序会重置原来的一切。
如果数组以这种方式填充,你也可以在全局层面上用大括号列出所有的元素。有些东西我不明白这个魔法的意义......
你可以在全球范围内做到这一点。但我不喜欢在它上面建造一个由几千个元素组成的塔的想法)。
感谢上帝,这一切都按你的意愿进行。
速度上升了吗?
感谢上帝,这一切都按你的意愿进行。
速度上升了吗?
我没有创建一个新的主题。
现在我想做的是:有一个数组,第一个值是日期,第二个和第三个数字是双数。我需要按日期对数组进行排序,但我希望第二个和第三个值能与日期绑定。
然后我打算把几个数组集中到一起,按日期排序。
我试图这样做,但据我所知,排序是按数组索引 进行的,即按i进行排序。
m[i][0]=Data;
m[i][1]=f1;
m[i][2]=f2;
我没有创建一个新的主题。
现在我想做的是:有一个数组,第一个值是日期,第二个和第三个数字是双数。需要按日期值对数组进行排序,但要让第二和第三个值与日期绑定。
...
看这里:https://www.mql5.com/ru/forum/42036
主要都是在班上,对我来说是一片黑暗的森林。但是,有些想法已经出现了。将日期和数字分别做成一个数组。只是,如何在排序后得到日期所在的索引号,即得到第二维中的i?
double d[215][2];
m[0][i]=Dat_DtTm;
d[i][0]=f1;
d[i][1]=f2;