mql4 언어의 기능, 미묘함 및 작업 방법 - 페이지 17

 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

mql5 언어의 특징, 미묘함 및 작업 방법

fxsaber , 2019.02.20 07:26

가격은 모든 테스터 모드에서 정규화되지 않습니다!

간단히 말해서 이것은 테스터 버그입니다.


이것이 Birt 모드에도 적용되는지 여부 - 잘 모르겠습니다.

 

이것이 주제에서 벗어난다면 죄송합니다(저는 언어의 발전을 따른다고 말할 수 없습니다). 이 줄이 정확히 무엇을 하는지 설명해 주시겠습니까?

 #property strict

설명합니다.

두 가지(MT에서 동일) 가격을 비교하는 스크립트가 있습니다.

 #property strict

void OnStart ()
{
   const int Total = OrdersHistoryTotal ();
   int Prices1, Prices2;
   
   double open_price, close_price;
   OrderSelect ( "37027330" , SELECT_BY_TICKET , MODE_HISTORY );
   open_price = OrderOpenPrice ();
   close_price = OrderClosePrice ();

   Print (open_price);
   Print (close_price);
   Print (open_price-close_price);
   
   return ;
}

MT에서 가격은 동일하지만 차이는 0이 아닙니다(위에서 언급한 대로).

이 줄( #property strict) 이 제거되면 차이는 0입니다.

왜요?

 
Dmitry Rannev :

이것이 주제에서 벗어난다면 죄송합니다(저는 언어의 발전을 따른다고 말할 수 없습니다). 이 줄이 정확히 무엇을 하는지 설명해 주시겠습니까?

설명합니다.

두 가지(MT에서 동일) 가격을 비교하는 스크립트가 있습니다.

MT에서 가격은 동일하지만 차이는 0이 아닙니다(위에서 언급한 대로).

이 줄( #property strict) 이 제거되면 차이는 0입니다.

왜요?

"#property strict"는 mql4에서만 유용합니다. mql5에서는 "strict" 모드가 항상 true이므로 쓸모가 없습니다.
 
Alain Verleyen :
"#property strict"는 mql4에서만 유용합니다. mql5에서는 "strict" 모드가 항상 true이므로 쓸모가 없습니다.

우리는 MT4에 대해 이야기하고 있습니다. 여기 위에서 정규화 문제에 대해 논의했습니다. 일부 가격은 MT4에서 동일하지만 비교할 때 동일하지 않은 이유를 이해하려고 합니다. 이것은 연속입니다.

 
Dmitry Rannev :

우리는 MT4에 대해 이야기하고 있습니다. 여기 위에서 정규화 문제에 대해 논의했습니다. 일부 가격은 MT4에서 동일하지만 비교할 때 동일하지 않은 이유를 이해하려고 합니다. 이것은 연속입니다.

Dmitry, 이 주제는 구멍에 izmusolina입니다. 비밀을 누설하면 용서하세요. 하지만 Kirill(프로그래머), Sergey 같은 사람들이 당신을 위해 일하고 있습니다 ... 나는 그녀의 성을 말하지 않을 것입니다. "그녀는 너무 유명해서 부를 수 없습니다" © 그들은 이 모든 것을 알고 있습니다 ...

 
Dmitry Rannev :

이것이 주제에서 벗어난다면 죄송합니다(저는 언어의 발전을 따른다고 말할 수 없습니다). 이 줄이 정확히 무엇을 하는지 설명해 주시겠습니까?

설명합니다.

두 가지(MT에서 동일) 가격을 비교하는 스크립트가 있습니다.

MT에서 가격은 동일하지만 차이는 0이 아닙니다(위에서 언급한 대로).

이 줄( #property strict) 이 제거되면 차이는 0입니다.

왜요?

 void OnStart ()
{
   double Price1 = DBL_EPSILON ;
   double Price2 = 0 ;

   Print (Price1 - Price2);           // 0 - грубо показывает.
   Print ((Price1 - Price2) * 1 e15); // не ноль
}


strict는 평등에 영향을 미치지 않습니다. 인쇄 시에만 - 숫자를 대략적으로 또는 더 정확하게 표시합니다.

 
Dmitry Rannev :

MT에서 가격은 동일하지만 차이는 0이 아닙니다(위에서 언급한 대로).

이 줄( #property strict) 이 제거되면 차이는 0입니다.

double 유형의 숫자는 같은지 확인할 수 없습니다(0 포함). 그 차이를 최소값( DBL_EPSILON , FLT_EPSILON, Point )과 비교해야 합니다.

 
Ilya Malev :

double 유형의 숫자는 같은지 확인할 수 없습니다(0 포함). 그 차이를 최소값( DBL_EPSILON , FLT_EPSILON, Point )과 비교해야 합니다.

그것은 다른 것에 관한 것입니다.

 
fxsaber :

그것은 다른 것에 관한 것입니다.

이 질문의 원인을 상상해 보았고 Print에 대한 질문뿐만 아니라 알고리즘에 약간의 오류가 있을 수 있다는 결론에 도달했습니다.

 
Ilya Malev :

이 질문의 원인을 상상해 보았고 Print에 대한 질문뿐만 아니라 알고리즘에 약간의 오류가 있을 수 있다는 결론에 도달했습니다.

문제는 fxsaber에 의해 위에서 설명되었습니다. 우리는 그 이유를 찾으려고 노력하고 있습니다.