新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1098

 
Grigori.S.B:

请告诉我为什么编译器在下面的MQL4测试脚本代码中会产生警告。

第27行有一个关于数据类型不匹配的警告。两个变量都有相同的int类型。下面是一个脚本编译的截图。

如果我把第27行改为

警告没有显示出来。

有什么诀窍吗?

没有什么诀窍。变量t被声明为双数

事实上,这个T在任何地方都没有意义。

 
Alexey Viktorov:

而且没有任何诀窍。变量t被声明为双数

非常感谢,我正在努力工作--是时候休息了。

阿列克谢-维克多罗夫

事实上,这个T并没有把任何价值带到任何地方。

它是一个缓冲变量,用于在排序过程中临时存储结果。

 

这些初始化方法有什么不同?

class Klas{};
Klas *Klas_
Klas Klas_
 
Seric29:
1. class Klas{};
2. Klas *Klas_
3. Klas Klas_

1.类型(类别)描述

2.类型(类)指针的声明

3.类实例的声明--这是初始化,因为Klas()构造函数将被调用,如果它没有被描述,那么默认构造函数将被调用--帮助

塞里奇29

这些初始化方法有什么不同?

即初始化只有第3步。

 
Igor Makanu:

1.类型(类别)描述

2.类型(类)指针的声明

3.类实例的声明--这是初始化,因为Klas()构造函数将被调用,如果没有描述,那么将调用默认构造函数--帮助

即只有条款3被初始化。

我没有在帮助中看到如何初始化它们,也许我只是看了一下,没有理解,因为帮助中对类的描述很差,我读了30遍。

是的,确实是在课后,因为我没有条目,但他们在OnStart中放了这个代码

   CFoo foo1(TimeCurrent());     // явный вызов параметрического конструктора 
   CFoo foo2();                  // явный вызов параметрического конструктора с параметром по умолчанию 
   CFoo foo3=D'2009.09.09';      // неявный вызов параметрического конструктора 
   CFoo foo40(foo1);             // явный вызов конструктора копирования 
   CFoo foo41=foo1;              // неявный вызов конструктора копирования 
   CFoo foo5;                    // явный вызов конструктора по умолчанию (если конструктор по умолчанию отсутствует, 
                                 // то вызывается параметрический конструктор с параметром по умолчанию) 
//--- допустимые варианты получения указателей CFoo 
   CFoo *pfoo6=new CFoo();       // динамическое создание объекта и получение указателя на него 
   CFoo *pfoo7=new CFoo(TimeCurrent());// ещё один вариант динамического создания объекта 
   CFoo *pfoo8=GetPointer(foo1); // теперь pfoo8 указывает на объект foo1 

你想怎么理解就怎么理解吧。我不知道你为什么要这样解释。

CFoo *pfoo6=new CFoo();       // динамическое создание объекта и получение указателя на него

我不明白为什么我需要这个指针。

CFoo *pfoo7=new CFoo(TimeCurrent());// ещё один вариант динамического создания объекта 

这又是为了什么呢? 无论你想要什么,你认为它意味着什么。

CFoo foo3=D'2009.09.09';      // неявный вызов параметрического конструктора

我也不明白这意味着什么。

CFoo foo40(foo1);             // явный вызов конструктора копирования 
这到底是为了什么也不清楚。他们不会把它上传,而是正常而简单地写下这个想法。
 

问候。

你能告诉我在mt4和mt5中如何计算网格的水平层次吗?

 
Seric29:

还有,为什么要通过指针初始化,我在帮助中完全没有看到如何初始化它们,也许我看了却不明白,因为类在帮助中的描述很差,读了30遍。

指针就是指针,初始化就是初始化

首先要理解这个代码。

1. int a;
2. int a = 5;

在这段代码中,什么是初始化,什么是变量声明

内存何时被分配?

然后用这些知识来讨论OOP以及指向类和指向对象的指针。


走开,由于某些原因我不能回答基本问题

 
Igor Makanu:

一个指针就是一个指针,一个初始化就是一个初始化

首先要理解这个代码。

这段代码中什么是初始化,什么是变量声明

内存何时被分配?

然后用这些知识来讨论OOP以及指向类和指向对象的指针。


走了,由于某些原因,我无法回答基本问题。

这里有一个简单而清晰的例子。第一个变量是变量的声明和内存分配(变量存储默认的垃圾任意值或扇区号或C++的地址,我不知道),第二个变量是初始化。

而这些指向型的东西是干什么用的,用什么来吃也应该正常解释。

指向一个类的指针和指向一个对象的指针

我也应该明白它们是什么。 我将在网上查找,看看是否有什么。

 
Andrey Sokolov:

问候。

在mt4和mt5中如何计算网格的水平层次?

如果你想检测一个水平线,只需打开/关闭一个订单,然后添加一些数值,得到一个新的价格,让你观察价格何时突破这个水平条件,然后下一个新的订单,或者在考虑到最大订单数的情况下,下一个待定订单 的网格,然后按照这个网格进行操作。


一般来说,任何紧凑的代码都更容易查看和修改,以完成自己的任务。


我不知道你是否试过,我也没有试过很多程序,我认为在简单的TS中使用起来比较困难,但也许你没有试过。

 
Seric29:

这里有一个简单而清晰的例子。第一个选项是声明变量和内存分配(变量存储默认的垃圾任意值或扇区号或C++中的地址,这里不知道),第二个选项是初始化。

而这些指点类型和吃什么的问题也应该得到适当的解释。

内存分配 将在例1和例2中出现

例2是一个声明和初始化,例1只是一个声明

类是相同的,类是一个用户定义的类型,包含字段(属性)和处理这些字段的方法。

一个指向类的指针是一个声明,但没有初始化,也没有为类型(类)分配内存。

pointer = new MyClass(); - 这是一个声明和初始化,它创建了一个新的类的实例,这个实例将作为一个对象的链接被返回(不完全是一个链接,在MQL中它是...不重要的,所以你会被混淆)。

....

如果你不想读,至少可以用我的这个帖子来修改你的例子。

CFoo *pfoo6=new CFoo();

CFoo *pfoo6;
pfoo6 = new CFoo();
CFoo *pfoo_7 =  pfoo6;

并尝试了解发生了什么--当你把最后一行分配到.....,但仍然读,只是在论坛上询问是不可能的。