新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 420 1...413414415416417418419420421422423424425426427...1953 新评论 Maxim Kuznetsov 2018.01.17 04:33 #4191 igrok333: 是否有一个函数可以返回变量的类型? 例如,你写道。 int a=10。 然后你写道。 functia(a); 它说:INT!:) string functia(int a) { return "INT!"; }// 突然间 string functia(double a) { return "DABLE!"; }//还意外地 Artyom Trishkin 2018.01.17 05:53 #4192 igrok333: 是否有一个函数可以返回一个变量类型? 例如,你写道。 int a=10。 然后你写道。 functia(a); 它说:INT!:)来自帮助。void OnStart() { //--- CTrade trade; double d_value=M_PI; int i_value=INT_MAX; Print("d_value: type=",GetTypeName(d_value), ", value=", d_value); Print("i_value: type=",GetTypeName(i_value), ", value=", i_value); Print("trade: type=",GetTypeName(trade)); //--- } //+------------------------------------------------------------------+ //| Возвращает в строковом виде тип | //+------------------------------------------------------------------+ template<typename T> string GetTypeName(const T &t) { //--- вернем тип в виде строки return(typename(T)); //--- } [删除] 2018.01.17 09:40 #4193 WinProject:这就简单多了。创建一个显示按钮(或使用现有的一个按钮)。进一步按--所有必要的对象都在所有TF上设置可见性标志。当按钮被释放时,所有对象都被设置为在所有TF上显示属性(或必要时)。没有必要删除/重新安排任何东西。唯一要做的就是在这个操作之后重新绘制图表。对象属性OBJPROP_TIMEFRAMES。 Corvin85 2018.01.17 11:14 #4194 你能告诉我如何从指标中获取数据到一个数组吗?也就是说,很明显,我需要声明一个数组双重num_array[]。我不太确定接下来该怎么做......num_array[0] = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i); //索引为[0]的数组等于MA,但如果我们把索引改为[1],那么结果是num_array[1]等于与num_array[0]的指标数据相同。情况不应该是这样的。阵列应按顺序填充。我所能想到的是将一天分为24小时小时,声明一个二维数组,并为每个小时分配一个索引,并有自己的字符串等....。也许有一个更简单的方法或更少的混乱? Vladislav Andruschenko 2018.01.17 11:16 #4195 Corvin85:你能告诉我如何从指标中获取数据到一个数组吗?也就是说,很明显,我需要声明一个数组双重num_array[]。我不太确定接下来该怎么做......num_array[0] = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i); //索引为[0]的数组等于MA,但如果我们把索引改为[1],那么结果是num_array[1]等于与num_array[0]的指标数据相同。情况不应该是这样的。阵列应按顺序填充。我所能想到的是将一天分为24小时小时,声明一个二维数组,并为每个小时分配一个索引,并有自己的字符串等....。也许有一个更简单的方法或更少的混乱?我是这样认为的。double num_array[]; ArrayResize(num_array,24); for(int i=0;i<24;i++) { num_array[i] = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i); } Corvin85 2018.01.17 11:24 #4196 Vladislav Andruschenko: 我是这样看的。double num_array[]; ArrayResize(num_array,24); for(int i=0;i<24;i++) { num_array[i] = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i); } 啊,原来是通过ArrayResize 设置数组中的最大索引数,并通过循环运行它们。非常感谢,但是有一个问题,当所有的索引都被指标中的数据填满时,是否应该通过ArrayFree 清除它们,或者它将自己重写? 或者在24倍之后,所有的都将完全停止?对不起,我的问题很愚蠢,但数组是一种黑马,功能不明。 Vladislav Andruschenko 2018.01.17 11:44 #4197 Corvin85: 哦,我可以通过ArrayResize 设置数组中索引的最大数量,并通过循环运行它们。非常感谢,但是有一个问题,当所有的索引都被指标中的数据填满时,我是否应该通过ArrayFree 清除它们,或者它将自己重写? 或者在24日之后所有的都将停止?很抱歉问得这么直白,但数组有点像黑马,功能不明。 嗯,这取决于你所追求的目的。我写的代码是 用过去24个条形的mA数据来填充数组。它将被持续更新。 Konstantin Erin 2018.01.17 12:00 #4198 Corvin85: 哦,我可以通过ArrayResize 设置数组中索引的最大数量,并通过循环运行它们。非常感谢,但是有一个问题,当所有的索引都被指标中的数据填满时,我是否应该通过ArrayFree 清除它们,或者它将自己重写? 或者在24日之后所有的都将停止?很抱歉问得这么直白,但数组有点像黑马,功能不明。数组 = 一组简单的变量排成一排,方便索引参考。索引是一个整数变量,用于按编号访问数组项目,以便组织一个循环。索引=数字计数器。ArrayFree = 阵列破坏 - 就像用推土机推倒破烂不堪的房屋。但它可以用ArrayResize 再次恢复。 好吧 ,ArrayResize是围绕住宅阵列的栅栏。 我们的在这里,但陌生人在栅栏后面,禁止进入那里。你可以多次进入每个房子(给数组元素 分配一个新值)。 数组在很多方面都非常简单和方便。而那些害怕数组的人--那些...因此,最好能掌握他们的情况。 Konstantin Erin 2018.01.17 12:17 #4199 //+------------------------------------------------------------------+ //| Проверка массива | //+------------------------------------------------------------------+ #property strict int m[10]; int n; void OnStart() { ArrayInitialize(m,7); Вывод(); // Заполнить семерками ArrayResize(m,7); Вывод(); // Удалить 3 последних элемента ArrayResize(m,9); Вывод(); // Увеличить размер m[1]=1; m[7]=1; Вывод(); // Изменить 2 элемента for(n=0; n<9; n++) m[n]=n*n; Вывод(); // Заполнить квадратами номеров ArrayCopy(m,m,0,2,7); Вывод(); // Копирование со сдвигом ArrayResize(m,ArraySize(m)-2); Вывод(); // Удалить 2 последних элемента } void Вывод() { string s=""; for(n=0; n<ArraySize(m); n++) s+=" " + string(m[n]); Alert(ArraySize(m), ":", s); } 尝试运行这样的脚本--并进行练习 igrok333 2018.01.17 17:49 #4200 Artyom Trishkin:从参考资料来看。 cp 1...413414415416417418419420421422423424425426427...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
是否有一个函数可以返回变量的类型?
例如,你写道。
int a=10。
然后你写道。
functia(a);
它说:INT!
:)
string functia(double a) { return "DABLE!"; }//还意外地
是否有一个函数可以返回一个变量类型?
例如,你写道。
int a=10。
然后你写道。
functia(a);
它说:INT!
:)
来自帮助。
这就简单多了。创建一个显示按钮(或使用现有的一个按钮)。进一步按--所有必要的对象都在所有TF上设置可见性标志。当按钮被释放时,所有对象都被设置为在所有TF上显示属性(或必要时)。没有必要删除/重新安排任何东西。唯一要做的就是在这个操作之后重新绘制图表。
对象属性OBJPROP_TIMEFRAMES。
你能告诉我如何从指标中获取数据到一个数组吗?也就是说,很明显,我需要声明一个数组
双重num_array[]。
我不太确定接下来该怎么做......
num_array[0] = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i); //索引为[0]的数组等于MA,但如果我们把索引改为[1],那么结果是num_array[1]等于
与num_array[0]的指标数据相同。情况不应该是这样的。阵列应按顺序填充。我所能想到的是将一天分为24小时
小时,声明一个二维数组,并为每个小时分配一个索引,并有自己的字符串等....。
也许有一个更简单的方法或更少的混乱?
你能告诉我如何从指标中获取数据到一个数组吗?也就是说,很明显,我需要声明一个数组
双重num_array[]。
我不太确定接下来该怎么做......
num_array[0] = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,i); //索引为[0]的数组等于MA,但如果我们把索引改为[1],那么结果是num_array[1]等于
与num_array[0]的指标数据相同。情况不应该是这样的。阵列应按顺序填充。我所能想到的是将一天分为24小时
小时,声明一个二维数组,并为每个小时分配一个索引,并有自己的字符串等....。
也许有一个更简单的方法或更少的混乱?
我是这样认为的。
我是这样看的。
哦,我可以通过ArrayResize 设置数组中索引的最大数量,并通过循环运行它们。非常感谢,但是有一个问题,当所有的索引都被指标中的数据填满时,我是否应该通过ArrayFree 清除它们,或者它将自己重写? 或者在24日之后所有的都将停止?很抱歉问得这么直白,但数组有点像黑马,功能不明。
哦,我可以通过ArrayResize 设置数组中索引的最大数量,并通过循环运行它们。非常感谢,但是有一个问题,当所有的索引都被指标中的数据填满时,我是否应该通过ArrayFree 清除它们,或者它将自己重写? 或者在24日之后所有的都将停止?很抱歉问得这么直白,但数组有点像黑马,功能不明。
数组 = 一组简单的变量排成一排,方便索引参考。索引是一个整数变量,用于按编号访问数组项目,以便组织一个循环。索引=数字计数器。ArrayFree = 阵列破坏 - 就像用推土机推倒破烂不堪的房屋。但它可以用ArrayResize 再次恢复。 好吧 ,ArrayResize是围绕住宅阵列的栅栏。 我们的在这里,但陌生人在栅栏后面,禁止进入那里。你可以多次进入每个房子(给数组元素 分配一个新值)。 数组在很多方面都非常简单和方便。而那些害怕数组的人--那些...因此,最好能掌握他们的情况。
//+------------------------------------------------------------------+ //| Проверка массива | //+------------------------------------------------------------------+ #property strict int m[10]; int n; void OnStart() { ArrayInitialize(m,7); Вывод(); // Заполнить семерками ArrayResize(m,7); Вывод(); // Удалить 3 последних элемента ArrayResize(m,9); Вывод(); // Увеличить размер m[1]=1; m[7]=1; Вывод(); // Изменить 2 элемента for(n=0; n<9; n++) m[n]=n*n; Вывод(); // Заполнить квадратами номеров ArrayCopy(m,m,0,2,7); Вывод(); // Копирование со сдвигом ArrayResize(m,ArraySize(m)-2); Вывод(); // Удалить 2 последних элемента } void Вывод() { string s=""; for(n=0; n<ArraySize(m); n++) s+=" " + string(m[n]); Alert(ArraySize(m), ":", s); }
尝试运行这样的脚本--并进行练习从参考资料来看。