错误、漏洞、问题 - 页 2729

 
Alexey Viktorov:

这不是mql5的特点,这只是一些尝试性的教学秩序。

顺序习惯是指编译器给出警告(或错误)。将整数转换为分数会返回0--这是无稽之谈,而不是顺序。90%的旧代码会以这种方式断裂。

注意,工作变体仍然是int! 也就是说,问题不在于替换步骤中的类型转换,而在于计算步骤中的转换。

Added: 切换到MQ-demo,更新了工作终端。它没有这个问题。

 
编译错误
class A {  
public:
        static int i;
} a; //Error: unresolved static variable 'A::i'
int A::i = 0;
 
Igor Zakharov:

排序是指编译器给出警告(或错误)。将整数转换成分数会返回0--这是无稽之谈,不是排序。90%的旧代码都是这样破损的。

注意,工作变体仍然是int! 也就是说,问题不在于替换步骤中的类型转换,而在于计算步骤中的转换。

Added: 切换到MQ-demo,更新了工作终端。它没有这个问题。

在这种情况下,没有突出可能的选择,难道不令人怀疑吗?

   ObjectSetDouble (0,name,OBJPROP_ANGLE,dir// тут должен появиться список вариантов переменных double
 
执行过程中出错
class A {  
public:
         A() { i = ++ii; printf( "%d", i ); }
        ~A() {           printf( "%d", i ); }
        int i;
        static int ii;
};
int A::ii = 0;
A a[ 2 ];
void OnStart() {}

  • 在MQL中的结果。1212
  • 而在C++中:1221
 
Alexey Viktorov:

在这种情况下,没有突出可能的选择,难道不令人怀疑吗?

:)

 
Igor Zakharov:

:)

是的...奇怪的是,前一段时间,错误类型的变量没有被突出显示。也许他们是故意修好的,或者会注意到这个对话并再次修好它。总之,如果函数需要变量类型为double,就应该使用double。

 
这一直是一个错误。
#define  MACRO( X, Y )
MACRO( 1, 2, 3) //Warning: too many arguments for function-like macro 'MACRO'
为什么要发出警告?特别是它们总是数量过多,而你有时却不注意
 
Alexey Viktorov:

是的...奇怪的是,有一段时间,不适当类型的变量没有被突出显示。也许他们是故意修好的,或者会注意到这个对话并再次修好它。总之,如果函数需要变量的类型是double,就应该使用double。

阿列克谢,我注意到你喜欢文件的链接,我有一个给你 :)

https://www.mql5.com/ru/docs/basis/types/casting

int到double是一个有效的隐式转换,没有数据损失,合法。

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Часто возникает необходимость преобразовать один числовой тип в другой. Не каждый числовой тип допустимо преобразовать в другой, допустимые преобразования в MQL5 показаны на схеме: Сплошные линии со стрелками обозначают преобразования, которые выполняются без потери информации. Вместо типа char может выступать тип bool (оба занимают в памяти 1...
 

关于策略测试器 的操作问题。

我正在运行测试。专家顾问打开一个带有SL和TP的头寸。然后,它就会滚动,仓位就会关闭,而不会重新打开。

它是什么?一个错误?我已经有一段时间没有使用该测试仪了,它没有出现这样的问题。下面是测试人员的日志。我们看到,仓位在翻转后被打开和关闭,然后写着它是通过BUY打开的。我在测试器中粘贴了以下命令

PositionSelect(_Symbol)来检查翻转后是否有未结头寸,结果总是一样--没有未结头寸。


2020.04.28 18:14:14.609 2014.01.09 05:00:00 即时买入1.00 AUDUSD at 0.88800 sl: 0.88450 tp: 0.89200 (0.88750 / 0.88800 / 0.88750)

2020.04.28 18:14:14.609 2014.01.09 05:00:00 交易#8在0.88800买入1.00 AUDUSD完成(基于订单#8)。

2020.04.28 18:14:14.610 2014.01.09 05:00:00 交易完成 [#8在0.88800买入1.00 AUDUSD

2020.04.28 18:14:14.610 2014.01.09 05:00:00 执行的订单在0.88800买入1.00 [#8在0.88800买入1.00 AUDUSD


2020.04.28 18:14:24.169 2014.01.09 23:59:59 交易#9在0.88980卖出1.00 AUDUSD完成(基于订单#9)。

2020.04.28 18:14:24.169 2014.01.09 23:59:59 翻转交易完成 [#9在0.88980卖出1.00 AUDUSD

2020.04.28 18:14:24.170 2014.01.09 23:59:59 交易#10在0.8899950买入0.00 AUDUSD完成(基于订单#10)。

2020.04.28 18:14:24.170 2014.01.09 23:59:59 翻转交易完成 [#10在0.8899950买入0.00 AUDUSD]


 
Igor Zakharov:

阿列克谢,我注意到你喜欢文件的链接,我有一个给你 :)

https://www.mql5.com/ru/docs/basis/types/casting

int到double是一个有效的隐式转换,没有数据损失,合法。

我链接到文档,这样我就不必在帖子里重写文档,也让人们习惯于阅读文档。 想象一下,论坛上有一些人根本不知道有这种文件存在。至于我个人,我在文件中看到过这样的图片,但没有尝试去彻底了解它。对我来说,使用函数所需类型的变量的习惯已经足够了。作为最后手段,我将强制转换为正确的类型。