//+------------------------------------------------------------------+//| передача параметров по ссылке |//+------------------------------------------------------------------+double SecondMethod(int &i,int &j)
{
double res;
//---
i*=2;
j/=2;
res=i+j;
//---return(res);
}
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---.int a=14,b=8;
Print("a и b перед вызовом:",a," ",b);
double d= SecondMethod(a,b);
Print("a и b после вызова:",a," ",b);
}
//+------------------------------------------------------------------+//--- результат выполнения скрипта// a и b перед вызовом: 14 8// a и b после вызова: 28 4
struct str1
{
int time[];// в массиве порядка 10 тыс элементов
};
struct str2
{
str1 arr[];// в массиве порядка 1 тыс элементов
};
str2 m_name[]; // в массиве порядка 100 элементовint ArrFull[]; // массив в который нужно собрать отсортированное время без повторений//+------------------------------------------------------------------+voidOnStart()
{
// считаем что m_name[] ранее уже заполнилиint tempArr[];// объявляю дополнительный массивint size1 = ArraySize(m_name);
for(int i = 0; i < size1; i++)
{
int size2 = ArraySize(m_name[i].arr);
for(int j = 0; j < size2; j++)
{
// копирую в дополнительный массив все массивы времени из структурArrayInsert(tempArr, m_name[i].arr[j].time, ArraySize(tempArr));
}
}
// сортирую дополнительный массивArraySort(tempArr);
int size = ArraySize(tempArr);
ArrayResize(ArrFull, size);
ArrFull[0] = tempArr[0];
int j = 1;
// копирую не повторяющиеся элементы из дополнительного массива в массив с которым в дальнейшем буду работатьfor(int i = 1; i < size; i++)
if(ArrFull[j - 1] != tempArr[i])
{
ArrFull[j] = tempArr[i];
j++;
}
size = ArrayResize(ArrFull, j);
// дальше продолжение. много много букв
}
//+------------------------------------------------------------------+
非常感谢,亚历山大。您的更正使代码生效了。老实说,我自己在三棵松树上也犯了糊涂。我需要重新学习向函数传递参数。 显然,我在这里完全理解错了。
再见,弗拉基米尔。
将变量输出到全局区域并不是向函数传递参数...
在函数输入端的变量名前加上 &,所有问题都会迎刃而解。
将变量输出到全局作用域并不是将参数传递给函数...
在函数输入端的变量名前加上 &,所有问题都会迎刃而解。
嗨,阿列克谢,这就是问题所在!!!非常感谢,亲爱的!我的脑袋都要崩溃了,我还以为还缺了什么!事实证明,脑子是不够用的!!!!))
再见,弗拉基米尔。
在函数输入的变量名前加上 &,所有问题都将迎刃而解
我找到并观看了关于带有引用的函数的视频。从这段视频中我意识到,我需要的不仅仅是针对初学者的 MQL5 课程,而是针对特别有天赋的愚蠢初学者的 MQL5 课程。简而言之,我什么都不懂。一般来说,你需要消化你所收到的所有信息,并重新观看这个视频五次甚至六次。不过,在我的业余时间会有事情做的!))
弗拉基米尔
我找到并观看了一段关于带链接函数的视频。从这个视频课程中,我意识到我需要的不仅仅是一个针对 初学者的 MQL5 课程,而是一个针对特别愚蠢的初学者的 MQL5 课程。简而言之,我什么都不懂。总的来说,你需要消化所有接收到的信息,并重新观看这段视频五六遍。不过,闲暇时间我还是会做些事情的!))
弗拉基米尔
即使你无处消磨时间,也不要浪费时间。老师 "的名字不言自明,二流子就是二流子。
这段视频只对您有用 3 分钟。剩下的时间只会让你分心,失去有用的信息。
最好还是仔细阅读文档,结合实例进行实验,你就会明白一切。
即使无处浪费时间,也不要浪费时间。单凭 "老师 "这个名字就能说明问题,外行就是外行。
这段视频中有用的信息只有 3 分钟。其余的只是分散注意力,让你失去有用的信息。
最好还是仔细阅读文档,通过实例进行实验,你就会明白一切。
谢谢你,阿列克谢,我本以为视频课程会给我带来更多的信息和帮助,但结果恰恰相反。至于《MQL5 参考手册》中的 "参数传递"部分,我也是这样读的,但结果就像那句名言:"我看书,我看图!"。我什么也没看懂。总之,当然,我会再重读几遍,再做几次实验,我没有太多选择。))
弗拉基米尔
在观看了视频教程并阅读了《MQL5 参考手册》中有关通过引用 传递参数 的内容后,似乎大致明白了一些。不过,在分析了《参考手册》中的代码后,有一个片段仍然令人困惑,尽管在我看来,它与通过引用传递参数毫无关系:
在这方面,我有一个问题要问 MQL5 编程专家--他们到底为什么要把SecondMethod(a,b) 函数 "塞 "到OnStart() 中的d 变量中?这是脚本正确运行的先决条件,还是我又误解了什么?
敬上,弗拉基米尔
请帮帮我。
有许多带时间的数组,这些数组中某些元素的时间可能重合。
我需要将它们收集到一个数组中,而不重复时间值。
我是这样做的:
但结果是代码非常慢。需要加快速度。如何 ????
在这方面,我有一个问题想请教 MQL5 编程专家--他们到底为什么要把SecondMethod(a,b) 函数 "塞 "到OnStart() 中的d 变量中?难道这是脚本正确运行的先决条件,而我又误解了什么?
敬上,弗拉基米尔。
变量 d 被分配给函数执行的结果
感谢 Artyom 的回复!是否不可能 只使用 函数SecondMethod(a,b) 而不进行 赋值?
敬上,弗拉基米尔
感谢 Artyom 的回复!是否不可能 只使用 函数SecondMethod(a,b) 而不进行 赋值?
敬上,弗拉基米尔