新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 902 1...895896897898899900901902903904905906907908909...1953 新评论 Seric29 2019.06.29 15:09 #9011 1.我有这样一个问题,如何通过内存删除数组中的一个元素,目前我是通过循环对数组进行数学移位来删除一个元素,在mql4中是否可以?如果可以的话,请举例说明在一维数组上是如何做到这一点的。 2.另外,考虑到:如果我通过内存删除,切出一个有不必要元素的段,数组会减少,其数量会因删除项的价值而减少,在接下来使用数组时,我们将不得不把数组恢复到原来的状态;如果我通过数学方法删除,处理的周期,是在不断计算给变量赋值,这又会影响程序的负载? Alexey Viktorov 2019.06.29 15:37 #9012 Seric29: 1.我有这样一个问题,如何通过内存删除数组中的一个元素,目前我是通过循环对数组进行数学移位来删除一个元素,在mql4中是否可以?如果可以的话,请举例说明在一维数组上是如何做到这一点的。 2.另外,考虑到如果通过内存删除,切出一个有不必要元素的数组,数组会减少,其数量会因删除的项目的价值而减少,在接下来使用数组时,我们将不得不把数组恢复到原来的状态;如果通过数学方法删除,处理的周期,涉及不断计算给变量赋值,这反过来会影响程序? 只需将数组 "复制 "到自己体内,并通过不需要的元素数量减少数组的大小。 要插入一个单一的元素,只需增加尺寸,再次复制 "到自身",并将所需的值粘贴到自由空间。 Seric29 2019.06.29 16:05 #9013 Alexey Viktorov:只需将数组 "复制到自身",并通过不必要的元素数量减少数组的大小。 要插入一个单一的元素,只需增加尺寸,再次复制 "到自身",并在自由空间粘贴所需的值。 我试着将一个三维数组插入复制函数中,没有任何错误,所以这个函数可以与不同维度的数组一起工作,或者只是对不同维度的数组有重复。事实证明,这个函数可以代替shift函数,不需要自己写,真希望我早点想到,把一个数组复制到 自己身上有多大的风险,上面写着结果可能不被定义。 Alexey Viktorov 2019.06.29 16:15 #9014 Seric29: 我试着在复制函数中插入一个三维数组,没有错误,所以这个函数可以与不同维度的数组一起工作,或者只是对不同维度的数组有重复。事实证明,这个函数可以代替shift函数,不需要自己写,真希望早点想到,本身复制一个数组有多大的风险,上面写着结果可能不被定义。 当复制一个多维数组 时,你必须考虑第二维和后续维度的尺寸。这决定了你在复制时要转移多少。简单地说,按照我在实验中的理解,多维数组的所有数值在 "一行 "中排好,然后在 "一列 "中再排好。 总而言之,我现在无法复述这个理论。如果我需要使用它,我必须再次检查。 Seric29 2019.06.29 16:32 #9015 Alexey Viktorov: 当复制一个多维数组 时,必须考虑到第二维和后续维度的尺寸。这决定了复制时需要多少移位。简单地说,按照我在实验中的理解,多维数组的所有数值在 "一行 "中排成一列,然后在 "列由... "中再排成一列。 一般来说,我现在无法复述这个理论。同样,如果有必要使用它,就必须进行检查。 在C++中,这一点没有区别 вывести в консоль massiv[0][0][0] или так вывести в консоль massiv[0] 在任何这些情况下,都会有一个输出。因为它们位于一个内存块中,C++直接访问它们,而在我们的shell中,内存访问是封闭的,没有办法正确地将不同维度的数组传递到一个函数中,也没有办法这样寻址,唯一的细微差别是,在C++中多维数组位于动态内存中,甚至可能是分散的,虽然没有人看到电子地图。因此,通过概念本身来复制多维数组是一个非常微妙的问题,否则可能无法正确工作? Sergey Likho 2019.06.29 18:18 #9016 如何以编程方式确定我是用投资密码还是交易密码登录我的账户? Alexandr Sokolov 2019.06.30 11:07 #9017 我的指标中有一段代码在MQL5中没有被执行 void KValues(int i) { vhigh = 0; vlow = High[i]; int limit = i + (int)kperiod; for(int a = i; a < limit; a++) { vhigh = ((price == STO_LOWHIGH ? High[a] : Close[a]) > vhigh ? (price == STO_LOWHIGH ? High[a] : Close[a]) : vhigh); vlow = ((price == STO_LOWHIGH ? Low[a] : Close[a]) < vlow ? (price == STO_LOWHIGH ? Low[a] : Close[a]) : vlow); }; } 问题是,如果价格= =STO_LOWHIGH ,一切都能正常工作,但如果价格== STO_CLOSECLOSE,该函数只赋值给静态变量 vhigh = 0; vlow = High[i]; ...绕过循环 Alexey Viktorov 2019.06.30 11:20 #9018 Alexandr Sokolov: 我的指标中有一段代码在MQL5中没有被执行 问题是,如果价格= =STO_LOWHIGH ,一切都能正常工作,但如果价格== STO_CLOSECLOSE,该函数只赋值给静态变量 ...绕过循环 圆括号有问题。在我看来,它们在这里根本就没有必要。这些都是完全没有必要的。 或者至少把问号前的高亮部分移到左边。 void KValues(int i) { vhigh = 0; vlow = High[i]; int limit = i + (int)kperiod; for(int a = i; a < limit; a++) { vhigh = ((price == STO_LOWHIGH ? High[a] : Close[a]) > vhigh ? (price == STO_LOWHIGH ? High[a] : Close[a]) : vhigh); vlow = ((price == STO_LOWHIGH ? Low[a] : Close[a]) < vlow ? (price == STO_LOWHIGH ? Low[a] : Close[a]) : vlow); }; } 一般来说,你只需要理解?: 操作符等同于if else 你有一个条件两次。这样的条件就足够了 vhigh = price == STO_LOWHIGH ? High[a] : Close[a]; vlow = price == STO_LOWHIGH ? Low[a] : Close[a]; 或者说我不明白你想表达的意思。 Alexandr Sokolov 2019.06.30 11:36 #9019 Alexey Viktorov: 支架有问题。在我看来,这里根本就不需要这些东西。他们都不是。 或者至少在问号前把高亮的内容移到左边。 一般来说,你只需要理解?: 操作符等同于if else 你有一个条件两次。这样一个条件就足够了。 或者说我不明白你想表达的意思。 我想通过Low/High和Close/Close得到K周期内正常的maxHigh和minLow随机指标。 在初始化过程中,低/高可以正常工作,但关/闭不能正常工作。 Alexandr Sokolov 2019.06.30 11:47 #9020 Alexey Viktorov: 支架有问题。在我看来,这里根本就不需要这些东西。他们都不是。 或者至少在问号前把高亮的内容移到左边。 一般来说,你只需要理解?: 操作符等同于if else 你有一个条件两次。这样的条件已经足够了。 或者说我不明白你想表达的意思。 我没有马上明白,但如果你是指这个。 void KValues(int i) { vhigh = 0; vlow = High[i]; int limit = i + (int)kperiod; for(int a = i; a < limit; a++) { vhigh = ((price == STO_LOWHIGH) ? High[a] : Close[a] > vhigh ? (price == STO_LOWHIGH) ? High[a] : Close[a] : vhigh); vlow = ((price == STO_LOWHIGH) ? Low[a] : Close[a] < vlow ? (price == STO_LOWHIGH) ? Low[a] : Close[a] : vlow); }; } 它并不能解决我的问题。 1...895896897898899900901902903904905906907908909...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
1.我有这样一个问题,如何通过内存删除数组中的一个元素,目前我是通过循环对数组进行数学移位来删除一个元素,在mql4中是否可以?如果可以的话,请举例说明在一维数组上是如何做到这一点的。
2.另外,考虑到:如果我通过内存删除,切出一个有不必要元素的段,数组会减少,其数量会因删除项的价值而减少,在接下来使用数组时,我们将不得不把数组恢复到原来的状态;如果我通过数学方法删除,处理的周期,是在不断计算给变量赋值,这又会影响程序的负载?
1.我有这样一个问题,如何通过内存删除数组中的一个元素,目前我是通过循环对数组进行数学移位来删除一个元素,在mql4中是否可以?如果可以的话,请举例说明在一维数组上是如何做到这一点的。
2.另外,考虑到如果通过内存删除,切出一个有不必要元素的数组,数组会减少,其数量会因删除的项目的价值而减少,在接下来使用数组时,我们将不得不把数组恢复到原来的状态;如果通过数学方法删除,处理的周期,涉及不断计算给变量赋值,这反过来会影响程序?
只需将数组 "复制 "到自己体内,并通过不需要的元素数量减少数组的大小。
要插入一个单一的元素,只需增加尺寸,再次复制 "到自身",并将所需的值粘贴到自由空间。
只需将数组 "复制到自身",并通过不必要的元素数量减少数组的大小。
要插入一个单一的元素,只需增加尺寸,再次复制 "到自身",并在自由空间粘贴所需的值。
我试着将一个三维数组插入复制函数中,没有任何错误,所以这个函数可以与不同维度的数组一起工作,或者只是对不同维度的数组有重复。事实证明,这个函数可以代替shift函数,不需要自己写,真希望我早点想到,把一个数组复制到 自己身上有多大的风险,上面写着结果可能不被定义。
我试着在复制函数中插入一个三维数组,没有错误,所以这个函数可以与不同维度的数组一起工作,或者只是对不同维度的数组有重复。事实证明,这个函数可以代替shift函数,不需要自己写,真希望早点想到,本身复制一个数组有多大的风险,上面写着结果可能不被定义。
当复制一个多维数组 时,你必须考虑第二维和后续维度的尺寸。这决定了你在复制时要转移多少。简单地说,按照我在实验中的理解,多维数组的所有数值在 "一行 "中排好,然后在 "一列 "中再排好。
总而言之,我现在无法复述这个理论。如果我需要使用它,我必须再次检查。
当复制一个多维数组 时,必须考虑到第二维和后续维度的尺寸。这决定了复制时需要多少移位。简单地说,按照我在实验中的理解,多维数组的所有数值在 "一行 "中排成一列,然后在 "列由... "中再排成一列。
一般来说,我现在无法复述这个理论。同样,如果有必要使用它,就必须进行检查。
在C++中,这一点没有区别
在任何这些情况下,都会有一个输出。因为它们位于一个内存块中,C++直接访问它们,而在我们的shell中,内存访问是封闭的,没有办法正确地将不同维度的数组传递到一个函数中,也没有办法这样寻址,唯一的细微差别是,在C++中多维数组位于动态内存中,甚至可能是分散的,虽然没有人看到电子地图。因此,通过概念本身来复制多维数组是一个非常微妙的问题,否则可能无法正确工作?
我的指标中有一段代码在MQL5中没有被执行
问题是,如果价格= =STO_LOWHIGH ,一切都能正常工作,但如果价格== STO_CLOSECLOSE,该函数只赋值给静态变量
vhigh = 0; vlow = High[i];
...绕过循环
我的指标中有一段代码在MQL5中没有被执行
问题是,如果价格= =STO_LOWHIGH ,一切都能正常工作,但如果价格== STO_CLOSECLOSE,该函数只赋值给静态变量
...绕过循环
圆括号有问题。在我看来,它们在这里根本就没有必要。这些都是完全没有必要的。
或者至少把问号前的高亮部分移到左边。
一般来说,你只需要理解?: 操作符等同于if else
你有一个条件两次。这样的条件就足够了
或者说我不明白你想表达的意思。支架有问题。在我看来,这里根本就不需要这些东西。他们都不是。
或者至少在问号前把高亮的内容移到左边。
一般来说,你只需要理解?: 操作符等同于if else
你有一个条件两次。这样一个条件就足够了。
或者说我不明白你想表达的意思。我想通过Low/High和Close/Close得到K周期内正常的maxHigh和minLow随机指标。
在初始化过程中,低/高可以正常工作,但关/闭不能正常工作。
支架有问题。在我看来,这里根本就不需要这些东西。他们都不是。
或者至少在问号前把高亮的内容移到左边。
一般来说,你只需要理解?: 操作符等同于if else
你有一个条件两次。这样的条件已经足够了。
或者说我不明白你想表达的意思。我没有马上明白,但如果你是指这个。
它并不能解决我的问题。