新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1099 1...109210931094109510961097109810991100110111021103110411051106...1953 新评论 Seric29 2020.03.22 13:27 #10981 Igor Makanu: 内存分配 将在实例1和实例2中进行 例2既是声明又是初始化,例1只有声明。 在帮助中已经可以写得更清楚了。我立即声明了它,因为我在类中有静态计算,我不需要通过new操作符创建对象。 告诉我,我想做这样一件事,这意味着我想声明一个类,然后声明一个数组,并在数组中存储一个指向该类的指针,这到底能不能做到? Igor Makanu 2020.03.22 13:44 #10982 Seric29: 告诉我,我想做这样一件事,所以我想声明一个类,然后声明一个数组,并在数组中存储一个指向该类的指针,这到底能不能做到? 再三....一个类首先是一个数据类型,如int、double......。 你想要一个这种数据类型的数组?-声明一个数组,如果数组是动态的,那么就调整它的大小,然后用必要的数据初始化每个元素--你需要指针,那么就用指向一个类的指针初始化它们,你需要一个类的实例,那么数组的每个元素将不是一个指针而是一个对象本身 这就是OOP的精髓,任何一个类首先都是一个用户数据类型....。我不知道该怎么说,但是方法和普通的数据类型是一样的,你在类里面写什么是个人的事情,但是新实例的初始化总是从构造函数开始的,而且有什么构造函数--默认的,有参数或没有参数--它允许你选择如何初始化对象......,唉,但是还是要看书,这里没有办法用问题做。 Andrei Sokolov 2020.03.22 13:56 #10983 Igor Makanu: 通常他们通过开盘价确定最外层的上/下限订单,然后增加一些数值,得到一个新的价格,当价格突破这个水平条件时,他们或者监测并下一个新的订单,或者立即下一个以最大订单数为目标的挂单 网格,然后追踪这个网格。 我感谢你的关注,但我指的是图表上的虚线格子。 你能告诉我在mt4和mt5中如何计算网格的水平线吗? 当我在没有固定比例的情况下滚动图表时,它们会移动,而且在mt4和mt5中它们的移动方式有点不同。也许有人知道它是如何计算的,这样我就不必用缩进和捆绑等方式来猜测。 Tretyakov Rostyslav 2020.03.22 14:39 #10984 Andrey Sokolov: 谢谢你没有与我们擦肩而过,但我说的不是这个,我说的是图表上的虚线格子。 你能告诉我mt4和mt5中网格的水平线是如何计算的吗? 如果刻度不固定,当我滚动图表时,它们就会移动,而且mt4和mt5中 的移动 方式有点不同。也许有人知道它是如何计算的,这样我就不必用缩进、装订和其他东西来猜测。 它只是把窗口分成相等的部分,取决于屏幕分辨率。 我在MT4和MT5中都是垂直划分为15个部分 Seric29 2020.03.22 15:37 #10985 Igor Makanu: 再三....一个类首先是一个数据类型,如int、double......。 你想要一个该类型的数据数组?-声明一个数组,如果数组是动态的,那么就调整它的大小,然后用必要的数据初始化每个元素--你需要指针,那么就用指向类的指针初始化它们,你需要类的实例,那么数组的每个元素将不是指针,而是对象本身 这就是OOP的精髓,任何一个类首先都是一个用户数据类型....。我不知道该怎么说,但是方法和普通的数据类型是一样的,你在类里面写什么是个人的事情,但是新实例的初始化总是从构造函数开始的,什么构造函数--默认的,带参数的或者不带参数的--你可以选择如何初始化一个对象...... ugh,但是还是要看书,没有办法用这种方式来做 是的,我意识到这是不可能的,因为当你创建一个数组时,程序需要指定类型,因为我想在一个数组中保存不同类的指针,这是不可能的,因为在mql中数组不能是不同的类型或杂项,在s++中做到了,但不能用这样复杂的对象。所以我的想法在这里行不通。 Artyom Trishkin 2020.03.22 15:55 #10986 Seric29: 是的,我意识到这是不可能的,因为当你创建一个数组时,程序要求你指定类型,因为我想在一个数组中保存不同类的指针,这将是不可能的,因为在mql中数组不能有不同的类型或品种,在C++中做到了,但不能用这样复杂的对象。所以我的想法在这里行不通。 一切都已完成。你从基类继承你的对象,并以基类的类型创建一个数组。而且所有继承的对象都可以在数组中。 Seric29 2020.03.22 16:59 #10987 Artyom Trishkin: 一切都已完成。你从基类继承你的对象,并以基类的类型创建一个数组。而且所有继承的对象都可以在数组中。 显示最简单和最原始的例子,有2个类,然后继承,如何将每个类的引用放在2个元素的数组中(0个第一类1个第二类)? Tretyakov Rostyslav 2020.03.22 17:20 #10988 Andrey Sokolov: Makar,你为什么要写一些明显不真实的东西? 当滚动图表时,你可以改变水平网格线的 偏移量,它们在mt4和mt5中 的移动略有不同。 他们不这样做! 它们只有在有指示窗口时才会移动,在所有其他情况下它们不会移动。 Igor Makanu 2020.03.22 17:22 #10989 Seric29: 并展示最简单和最原始的例子,其中有2个类进一步继承,如何将每个类的引用放在一个2个元素的数组中(0个第一类1个第二类)? class CBase{ protected: int v; public: CBase(): v(0) { } int getV() { return(v); } virtual int calc() = 0; }; class A:public CBase { public: virtual int calc() {return(--v);} //декремент }; class B:public CBase { public: virtual int calc() {return(++v);} //инкремент }; //+------------------------------------------------------------------+ void OnStart() { // 2 указателя которые инициализируем экземплярами обьектов A и B CBase *arr_base[2]; arr_base[0] = new A; arr_base[1] = new B; // вызовем 10 раз метод calc() для каждого обьекта for(int j=ArraySize(arr_base)-1; j>=0; j--) { for(int i=0; i<10; i++) { arr_base[j].calc(); } } Print("A.v = ",arr_base[0].getV()); Print("B.v = ",arr_base[1].getV()); //удалим обьекты for(int j=ArraySize(arr_base)-1; j>=0; j--) { delete arr_base[j]; } } //+------------------------------------------------------------------+ 2020.03.22 21:21:38.544 tst (EURUSD,H1) A.v = -10 2020.03.22 21:21:38.544 tst (EURUSD,H1) B.v = 10 Seric29 2020.03.22 18:23 #10990 Igor Makanu: 2020.03.22 21:21:38.544 tst (EURUSD,H1) A.v = -10 2020.03.22 21:21:38.544 tst (EURUSD,H1) B.v = 10 谢谢你。而函数应该是虚拟的简单的不能,我已经会自己实验了。 1...109210931094109510961097109810991100110111021103110411051106...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
内存分配 将在实例1和实例2中进行
例2既是声明又是初始化,例1只有声明。
在帮助中已经可以写得更清楚了。我立即声明了它,因为我在类中有静态计算,我不需要通过new操作符创建对象。
告诉我,我想做这样一件事,这意味着我想声明一个类,然后声明一个数组,并在数组中存储一个指向该类的指针,这到底能不能做到?
告诉我,我想做这样一件事,所以我想声明一个类,然后声明一个数组,并在数组中存储一个指向该类的指针,这到底能不能做到?
再三....一个类首先是一个数据类型,如int、double......。
你想要一个这种数据类型的数组?-声明一个数组,如果数组是动态的,那么就调整它的大小,然后用必要的数据初始化每个元素--你需要指针,那么就用指向一个类的指针初始化它们,你需要一个类的实例,那么数组的每个元素将不是一个指针而是一个对象本身
这就是OOP的精髓,任何一个类首先都是一个用户数据类型....。我不知道该怎么说,但是方法和普通的数据类型是一样的,你在类里面写什么是个人的事情,但是新实例的初始化总是从构造函数开始的,而且有什么构造函数--默认的,有参数或没有参数--它允许你选择如何初始化对象......,唉,但是还是要看书,这里没有办法用问题做。
通常他们通过开盘价确定最外层的上/下限订单,然后增加一些数值,得到一个新的价格,当价格突破这个水平条件时,他们或者监测并下一个新的订单,或者立即下一个以最大订单数为目标的挂单 网格,然后追踪这个网格。
我感谢你的关注,但我指的是图表上的虚线格子。
你能告诉我在mt4和mt5中如何计算网格的水平线吗? 当我在没有固定比例的情况下滚动图表时,它们会移动,而且在mt4和mt5中它们的移动方式有点不同。也许有人知道它是如何计算的,这样我就不必用缩进和捆绑等方式来猜测。
谢谢你没有与我们擦肩而过,但我说的不是这个,我说的是图表上的虚线格子。
你能告诉我mt4和mt5中网格的水平线是如何计算的吗? 如果刻度不固定,当我滚动图表时,它们就会移动,而且mt4和mt5中 的移动 方式有点不同。也许有人知道它是如何计算的,这样我就不必用缩进、装订和其他东西来猜测。
它只是把窗口分成相等的部分,取决于屏幕分辨率。
我在MT4和MT5中都是垂直划分为15个部分
再三....一个类首先是一个数据类型,如int、double......。
你想要一个该类型的数据数组?-声明一个数组,如果数组是动态的,那么就调整它的大小,然后用必要的数据初始化每个元素--你需要指针,那么就用指向类的指针初始化它们,你需要类的实例,那么数组的每个元素将不是指针,而是对象本身
这就是OOP的精髓,任何一个类首先都是一个用户数据类型....。我不知道该怎么说,但是方法和普通的数据类型是一样的,你在类里面写什么是个人的事情,但是新实例的初始化总是从构造函数开始的,什么构造函数--默认的,带参数的或者不带参数的--你可以选择如何初始化一个对象...... ugh,但是还是要看书,没有办法用这种方式来做
是的,我意识到这是不可能的,因为当你创建一个数组时,程序需要指定类型,因为我想在一个数组中保存不同类的指针,这是不可能的,因为在mql中数组不能是不同的类型或杂项,在s++中做到了,但不能用这样复杂的对象。所以我的想法在这里行不通。
是的,我意识到这是不可能的,因为当你创建一个数组时,程序要求你指定类型,因为我想在一个数组中保存不同类的指针,这将是不可能的,因为在mql中数组不能有不同的类型或品种,在C++中做到了,但不能用这样复杂的对象。所以我的想法在这里行不通。
一切都已完成。你从基类继承你的对象,并以基类的类型创建一个数组。而且所有继承的对象都可以在数组中。
显示最简单和最原始的例子,有2个类,然后继承,如何将每个类的引用放在2个元素的数组中(0个第一类1个第二类)?
Makar,你为什么要写一些明显不真实的东西? 当滚动图表时,你可以改变水平网格线的 偏移量,它们在mt4和mt5中 的移动略有不同。
他们不这样做!
它们只有在有指示窗口时才会移动,在所有其他情况下它们不会移动。
并展示最简单和最原始的例子,其中有2个类进一步继承,如何将每个类的引用放在一个2个元素的数组中(0个第一类1个第二类)?
2020.03.22 21:21:38.544 tst (EURUSD,H1) A.v = -10
2020.03.22 21:21:38.544 tst (EURUSD,H1) B.v = 10
2020.03.22 21:21:38.544 tst (EURUSD,H1) A.v = -10
2020.03.22 21:21:38.544 tst (EURUSD,H1) B.v = 10
谢谢你。而函数应该是虚拟的简单的不能,我已经会自己实验了。