이동 평균(및 기타 지표) 값과 오류의 비교 - 페이지 2

 
gammaray :

여기서 mql은 원칙적으로 그것과 아무 관련이 없습니다. 추상 프로그래밍 언어를 사용하십시오. 내가 제공한 이 특정 예에서 주요 문제는 동일한 막대의 이동 차이 값이 동일하지 않다는 것입니다(첫 번째 계산에서는 2e-16이고 두 번째 계산에서는 정확히 0). 이 경우 일반적으로이 교차점은 어떤 식 으로든 결정할 수 없습니다. mql로 돌아가면 정규화 는 숫자를 반올림하는 것을 의미합니다(더 정확하게는 C 바닥 함수와 유사하게 특정 부호 뒤의 모든 숫자를 단순히 버리고 소수점 뒤의 특정 부호까지만). 그렇다면 정규화할 숫자를 어떻게 결정합니까? 잘못된 숫자를 선택하면 모든 값이 항상 정확히 0으로 반올림될 수 있습니다. 따라서 여기에서 정규화는 위험하며 일반적으로 문제를 해결하지 못합니다.

Alexey Lebedev가 쓴 것에 관해서. 네, 그런 맥락에서 생각했습니다. 그러나 두 차이를 0보다 크거나 같게 비교하면 잘못된 신호를 얻을 가능성이 있습니다(예: 인접 막대 사이를 이동할 때 정확히 동일한 값이 나올 때 이론적으로 가능한 상황). 그런 다음 그 차이는 기호를 변경하지 않지만(교차로가 없음) 교차로에 대한 신호는 프로그래밍 방식으로 결정됩니다. 제안한 대로 크거나 같음에 대해 하나의 비교만 할 수 있습니다. 그러나 전체 문제는이 상황에서 계산할 때 처음에는 0 (2e-16)과 같지 않고 다음 막대에서는 이미 정확히 0이지만 이미 엄격한 비교가 있다는 것입니다.

여기에서 다른 막대에서 계산할 때 동일한 차이가 동일한 결과를 제공하지 않는 이유를 이해하는 것이 중요합니다??? 결과가 같으면 하나의 비엄격한 비교를 도입하여 문제가 항상 해결되는 것처럼 보일 것입니다.


정규화 할 때 - 예, 주어진 소수 자릿수로 반올림됩니다. 특정 기호, 즉 반올림 뒤에 있는 모든 숫자를 버리지 않습니다.

내가 당신이 의미하는 맥락에서 정확히 이해한다면 (나는 화면이있는 첫 번째 게시물과 두 번째 게시물을 모두 고려합니다), 인쇄 할 때 DoubleToString 을 고려하는 것을 포함 하여이 방법으로 다양한 실험을 할 수 있다고 가정합니다. 도와주세요. 이것은 Rosomah 가 나보다 먼저 당신에게 말한 것입니다.

특히, 어떤 작업에 대해 어떤 수치로 정규화해야 하는지 또는 어떤 경우에도 정규화가 필요한지 여부를 스스로 결정하는 데 도움을 주기 위해(의심스러운 경우 프로그램이 다음을 수행할 수 있는 관련 요인의 조합으로 인해 적용 여부를 포함합니다. 다른 DC에 적용되므로 얻은 계산 값이 다를 수 있음).

내 관점에서 볼 때, 해결 중인 작업에 따라 거짓으로 간주될 수 있는 신호를 수신하는 위험은 정규화가 적용되지 않은 경우일 수 있습니다(또는 일부 작은 값으로 인해 첫 번째 방법으로 비교가 없는 경우). 그것은 다치지 않을 것입니다.

또한 인쇄할 때 DoubleToString 을 사용하지 않으면 동일한 차이 또는 동일한 값의 다른 결과에 단순히 잘못된 두려움이 있을 수 있습니다.

