新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1426 1...141914201421142214231424142514261427142814291430143114321433...1953 新评论 ANDREY 2021.03.20 16:17 #14251 Aleksei Stepanenko: 你想对两行的数值进行排序,还是只对第一行进行排序? 只有在第一个。代码中存在一个错误。 对不起...我不知道如何删除这些代码。所以我只想说,在第2块中,不是LoY[S2][0]=Bid;而是需要LoY[0][52]=Bid。 Aleksei Stepanenko 2021.03.20 16:19 #14252 为什么我不能同时交换行和列? double LoY[31][2]; Aleksei Stepanenko 2021.03.20 16:27 #14253 如果你一次做对了顺序,你能说出你想用0.5555的数值填充的单元格的数字吗? ANDREY 2021.03.20 16:28 #14254 Aleksei Stepanenko:为什么我不能同时交换行和列? 那么ArrayFill(LoY,0,10,0.5555);将无法工作。但它需要数组元素,在这些元素中,它的数值变化要*依次进行。但是如果我把LoY[31][2],那么我想改变数值的数组元素将经过1。在这种情况下,它将首先把数组的31行按顺序 "添加 "到一行。 ANDREY 2021.03.20 16:30 #14255 Aleksei Stepanenko:如果你想按照正确的顺序来做,你能告诉我你想用0.5555填充的单元格的数字吗? 第一行包含单元格一到十。但是一旦你用0.5555填充它们,整个第一行就必须被排序...比方说,按升序排列。ArrayFill(LoY,0,10,0.5555)而不是ArrayFill(LoY,0,10,0.5555)并不适合我。 我纠正了代码中的错误 Aleksei Stepanenko 2021.03.20 16:43 #14256 这里是剧本。 void OnStart() { int arr[31,2]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30, 31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61}; //до заполнения string str=""; for(int i=0; i<31; i++) for(int j=0; j<2; j++) str+=(string)arr[i,j]+", "; printf(str); //после заполнения str=""; ArrayFill(arr, 0, 10, 555); for(int i=0; i<31; i++) for(int j=0; j<2; j++) str+=(string)arr[i,j]+", "; printf(str); } 结果。 2021.03.20 19:42:26.602 primer AUDUSD,H1: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 2021.03.20 19:42:26.602 primer AUDUSD,H1: 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 是不是? ANDREY 2021.03.20 16:50 #14257 Aleksei Stepanenko:这里是剧本。结果。到底是不是这样呢? 非常感谢你。这看起来是我需要的东西。但如果你能把这段代码不是作为脚本而是放到我的代码中,我将非常感激。这样我就能更快地理解和吸收新信息。只是我在数组中有价格值而不是整数。 再次感谢您的帮助。 Aleksei Stepanenko 2021.03.20 16:51 #14258 如果你需要用不同的方式来填写,那么就用 ArrayFill()使用for(int i=0; i<10; i++) arr[i,0]=555; ANDREY 2021.03.20 16:54 #14259 Aleksei Stepanenko: 如果需要以不同的方式填写,那么就用以下方式代替 使用 好的。今天我希望能吸收一些适合我的新信息。而我明天会让你知道结果。 再次感谢。 Aleksei Stepanenko 2021.03.20 16:56 #14260 ANDREY:代码不是作为一个脚本,而是粘贴到我的代码中。 我没有写别的东西,我只是重复了你的代码。 从视觉上看,这些数字排列不正确(分两行,而不是31行),而你认为这就是你需要的。 最有可能的是,你可能需要给循环分配0.5555,而不是ArrayFill。试试吧。 double LoY[31][2],LoU,LoU1; int S,S1,S2; void OnTick() { //*************************************************** БЛОК 1 if (Minute()==20&&Minute()!=S1) { for(int i=0; i<10; i++) LoY[i,0]=0.555; S1=Minute(); } //*************************************************** БЛОК 2 if (Minute()!=S) { LoY[S2][0]=Bid; ArraySort(LoY,WHOLE_ARRAY,0,MODE_ASCEND); Print("----LoY[1][0]-- В --- [0] ", LoY[0][0]," [1] ", LoY[1][0]," [2] ", LoY[2][0]," [3] ", LoY[3][0]," [4] ", LoY[4][0]," [26] ", LoY[26][0]," [27] ", LoY[27][0]," [28] ", LoY[28][0]," [30] ", LoY[30][0]," [60] ", LoY[60][0]); S2++; if (S2==62) { S2=0; } S=Minute(); } } 1...141914201421142214231424142514261427142814291430143114321433...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你想对两行的数值进行排序,还是只对第一行进行排序?
只有在第一个。代码中存在一个错误。
对不起...我不知道如何删除这些代码。所以我只想说,在第2块中,不是LoY[S2][0]=Bid;而是需要LoY[0][52]=Bid。
为什么我不能同时交换行和列?
如果你一次做对了顺序,你能说出你想用0.5555的数值填充的单元格的数字吗?
为什么我不能同时交换行和列?
那么ArrayFill(LoY,0,10,0.5555);将无法工作。但它需要数组元素,在这些元素中,它的数值变化要*依次进行。但是如果我把LoY[31][2]
,那么我想改变数值的数组元素将经过1。在这种情况下,它将首先把数组的31行按顺序 "添加 "到一行。
如果你想按照正确的顺序来做,你能告诉我你想用0.5555填充的单元格的数字吗?
第一行包含单元格一到十。但是一旦你用0.5555填充它们,整个第一行就必须被排序...比方说,按升序排列。ArrayFill(LoY,0,10,0.5555)而不是ArrayFill(LoY,0,10,0.5555)并不适合我。
我纠正了代码中的错误
这里是剧本。
结果。
是不是?
这里是剧本。
结果。
到底是不是这样呢?
非常感谢你。这看起来是我需要的东西。但如果你能把这段代码不是作为脚本而是放到我的代码中,我将非常感激。这样我就能更快地理解和吸收新信息。只是我在数组中有价格值而不是整数。
再次感谢您的帮助。
ArrayFill()
使用
如果需要以不同的方式填写,那么就用以下方式代替
使用
好的。今天我希望能吸收一些适合我的新信息。而我明天会让你知道结果。
再次感谢。
代码不是作为一个脚本,而是粘贴到我的代码中。
我没有写别的东西,我只是重复了你的代码。
从视觉上看,这些数字排列不正确(分两行,而不是31行),而你认为这就是你需要的。
最有可能的是,你可能需要给循环分配0.5555,而不是ArrayFill。试试吧。