MQL4 마스터에 대한 질문입니다. 다시 Double Compare에 대해. - 페이지 4

 
Integer :
VBAG 이 스크립트를 참조하십시오
그리고 당신은 또한 밤에도 일합니다 .. 지원에 감사드립니다. 정보가 너무 많습니다. 이제 모든 것을 소화해야합니다.
 
Integer :

가격 = 1.1111

ma = 1.11110001

8개 기호로 정규화되면 ma>price - 오른쪽. 더 적은 수의 문자로 정규화하면 동일하며 잘못된 것으로 판명됩니다. 이러한 방식으로 최대 정확도가 달성됩니다.

농담이야, 그렇지? :)
일반적으로 정규화 없이 ma > 가격도 결국 맞습니다. 이미 존재하고 이미 분명히 더 달성 가능한 경우 최대 정확도를 달성하는 이유는 무엇입니까?

9자로 정규화가 작동하지 않습니다. 가격은 9글자, 인디케이터는 8글자, 그 반대(기억안남), 한마디로 불확실성의 미스터리로 뒤덮인 것 같다.


예, 아마도 이것은 NormalizeDouble 자체에 있으며 카운터는 최대 8자입니다. 아무리 꼬아도 말도 안되는 기능을 하고 있습니다.
 
komposter :

그리고 단순화된 형태에서는 ComparePrice만큼 빠르게 작동합니다.
2007.09.10 03:19:24 CheckCompareDoubleSpeed ​GBPUSD,일일: ComparePrice: 20922 , equal: 20453
하지만 원래의 형태로, 그냥 노래:)
 int start ()
{
    double a , b ;
    int start1 , start2 , end , c ;
    
    a = 1.23450001 ;
    b = 1.23449999 ;
    
    start1 = GetTickCount () ;
    
    for ( c = 100000000 ; c > 0 ; c -- )
        ComparePrice ( a , b ) ;
    
    start2 = GetTickCount () ;
    
    for ( c = 100000000 ; c > 0 ; c -- )
        equal ( a , b ) ;
    
    end = GetTickCount () ;
 
    Print ( " ComparePrice: " , start2 - start1 , " , equal: " , end - start2 ) ;
 
    return ( 0 ) ;
}
 
int ComparePrice ( double a , double b )
{
    a -= b ;
    b = Point / 2 .;
    if ( a > b )
        return ( 1 ) ;
    if ( a < - b )
        return ( - 1 ) ;
    return ( 0 ) ;
}
 
bool equal ( double value1 , double value2 , int precision = 8 )
{
    return ( NormalizeDouble ( MathAbs ( NormalizeDouble ( value1 , precision ) - NormalizeDouble ( value2 , precision )) , precision ) < NormalizeDouble ( MathPow ( 0.1 , precision ) , precision )) ;
}
2007.09.10 02:39:57 testScript USDJPYm,H4: ComparePrice: 23843 , equal: 178704
어, 하지만 komposter는 더 나은 차가 있습니다!
 
Irtron :
하지만 원래의 형태는 노래일 뿐입니다. :)
예, 다재다능함을 위해서는 비용을 지불해야 합니다.
또는 ComparePrice는 주어진 정밀도로 숫자를 비교하는 데도 적합합니까?
 
komposter :

또는 ComparePrice는 주어진 정밀도로 숫자를 비교하는 데에도 적합합니까?
물론이죠! 정확성이 알려지면 거래 가치로 작업할 때 정확히 발생합니다. 고정 .
 
Irtron :
물론이죠! 정확성이 알려지면 거래 값으로 작업할 때 정확히 발생합니다. 고정점.
동의한다.
"복식 비교에 관한"주제의 수많은 저자에게 설명하면됩니다.
따라서 저는 _보편적인_(최적과는 거리가 먼) 비교 옵션을 제안했습니다.
그리고 그는 일한다. 느리지만 확실하게. 그리고 모든 경우에.

그리고 "복식 비교 최적화에 대해"라는 주제가 나타나면 주제를 개발할 수 있습니다.)
 

가격 정상화가 어딘가에 필요합니까?

문서에 따르면 거래 주문의 가격은 정상화되어야 합니다.

'정규화되지 않은 기록 및 개시 위치' 분기에는 다음이 기록됩니다.

레나트 16.02.2007 10:01
의도적으로 잘못된 가격을 서버에 전송하지 않기 위해 의도적으로 거래 요청에 강제 가격 정상화를 추가했습니다.
 
교육 프로그램의 모든 전문가에게 깊은 감사를 전하고 싶습니다!

Irtron, 나는 나 자신을 위해 당신의 버전을 선택했습니다. 글쎄, 나는 그것을 정말로 좋아했습니다. 일반적인 경우에 대해 약간 조정, 확인 - 시계처럼 작동합니다.

int ComparePrice(더블 a, 더블 b, 두 자릿수)
{
a -= b;
b = 숫자;
만약 (a > b)
반환(1);
만약 (a < -b)
리턴(-1);
리턴(0);
}
고맙습니다.
 
digit=0이면 문제가 발생합니다. 함수가 NormalizeDouble ()에 대한 단일 호출보다 느린 이유
 
Integer :
digit=0이면 문제가 발생합니다.

모든 숫자에는 문제가 있습니다. 숫자가 무엇인지, 수정의 의미가 무엇인지 전혀 이해하지 못했습니다.

정수 :
함수가 NormalizeDouble ()에 대한 단일 호출보다 느린 이유
또한 MathAbs, 2+3 등보다 확실히 느릴 것입니다. :)

기능이 다른 기능을 비교하는 주제는 무엇입니까? 그것은 똑같이 단순화되었습니다(실제로 작동 불가능). 이제 NormalizeDouble이 있습니다.
그런 솔직함을 무엇과 누구에게 증명하고 싶습니까 ... (단어를 넣으십시오)?