/* 만일의 경우를 대비하여 double 형식의 숫자를 출력할 때는 DoubleToString을 사용해야 한다는 점을 다시 한 번 말씀드립니다. 출력할 때 숫자 값이 텍스트 값으로 변환되기 때문입니다. 따라서 이 기능을 사용하지 않으면 실제로 존재하지 않는 오류가 보일 수 있습니다.

물론 이 함수의 소수점 이하 자릿수는 정규화된 값만큼의 소수점 이하 자릿수를 포함합니다. 그리고 정규화되지 않은 것들의 경우 - more-more */

 
Aleksey Lebedev :

아마도 iMA 기능의 계산이 최적화되었을 것입니다. 첫 번째 값 = sum(종가)/N, 두 번째 = MA+(new close-obsolete close)/N의 이전 값.

즉, 동일한 막대에 대한 일반적인 경우 iMA가 다른 호출 시간에 두 이동 평균 의 다른 값을 제공할 수 있습니까?
 
gammaray :
즉, 동일한 막대에 대한 일반적인 경우 iMA가 다른 호출 시간에 두 이동 평균의 다른 값을 제공할 수 있습니까?
당신은 체커 또는 이동?
 
Dina Paches :

정규화 할 때 - 예, 주어진 소수점 이하 자릿수로 반올림됩니다. 특정 기호, 즉 반올림 뒤에 있는 모든 숫자를 버리지 않습니다.

내가 당신이 의미하는 맥락에서 정확히 이해한다면 (나는 화면이있는 첫 번째 게시물과 두 번째 게시물을 모두 고려합니다), 인쇄 할 때 DoubleToString 을 고려하는 것을 포함 하여이 방법으로 다양한 실험을 할 수 있다고 가정합니다. 도와주세요.

특히, 어떤 작업에 대해 어떤 수치로 정규화해야 하는지 또는 어떤 경우에도 정규화가 필요한지 여부를 스스로 결정하는 데 도움을 주기 위해(의심스러운 경우 프로그램이 다음을 수행할 수 있는 관련 요인의 조합으로 인해 적용 여부를 포함합니다. 다른 DC에 적용되므로 얻은 계산 값이 다를 수 있음).

내 관점에서 볼 때, 해결 중인 작업에 따라 거짓으로 간주될 수 있는 신호를 수신하는 위험은 정규화가 적용되지 않은 경우일 수 있습니다(또는 일부 작은 값으로 인해 첫 번째 방법으로 비교가 없는 경우). 그것은 다치지 않을 것입니다.

또한 인쇄할 때 DoubleToString 을 사용하지 않으면 동일한 차이 또는 동일한 값의 다른 결과에 단순히 잘못된 두려움이 있을 수 있습니다.

/* 만일의 경우를 대비하여 double 형식의 숫자를 출력할 때는 DoubleToString을 사용해야 한다는 점을 다시 한 번 말씀드립니다. 출력할 때 숫자 값이 텍스트 값으로 변환되기 때문입니다. 따라서 이 기능을 사용하지 않으면 오류가 보일 수 있습니다.

물론 이 함수의 소수점 이하 자릿수는 정규화된 값만큼의 소수점 이하 자릿수를 포함합니다. 그리고 정규화되지 않은 것들 - 더, 더. */

마지막 중요한 기호는 반올림됨이 분명합니다. 그러나 예를 들어 숫자 0.000016을 5자리로 정규화하면 숫자 0.00002가 되고 숫자가 더 적으면 항상 0이 됩니다. 따라서 특정 부호로 반올림하는 것은 항상 불가능합니다. MA 값은 기간뿐만 아니라 막대 자체에도 의존합니다. 따라서 일반적인 경우 정규화 중에 유효 자릿수를 설정하는 방법이 명확하지 않습니다.

