[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 131

 
Vinin:

延续这一主题

以前在这里https://www.mql5.com/ru/forum/111497

在MT4测试器的优化结果和优化图中,什么都没有显示,只是空着。帮助!
 
Sergey_Rogozin:

我正在尝试填充一个一维数组ValueArr[]

我不确定这是否正确。

在每次打勾时,GetValue() 函数会输出一个int值。如何填充ValueArr[]?

我的尝试是否正确?

阵列的大小应该在每个勾中增加一个?那么它的大小将受到可用计算机内存的限制。

使用函数ArrayResize()增加数组ValueArr[]的大小,并将新数据追加到数组中。再说一遍--你想把它们加在哪里?在开始还是在结束?

如果在开始时,你需要移动以前写入的数据,否则它们将被新写入的数据覆盖。

如果在最后,那么。

初始设置数组大小=0,并在开始时增加1(size++),然后调整数组大小(ArrayResize(ValueArr, size);)并将数据写入以size-1为索引的单元格ValueArr[](ValueArr[size-1]),通过GetValue()获得;(ValueArr[size-1]=GetValue();)。

 
artmedia70:

你想让数组的大小在每个刻度上增加一个吗?那么它的大小将受到可用计算机内存的限制。

在每次打勾时,用函数ArrayResize()增加数组ValueArr[]的大小,并将新数据追加到数组中。再说一遍--你想把它们加在哪里?在开始还是在结束?

如果在开始时,你需要移动以前写入的数据,否则它们会被新写入的数据覆盖。

初始设置数组大小=0,并在开始时增加1(size++),然后调整数组大小 ArrayResize(ValueArr, size);并将GetValue()函数获得的数据追加到以size-1为索引的ValueArr[]数组单元(ValueArr[size-1])。

是的,来自GetValue()的数据将在每次打勾时被写入ValueArr[]数组中。

数组的大小随着每一次打勾而增加,但也可以一次性定义,比如说,[10000]。


数组中的元素 按到达顺序排列,即第一个写入的元素是 "总队列 "中的第一个。

第二个元素是队列中的第二个。


如果我理解正确,它看起来像这样。


 int size=0;
 int ValueArr[size];
 
//-----------------

int start()
 {
   size++;
   ArrayResize(ValueArr, size);
   ValueArr[size-1] = GetValue();
   
 return();
 }

//-----------------

int GetValue()
 {
 .......
 return(Val);
 }

我希望我对你的理解是正确的。

 
Sergey_Rogozin:

数组中的元素按到达顺序排列,即第一个写入的元素在 "总队列 "中排第一位。

为什么不使用一个时间序列数组
 
eddy:
为什么不使用时间序列阵列?
一个时间序列?有什么办法可以帮助记录像柚木历史 这样的东西吗?
 
Sergey_Rogozin:

我正在尝试填充一个一维数组ValueArr[]

我不确定这是否正确。

在每次打勾时,GetValue() 函数会输出一个int值。如何填充ValueArr[]?

我的尝试是否正确?

所以
 int ValueArr[size]; 

你不能。在声明一个数组 时,你要么指定一个常数作为大小,要么什么都不指定,那么这个数组就被认为是动态的。

正确的方法是这样的

int ValueArr[]; 

int init()
{
   ArrayResize(ValueArr,size);
}
 
柚木 - 没有
 

请指教!在MT4中是否有一个功能,可以考虑到之前的交易结果来开立一个新的交易?如果是,我怎样才能正确地指定它?

 
sto_mat:

请指教!在MT4中是否有一个功能,可以考虑到之前的交易结果来开立一个新的交易?如果是,我怎样才能正确地指定它?


没有这样的内置函数,你必须自己编写,我在这里展示了一个例子:https://www.mql5.com/ru/forum/131277/page113
 
alsu:
这就是

你不能。当声明一个数组时,要么指定一个常数作为大小,要么什么都不指定,然后数组就被认为是动态的。

正确的方法是这样的


那么我想就是这样了。

 int size, ValueArr[]; 
//-----------------
 int init()
 {
   ArrayResize(ValueArr,size);
 }
//-----------------

int start()
 {
   ValueArr[size-1] = GetValue();
 return();
 }

//-----------------

int GetValue()
 {
 .......
 return(Val);
 }

这样做对吗?