오류, 버그, 질문 - 페이지 2729

 
Alexey Viktorov :

이것은 mql5의 기능이 아니라 주문에 익숙해지려는 몇 가지 시도일 뿐입니다.

순서는 컴파일러가 경고(또는 오류)를 발행할 때입니다. 정수를 분수로 변환하면 0이 반환됩니다. 이것은 순서가 아니라 말도 안되는 소리입니다. 따라서 오래된 코드의 90%가 깨집니다.

그리고 작업 버전은 어쨌든 int와 함께 있었습니다! 저것들. 함수로 치환하는 단계가 아니라 계산하는 단계에서 형변환을 하는 것이다.

추가됨: MQ 데모로 전환되고 작업 터미널이 업데이트되었습니다. 이 문제가 없습니다.

 
컴파일 중 오류
 class A {  
public :
         static int i;
} a; //Error: unresolved static variable 'A::i'
int A::i = 0 ;
 
Igor Zakharov :

순서는 컴파일러가 경고(또는 오류)를 발행할 때입니다. 정수를 분수로 변환하면 0이 반환됩니다. 이것은 순서가 아니라 말도 안되는 소리입니다. 따라서 오래된 코드의 90%가 깨집니다.

그리고 작업 버전은 어쨌든 int와 함께 있었습니다! 저것들. 함수로 치환하는 단계가 아니라 계산하는 단계에서 형변환을 하는 것이다.

추가됨: MQ 데모로 전환되고 작업 터미널이 업데이트되었습니다. 이 문제가 없습니다.

그리고이 경우 가능한 옵션을 강조 표시하지 않아도 의심이 생기지 않습니까?

   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을 대체해야 합니다.

Alexey, 나는 당신이 문서 링크를 좋아한다는 것을 알았고, 당신을 위해 하나가 있습니다 :)

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

int to double은 데이터 손실 없이 유효한 암시적 변환입니다. 합법적인.

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

전략 테스터 의 작업에 대한 질문입니다.

테스트를 진행 중입니다. EA는 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 Sell 1.00 AUDUSD at 0.88980]

2020.04.28 18:14:24.170 2014.01.09 23:59:59 거래 #10 매수 0.00 AUDUSD 0.8899950 완료(주문 #10 기준)

2020.04.28 18:14:24.170 2014.01.09 23:59:59 롤오버 거래 수행 [#10 buy 0.00 AUDUSD at 0.8899950]


 
Igor Zakharov :

Alexey, 나는 당신이 문서 링크를 좋아한다는 것을 알았고, 당신을 위해 하나가 있습니다 :)

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

int to double은 데이터 손실 없이 유효한 암시적 변환입니다. 합법적인.

나는 메시지에 문서를 다시 쓰지 않고 사람들이 문서를 읽는 데 익숙해지도록 문서에 대한 링크를 제공합니다. 여기 포럼에 문서의 존재에 대해 전혀 모르는 사람들이 있다고 상상해보십시오. 저는 개인적으로 설명서에서 그런 그림을 보았지만 제대로 이해하려고 하지 않았습니다. 습관은 함수에 필요한 유형의 변수를 사용하기에 충분합니다. 최후의 수단으로 원하는 타입에 강제 캐스팅을 하게 됩니다.