그것은 무한한 가치에 관한 것입니다. 나는 그것을 적용하는 방법을 여기에서 이해할 수 없습니다. 무한히 작은(오차)는 실수와 0을 비교하는 데 사용됩니다. 그 차이를 비교해야 합니다. 여기서 상황은 더욱 악화될 수 있습니다. 예를 들어, 나는 일종의 엡실론을 넣었습니다. 그 차이가 엡실론보다 크면 양수라고 봅니다. 마이너스 엡실론보다 작을 때 - 음수. 경계 내에 있을 때 - 0. 그러나 차이 부호의 변화를 어떻게 결정합니까? 예를 들어, 두 막대의 이동 평균 간의 차이는 엡실론 내에 있습니다. 그러나 첫 번째 경우에는 양수이고 두 번째 경우에는 음수입니다(즉, 교차점이 이미 발생했습니다). 그리고 저와 함께 오류의 도입을 고려하면 차이가 0으로 간주됩니다. 그런 다음 부호를 변경하는 조건을 변경해야합니다. 일반적으로 이 경우 위에서 아래로 두 MA의 교차에 대한 신호는 <0(이전) 및 >0(되다) 뿐만 아니라 =0(이전) 및 >0(되다)에 대한 비교와 같습니다. . 그리고 가장 중요한 것은 설명된 경우(같은 지점의 값이 다른 호출에 대해 다른 경우)에서 이 오류의 도입이 도움이 되지 않는다는 것입니다. 이 차이는 항상 어떤 엡실론을 선택하든 신호를 수신하지 못할 수 있습니다.

 
gammaray :

마지막 중요한 기호는 반올림됨이 분명합니다. 그러나 예를 들어 숫자 0.000016을 5자리로 정규화하면 숫자 0.00002가 되고 숫자가 더 적으면 항상 0이 됩니다. 따라서 특정 부호로 반올림하는 것은 항상 불가능합니다. MA 값은 기간뿐만 아니라 막대 자체에도 의존합니다. 따라서 일반적인 경우 정규화 중에 유효 자릿수를 설정하는 방법이 명확하지 않습니다.

그것은 무한한 가치에 관한 것입니다. 나는 그것을 적용하는 방법을 여기에서 이해할 수 없습니다. 무한히 작은(오차)는 실수와 0을 비교하는 데 사용됩니다. 그 차이를 비교해야 합니다. 여기서 상황은 더욱 악화될 수 있습니다. 예를 들어, 나는 일종의 엡실론을 넣었습니다. 그 차이가 엡실론보다 크면 양수라고 봅니다. 마이너스 엡실론보다 작을 때 - 음수. 경계 내에 있을 때 - 0. 그러나 차이 부호의 변화를 어떻게 결정합니까? 예를 들어, 두 막대의 이동 평균 간의 차이는 엡실론 내에 있습니다. 그러나 첫 번째 경우에는 양수이고 두 번째 경우에는 음수입니다(즉, 교차점이 이미 발생했습니다). 그리고 저와 함께 오류의 도입을 고려하면 차이가 0으로 간주됩니다. 그런 다음 부호를 변경하는 조건을 변경해야합니다. 일반적으로 이 경우 위에서 아래로 두 MA의 교차에 대한 신호는 <0(이전) 및 >0(되다) 뿐만 아니라 =0(이전) 및 >0(되다)에 대한 비교와 같습니다. . 그리고 가장 중요한 것은 설명된 경우(같은 지점의 값이 다른 호출에 대해 다른 경우)에서 이 오류의 도입이 도움이 되지 않는다는 것입니다. 이 차이는 항상 어떤 엡실론을 선택하든 신호를 수신하지 못할 수 있습니다.

특정 문제를 풀 때 소수 유효 숫자 표현의 정확성에서 진행할 수도 있다고 생각합니다. 문서에 따르면 Double 에는 15개의 유효 숫자가 있습니다. 문서에 따라 0에서 8까지 정규화할 때 의 정밀도 형식 입니다. DoubleToString에는 자체 정밀도 형식이 있습니다.

또한 iMA는 내 관점에서 iMA와 함께 사용되는 값이 다른 상황에서 다른 문제를 해결하는 데 사용될 것이라는 사실을 고려한 기능입니다. 따라서 도움을 받아 얻은 값은 특정 작업을 고려하는 것을 포함하여 다르게 처리될 수 있습니다.

