MQL4 및 MQL5에서 Digits()를 무시하고 숫자(따옴표 제외)의 쉼표 뒤 소수 자릿수 가져오기 - 페이지 9

 
Mesaoria :

나는 그것에 대해 전혀 쓰지 않았다. 두 배를 한 줄에 캐스팅하여 나중에 줄에서 문자 수를 세는 아이디어 - 이것은 완전한 게임입니다. 당신이 무엇을 하든지.

그래서 무엇? 지금까지 이 옵션은 가장 빠르고 기능적이며 정확함을 보장합니다. 당신의 옵션은 무엇입니까?

 
Alexandr Sokolov :
예, 제 버전이 최고가 아닐 가능성이 높지만 이에 대해 더 일찍 찾지 못했기 때문에 이것이 제가 스스로 생각한 최선의 것입니다. 위의 의견에 이에 대해 썼지만 제안하지 않았습니다. 나만의 버전

다음 옵션을 비교했습니다.

 int ds( double v){
   string s=( string )v;
   int l= StringLen (s);
   int n=l- StringFind (s, "." , 0 )- 1 ;
   if ( StringSubstr (s,l- 1 , 1 )== "0" )n--;
   return (n);
}

int d( double x){
   int n;
   for (n= 0 ;n< 8 ;n++){
       if (x== NormalizeDouble (x,n)){
         return (n);
      }
   }
   return (n- 1 );
}

문자열 버전은 조금 더 빠르며 d() 함수와 같이 8자로 제한되지 않습니다. 글쎄, 정확성의 보장은 터미널이 숫자를 표시하는 방식으로 계산하는 것입니다.

문자열로 변환하는 옵션을 선택합니다.

 
Dmitry Fedoseev :

그래서 무엇? 지금까지 이 옵션은 가장 빠르고 기능적이며 정확함을 보장합니다. 당신의 옵션은 무엇입니까?

지정된 알고리즘을 적용한 경우를 하나 이상 말할 수 있습니까?

 
Mesaoria :

지정된 알고리즘을 적용한 경우를 하나 이상 말할 수 있습니까?

거래 패널이 텍스트 필드에 정확한 소수 자릿수 와 함께 로트 크기를 표시하는 한 가지 경우가 있었습니다. 유일한 경우입니다.

 
Dmitry Fedoseev :

거래 패널이 텍스트 필드에 정확한 소수 자릿수 와 함께 로트 크기를 표시하는 한 가지 경우가 있었습니다. 유일한 경우입니다.

저것들. 1랏일 경우 "1", 0.01랏일 경우 "0.01"로 표시되나요?

 
Mesaoria :

저것들. 1로트의 경우 "1", 0.01랏 - "0.01"로 표시되나요?

확실히 그런 방식은 아닙니다. 최소 로트 및 로트 단계에 따라 다릅니다. 최소 로트가 0.01이면 1은 1.00으로 표시됩니다.

 
Dmitry Fedoseev :

확실히 그런 방식은 아닙니다. 최소 로트 및 로트 단계에 따라 다릅니다. 최소 로트가 0.01이면 1은 1.00으로 표시됩니다.

글쎄, 당신은 당신의 함수를 사용하지 않지만 여전히 DoubleToString (LotSize, <some const value>)과 같은 것을 출력한다는 것이 밝혀졌습니다. 아니요?

 
Mesaoria :

글쎄, 당신은 당신의 함수를 사용하지 않지만 여전히 DoubleToString(LotSize, <some const value>)과 같은 것을 출력한다는 것이 밝혀졌습니다. 아니요?

네. 그러나 출력할 소수 자릿수를 알아야 합니다.

 
Dmitry Fedoseev :

네. 그러나 출력할 소수 자릿수를 알아야 합니다.

저것들. 사용자가 입력한 최소 로트(또는 로트 단계) 값을 기준으로 이 값에서 소수점 이하 자릿수를 결정하고 이를 저장하여 향후 값을 정규화합니까?

 
Mesaoria :

저것들. 사용자가 입력한 최소 로트(또는 로트 단계) 값을 기준으로 이 값에서 소수점 이하 자릿수를 결정하고 이를 저장하여 향후 값을 정규화합니까?

명확하지 않은 것은 무엇입니까? 가격에는 Digits() 가 있고 볼륨에는 없습니다. 이렇게 계산됩니다.

볼륨 숫자가 필요한 이유는 무엇입니까? 그렇다면 왜 그리고 숫자 가격!