또한 평균 계산은 수학적 계산입니다. 예: (1.20525 + 1.20598 + 1.2081)/3 = 1.2064433333 ... 따라서 작은 반올림 또는 확장된 반올림으로 계산된 값은 계산 적용 옵션을 증가시킵니다.

지나가면서 만일의 경우를 대비하여 iMA 대신에 무엇보다도 터미널의 표준 제공에 포함된 MovingAverages 라이브러리의 기능을 사용할 수 있다는 점도 언급하겠습니다. 또는 이 라이브러리의 기능을 기반으로 컴파일된 자체 기능.

/*수학적 계산은 이중 유형의 숫자로 작업하는 기능을 보여줄 수 있습니다. */


엡실론에 관해서는 패스합니다.



P./S.: 즉, 실험 이 도움이 될 수 있다고 생각합니다. 다음을 포함한 특정 작업에 대한 실제 실험(많은 양의 데이터에 대한)이 없는 이론적 추론은 수용 가능한 솔루션을 혼동하고 멀어지게 할 수 있습니다.

 
네, 캅. 우리는 300일 동안 Mashki를 비교합니다... 숫자 로 정규화하고 걱정하지 마세요...
 

Dina Paches :

...

디나, 나는 당신의 천사 같은 인내심에 놀랐습니다...
 
Artyom Trishkin :
네, 캅. 우리는 300 일 동안 Mashki를 비교합니다 ... 숫자로 정규화하고 걱정하지 마십시오 ...
값을 직접 정규화하는 것이 가능합니다(차이 - 어떤 경우에도). 그러나 다시 MA를 비교하기 위해 ala에 제공된 참조 코드를 변경해야 하며 모든 경우에 하나의 비엄격 부등식이 도입됩니다. 또한 동일한 막대에서 다른 MA 값을 사용하는 문제는 다른 시간에 계산할 때 여전히 열려 있습니다. 이것을 더 반복하면 정규화와 하나의 비엄격한 부등식의 도입으로도 문제가 완전히 해결된다는 것은 사실이 아니다. 또한 한 막대 내에서 이동이 두 번 교차하는 경우를 틱이 아닌 새 막대 가 열리는 것으로 분석하면 포착할 수 없습니다. 경험을 공유할 수 있습니까? 이 상황을 어떻게 처리합니까?
 
gammaray :
값을 직접 정규화하는 것이 가능합니다(차이 - 어떤 경우에도). 그러나 다시 MA를 비교하기 위해 ala에 제공된 참조 코드를 변경해야 하며 모든 경우에 하나의 비엄격 부등식이 도입됩니다. 또한 동일한 막대에서 다른 MA 값을 사용하는 문제는 다른 시간에 계산할 때 여전히 열려 있습니다. 이것을 더 반복하면 정규화와 하나의 비엄격한 부등식의 도입으로도 문제가 완전히 해결된다는 것은 사실이 아니다. 또한 한 막대 내에서 이동이 두 번 교차하는 경우를 틱이 아닌 새 막대 가 열리는 것으로 분석하면 포착할 수 없습니다. 경험을 공유할 수 있습니까? 이 상황을 어떻게 처리합니까?

음, 첫째, 두 정규화 값의 차이는 결국 비 정규화 값을 제공합니다. 정규화된 차이를 확인해야 합니다.

둘째, 막대 내부의 교차를 포착하려면 0과 첫 번째 막대의 모든 눈금에 대한 값을 취하십시오. 잡아 ... 엄마 울지 마세요 ...

봉의 개통에 대해 테스트하는 경우 고문은 새 봉의 개통을 명시적으로 추적해야 하며 개통 사실 이후에는 교차점을 확인해야 합니다.

먼저, 스스로 결정하십시오 - 막대가 열릴 때 또는 각 틱에서 거래한 다음 코드를 작성하십시오. 그리고 그에 따라 테스트도 합니다.

 
Artyom Trishkin :
디나, 나는 당신의 천사 같은 인내심에 놀랐습니다...

Artyom에게 감사하지만 불행히도 한계가 있을 수도 있다는 것이 밝혀졌습니다.

사유: