문제는 가장 순수한 형태의 @Quantum이 MQL5 의 R 수학 라이브러리 유사체의 구현 및 전체 검증에 참여하고 있다는 것입니다.
이것은 이론적 추론이 아닙니다. 그리고 그는 라이브러리의 정확성에 대한 확신을 제공하는 단위 테스트를 작성할 때 찾기 위해 깊이 파고듭니다.
R에서 모든 것이 정확하다고 선험적으로 가정할 필요는 없습니다. 오히려 C++의 함수 구현이 있더라도 모든 것이 오히려 원시적으로 구현되었다고 말하고 싶다. 그리고 속도 면에서 우리 컴파일러의 소스 코드에 있는 MQL5 라이브러리가 평균 3배의 승리를 거둔 것을 볼 수 있습니다.
모든 것을 다시 확인하기 위해 수고를 했고 명백한 오류를 발견했습니다. 다음 오류가 확인되었습니다.
귀하의 최근 게시물을 바탕으로 다음과 같은 질문이 있습니다. 저에게는 근본적인 성격이 있습니다.
1. 기사를 발행한 날짜로 보아 2003년입니다. 다른 소프트웨어 시스템과 마찬가지로 R에서도 오류가 발생하고 릴리스를 게시할 때 수정 목록이 항상 게시되는 것은 매우 자연스러운 일입니다. 동시에 R의 장점은 사용자가 매우 많기 때문에 버그가 적다는 점을 항상 강조해 왔습니다. 그리고 여기에서는 2003년 이후로 알고리즘의 버그가 게시 수준에서 확인되었으며 수정되지 않았습니다. 이것은 나에게 명확하지 않습니다.
귀하의 최근 게시물을 바탕으로 다음과 같은 질문이 있습니다. 저에게는 근본적인 성격이 있습니다.
1. 기사를 발행한 날짜로 보아 2003년입니다. 다른 소프트웨어 시스템과 마찬가지로 R에서도 오류가 발생하고 릴리스를 게시할 때 수정 목록이 항상 게시되는 것은 매우 자연스러운 일입니다. 동시에 R의 장점은 사용자가 매우 많기 때문에 버그가 적다는 점을 항상 강조해 왔습니다. 그리고 여기에서는 2003년 이후로 알고리즘의 버그가 게시 수준에서 확인되었으며 수정되지 않았습니다. 이것은 나에게 명확하지 않습니다.
이것은 기초적이고 절대적으로 이해할 수 있습니다.
누구나 실수를 합니다. 그것이 개발자의 본성입니다. 우리는 실수를 많이 하고 낙심하지 않습니다.
R의 이 오류는 단순히 부주의하고 다른 하나를 엉망으로 만든 하나의 기본 기능을 신뢰하는 것입니다. 그들은 그것을 고칠 것입니다.
이 문제에 대해 R에서 요청했습니까?
우리는 테스트를 수행하고 라이브러리를 작성하는 동안 모든 것을 자세히 파악했으며 MQL5 - Wolfram Alpha - R의 결과를 지속적으로 비교하고 결과를 보여주었고 공개적으로 답변할 준비가 되어 있습니다. 물론 우리는 수학 패키지(모두 소스 코드에 있음)에 제어 단위 테스트와 벤치마크가 포함된 세 개의 큰 스크립트를 포함했습니다.
@Quantum 이 R에 버그 보고서를 제출할 것이라고 확신합니다. 업데이트된 기사는 불과 몇 시간 전에 발표되었습니다.
2. R과 MQL5의 성능을 비교한 코드를 보고 싶습니다.
MQL5 벤치마크 코드는 \Scripts\UnitTests\Stat\TestStatBenchmark.mq5에 있으며 R 코드는 "부록. 통계 함수의 계산 시간 측정 결과".
MetaQuotes-Demo 서버에 연결하여 MetaTrader 5 빌드 1467로 업그레이드하십시오. 새 라이브러리와 모든 테스트 스크립트가 포함된 것은 이 베타 버전이었습니다.
누구나 실수를 합니다. 이것이 개발자의 본성입니다. 우리는 실수를 많이 하고 낙심하지 않습니다.
R의 이 오류는 단순히 부주의하고 다른 것을 엉망으로 만든 하나의 기본 기능을 신뢰하는 것입니다. 그들은 그것을 고칠 것입니다.
우리는 테스트를 수행하고 라이브러리를 작성하는 동안 모든 것을 자세히 파악했으며 MQL5 - Wolfram Alpha - R의 결과를 지속적으로 비교하고 결과를 보여주었고 공개적으로 답변할 준비가 되어 있습니다. 물론 우리는 수학 패키지(모두 소스 코드에 있음)에 제어 단위 테스트와 벤치마크가 포함된 세 개의 큰 스크립트를 포함했습니다.
@Quantum 이 R에 버그 보고서를 제출할 것이라고 확신합니다. 업데이트된 기사는 불과 몇 시간 전에 발표되었습니다.
MQL5 벤치마크 코드는 \Scripts\UnitTests\Stat\TestStatBenchmark.mq5에 있으며 R 코드는 "부록. 통계 함수의 계산 시간을 측정한 결과".
MetaQuotes-Demo 서버에 연결하여 MetaTrader 5 빌드 1467로 업그레이드하십시오. 새 라이브러리와 모든 테스트 스크립트가 포함된 것은 이 베타 버전이었습니다.
성능 비교에 대한 의견을 형성할 수 없지만. 그리고 이것은 근본적인 성격입니다.
사실은 R이 이상적인 개발 환경이라는 것입니다. 한 마디로 인터프리터입니다. 그러나 개발 중에 존재하는 코드는 작업 코드와 매우 다릅니다. 행 수에서 여러 번입니다. 그리고 여기에 작업 코드가 있습니다. 매우 짧고 동시에 내용이 매우 풍부합니다. 따라서 계산 집약적 알고리즘, 행렬 연산, 모든 코어 로드를 사용하는 randomforest와 같이 거래 결정을 내릴 때 의미가 있는 패키지의 모든 기능을 비교해야 합니다....
추신.
오래된 버전의 R을 사용하고 있습니다. MRAN - Microsofn R Open 웹사이트에서 R 버전 3.3.1(2016-06-21)을 가져와야 합니다. 이 경우 MKL을 설치해야 합니다. Microsoft는 R의 특정 릴리스에서 일부 패키지 및 기능의 실행 속도를 최대 50(!)배 높일 수 있다고 주장했습니다.
Microsoft R Open, formerly known as Revolution R Open (RRO), is the enhanced distribution of R from Microsoft Corporation. It is a complete open source platform for statistical analysis and data science. The current version, Microsoft R Open 3.3.1, is based on (and 100% compatible with) R-3.3.1, the most widely used statistics software in the...
사실은 R이 이상적인 개발 환경이라는 것입니다. 한 마디로 인터프리터입니다. 그러나 개발 중에 존재하는 코드는 작업 코드와 매우 다릅니다. 행 수에서 여러 번입니다. 그리고 여기에 작업 코드가 있습니다. 매우 짧고 동시에 내용이 매우 풍부합니다. 따라서 계산 집약적인 알고리즘, 행렬 연산, 모든 코어 로드를 사용하는 randomforest와 같이 거래 결정을 내릴 때 의미가 있는 패키지의 모든 기능을 비교해야 합니다....
R 기능을 MQL5로 체계적으로 변환하고 있습니다. 그래서 함수 호출의 본질은 매우 가깝습니다.
우리는 MQL5에서 작성 시간과 크기 측면에서 R의 코드를 거의 동일하게 만들려고 합니다.
내일 우리는 그래픽 라이브러리를 베타 버전으로 출시하고 이미지와 함께 R 및 MQL5의 코드 조각에서 동등하게 유사한 크기를 시연할 것입니다.
오래된 버전의 R을 사용하고 있습니다. MRAN - Microsofn R Open 웹사이트에서 R 버전 3.3.1(2016-06-21)을 가져와야 합니다. 이 경우 MKL을 설치해야 합니다. Microsoft는 R의 특정 릴리스에서 일부 패키지 및 기능의 실행 속도를 최대 50(!)배 높일 수 있다고 주장했습니다.
R의 일반 버전이 갑자기 속도를 높일 수 있을지 의심스럽습니다. 거기에 있는 코드는 많이 변경되지 않습니다. 일부 기능, 특히 매트릭스 기능이 가속화될 수 있다는 것은 분명합니다. 또한 귀하의 진술은 R의 코드가 성능 측면에서 다소 부주의하게 작성되었다는 제 생각을 확인시켜줍니다.
이제 이 기사를 읽으면 기본 기능에서도 멀티스레딩 및 MKL 없이 최대 46배의 가속을 얻었음을 알 수 있습니다.
계산은 Intel Core i7-4790, CPU 3.6Ghz, 16GB RAM, Windows 10 x64에서 이루어졌습니다. 마이크로초 단위의 계산 시간 측정 결과
예를 들어, MQL 문서는 arcsine에 대한 예를 제공하고 arcsine(2) = 무한대라고 명시합니다. 이것은 정확하지 않습니다. 정확히: arcsine(2) = NaN, 즉 숫자 값이 없습니다. arcsine(1) = Inf, 그러나 거래 중 따옴표 건너뛰기 = NA, 즉. 이어야 하지만(또는 주말에 있을 수 있음) 그렇지 않습니다.
나는 이 답변의 부정확성에 대해 아이러니하게 조금 썼습니다. 스마일리를 추가해야 했습니다... 일반적으로 두 경우 모두 오류가 아니라고 덧붙였습니다. 비정의 기능 영역에서 컴파일러와 인터프리터의 동작은 시스템 아키텍처와 개발자에 완전히 의존하기 때문입니다. 물론 이 경우에는 nan을 반환하는 것이 좋습니다. 일반적으로 정의되지 않은 매개변수를 사용하여 함수를 호출한 다음 결과를 다른 라이브러리와 비교할 필요가 없다는 사실에 대해 이야기하고 있습니다. 그렇지 않으면 수백 개의 "오류"를 이런 식으로 찾을 수 있습니다.
그런데 arcsine을 사용하면 흥미로운 예입니다. mql- MathArcsin(1) = MathArcsin(2) = -nan(ind)
볼프람- 아크신(1) = 파이/2 Arcsin(2) = 복잡한 것. 진정한 해결책은 없습니다.
아르 자형- asin(1) = 파이/2 asin(2) = nan(실수에 대한 답) asin(2+0i) = Wolfram에서와 같이 복잡한 것
마지막 게시물에 대해 다시 한 번 - 간단한 수학에서는 0으로 나누는 것이 불가능하므로 mql 스크립트가 오류와 함께 충돌하는 것이 논리적입니다. 여기에는 버그가 없습니다. 그러나 소수점 이하 16자리까지 결과의 정확도에 이런 세심함을 보는 것은 매우 이상한 일이며, 0으로 나눌 때 nan 또는 Inf를 반환하는 것이 어떤 이유에서인지 불가능합니다. IMHO, Inf를 반환하고 스크립트의 갑작스러운 충돌로 개발자를 괴롭히지 않아야 합니다.
그런 다음 문자 그대로의 순서로 균일 연속 분포의 경우 극점 밀도는 양수이고 적분은 0입니다. https://en.wikipedia.org/wiki/Uniform_distribution_(continuous)
기사의 원래 R 오류 설명으로 돌아가 보겠습니다.
우리의 의견은 여전히 유효합니다. 오류가 존재하며 구현 부주의로 인해 발생합니다.
문제는 가장 순수한 형태의 @Quantum이 MQL5 의 R 수학 라이브러리 유사체의 구현 및 전체 검증에 참여하고 있다는 것입니다.
이것은 이론적 추론이 아닙니다. 그리고 그는 라이브러리의 정확성에 대한 확신을 제공하는 단위 테스트를 작성할 때 찾기 위해 깊이 파고듭니다.
R에서 모든 것이 정확하다고 선험적으로 가정할 필요는 없습니다. 오히려 C++의 함수 구현이 있더라도 모든 것이 오히려 원시적으로 구현되었다고 말하고 싶다. 그리고 속도 면에서 우리 컴파일러의 소스 코드에 있는 MQL5 라이브러리가 평균 3배의 승리를 거둔 것을 볼 수 있습니다.
모든 것을 다시 확인하기 위해 수고를 했고 명백한 오류를 발견했습니다. 다음 오류가 확인되었습니다.
발행일자를 봐주세요. 과학자들의 조언과 함께 작업이 어떻게 진행되고 있는지 확인하십시오.
또한 @Quantum 을 과학자로 생각하지 않는 것도 실수입니다.
친애하는 레나트!
귀하의 최근 게시물을 바탕으로 다음과 같은 질문이 있습니다. 저에게는 근본적인 성격이 있습니다.
1. 기사를 발행한 날짜로 보아 2003년입니다. 다른 소프트웨어 시스템과 마찬가지로 R에서도 오류가 발생하고 릴리스를 게시할 때 수정 목록이 항상 게시되는 것은 매우 자연스러운 일입니다. 동시에 R의 장점은 사용자가 매우 많기 때문에 버그가 적다는 점을 항상 강조해 왔습니다. 그리고 여기에서는 2003년 이후로 알고리즘의 버그가 게시 수준에서 확인되었으며 수정되지 않았습니다. 이것은 나에게 명확하지 않습니다.
이 문제에 대해 R에서 요청했습니까?
2. R과 MQL5의 성능을 비교한 코드를 보고 싶습니다.
미리 감사드립니다.
친애하는 레나트!
귀하의 최근 게시물을 바탕으로 다음과 같은 질문이 있습니다. 저에게는 근본적인 성격이 있습니다.
1. 기사를 발행한 날짜로 보아 2003년입니다. 다른 소프트웨어 시스템과 마찬가지로 R에서도 오류가 발생하고 릴리스를 게시할 때 수정 목록이 항상 게시되는 것은 매우 자연스러운 일입니다. 동시에 R의 장점은 사용자가 매우 많기 때문에 버그가 적다는 점을 항상 강조해 왔습니다. 그리고 여기에서는 2003년 이후로 알고리즘의 버그가 게시 수준에서 확인되었으며 수정되지 않았습니다. 이것은 나에게 명확하지 않습니다.
이것은 기초적이고 절대적으로 이해할 수 있습니다.
누구나 실수를 합니다. 그것이 개발자의 본성입니다. 우리는 실수를 많이 하고 낙심하지 않습니다.
R의 이 오류는 단순히 부주의하고 다른 하나를 엉망으로 만든 하나의 기본 기능을 신뢰하는 것입니다. 그들은 그것을 고칠 것입니다.
이 문제에 대해 R에서 요청했습니까?
우리는 테스트를 수행하고 라이브러리를 작성하는 동안 모든 것을 자세히 파악했으며 MQL5 - Wolfram Alpha - R의 결과를 지속적으로 비교하고 결과를 보여주었고 공개적으로 답변할 준비가 되어 있습니다. 물론 우리는 수학 패키지(모두 소스 코드에 있음)에 제어 단위 테스트와 벤치마크가 포함된 세 개의 큰 스크립트를 포함했습니다.
@Quantum 이 R에 버그 보고서를 제출할 것이라고 확신합니다. 업데이트된 기사는 불과 몇 시간 전에 발표되었습니다.
2. R과 MQL5의 성능을 비교한 코드를 보고 싶습니다.
MQL5 벤치마크 코드는 \Scripts\UnitTests\Stat\TestStatBenchmark.mq5에 있으며 R 코드는 "부록. 통계 함수의 계산 시간 측정 결과".
MetaQuotes-Demo 서버에 연결하여 MetaTrader 5 빌드 1467로 업그레이드하십시오. 새 라이브러리와 모든 테스트 스크립트가 포함된 것은 이 베타 버전이었습니다.
이것은 기초적이고 절대적으로 이해할 수 있습니다.
누구나 실수를 합니다. 이것이 개발자의 본성입니다. 우리는 실수를 많이 하고 낙심하지 않습니다.
R의 이 오류는 단순히 부주의하고 다른 것을 엉망으로 만든 하나의 기본 기능을 신뢰하는 것입니다. 그들은 그것을 고칠 것입니다.
우리는 테스트를 수행하고 라이브러리를 작성하는 동안 모든 것을 자세히 파악했으며 MQL5 - Wolfram Alpha - R의 결과를 지속적으로 비교하고 결과를 보여주었고 공개적으로 답변할 준비가 되어 있습니다. 물론 우리는 수학 패키지(모두 소스 코드에 있음)에 제어 단위 테스트와 벤치마크가 포함된 세 개의 큰 스크립트를 포함했습니다.
@Quantum 이 R에 버그 보고서를 제출할 것이라고 확신합니다. 업데이트된 기사는 불과 몇 시간 전에 발표되었습니다.
MQL5 벤치마크 코드는 \Scripts\UnitTests\Stat\TestStatBenchmark.mq5에 있으며 R 코드는 "부록. 통계 함수의 계산 시간을 측정한 결과".
MetaQuotes-Demo 서버에 연결하여 MetaTrader 5 빌드 1467로 업그레이드하십시오. 새 라이브러리와 모든 테스트 스크립트가 포함된 것은 이 베타 버전이었습니다.
성능 비교에 대한 의견을 형성할 수 없지만. 그리고 이것은 근본적인 성격입니다.
사실은 R이 이상적인 개발 환경이라는 것입니다. 한 마디로 인터프리터입니다. 그러나 개발 중에 존재하는 코드는 작업 코드와 매우 다릅니다. 행 수에서 여러 번입니다. 그리고 여기에 작업 코드가 있습니다. 매우 짧고 동시에 내용이 매우 풍부합니다. 따라서 계산 집약적 알고리즘, 행렬 연산, 모든 코어 로드를 사용하는 randomforest와 같이 거래 결정을 내릴 때 의미가 있는 패키지의 모든 기능을 비교해야 합니다....
추신.
오래된 버전의 R을 사용하고 있습니다. MRAN - Microsofn R Open 웹사이트에서 R 버전 3.3.1(2016-06-21)을 가져와야 합니다. 이 경우 MKL을 설치해야 합니다. Microsoft는 R의 특정 릴리스에서 일부 패키지 및 기능의 실행 속도를 최대 50(!)배 높일 수 있다고 주장했습니다.
성능 비교에 대한 의견을 형성할 수 없지만. 그리고 이것은 근본적인 성격입니다.
사실은 R이 이상적인 개발 환경이라는 것입니다. 한 마디로 인터프리터입니다. 그러나 개발 중에 존재하는 코드는 작업 코드와 매우 다릅니다. 행 수에서 여러 번입니다. 그리고 여기에 작업 코드가 있습니다. 매우 짧고 동시에 내용이 매우 풍부합니다. 따라서 계산 집약적인 알고리즘, 행렬 연산, 모든 코어 로드를 사용하는 randomforest와 같이 거래 결정을 내릴 때 의미가 있는 패키지의 모든 기능을 비교해야 합니다....
R 기능을 MQL5로 체계적으로 변환하고 있습니다. 그래서 함수 호출의 본질은 매우 가깝습니다.
다음은 기사의 일치 예입니다.
제복
우리는 MQL5에서 작성 시간과 크기 측면에서 R의 코드를 거의 동일하게 만들려고 합니다.
내일 우리는 그래픽 라이브러리를 베타 버전으로 출시하고 이미지와 함께 R 및 MQL5의 코드 조각에서 동등하게 유사한 크기를 시연할 것입니다.
R의 일반 버전이 갑자기 속도를 높일 수 있을지 의심스럽습니다. 거기에 있는 코드는 많이 변경되지 않습니다. 일부 기능, 특히 매트릭스 기능이 가속화될 수 있다는 것은 분명합니다. 또한 귀하의 진술은 R의 코드가 성능 측면에서 다소 부주의하게 작성되었다는 제 생각을 확인시켜줍니다.
이제 이 기사를 읽으면 기본 기능에서도 멀티스레딩 및 MKL 없이 최대 46배의 가속을 얻었음을 알 수 있습니다.
계산은 Intel Core i7-4790, CPU 3.6Ghz, 16GB RAM, Windows 10 x64에서 이루어졌습니다. 마이크로초 단위의 계산 시간 측정 결과
계산 PDF(µs)
계산 PDF(µs)
R/MQL5
CDF 계산(µs)
CDF 계산(µs)
R/MQL5
분위수(µs)
분위수(µs)
R/MQL5
난수(μs)
난수(μs)
R/MQL5
그러나 물론 우리는 지정된 버전을 확인할 것입니다. 속도와 성능 모두.
"잘못된 대답"에 대해 잘못 알고 있습니다.
...
예를 들어, MQL 문서는 arcsine에 대한 예를 제공하고 arcsine(2) = 무한대라고 명시합니다. 이것은 정확하지 않습니다. 정확히: arcsine(2) = NaN, 즉 숫자 값이 없습니다. arcsine(1) = Inf, 그러나 거래 중 따옴표 건너뛰기 = NA, 즉. 이어야 하지만(또는 주말에 있을 수 있음) 그렇지 않습니다.
나는 이 답변의 부정확성에 대해 아이러니하게 조금 썼습니다. 스마일리를 추가해야 했습니다... 일반적으로 두 경우 모두 오류가 아니라고 덧붙였습니다. 비정의 기능 영역에서 컴파일러와 인터프리터의 동작은 시스템 아키텍처와 개발자에 완전히 의존하기 때문입니다. 물론 이 경우에는 nan을 반환하는 것이 좋습니다.
일반적으로 정의되지 않은 매개변수를 사용하여 함수를 호출한 다음 결과를 다른 라이브러리와 비교할 필요가 없다는 사실에 대해 이야기하고 있습니다. 그렇지 않으면 수백 개의 "오류"를 이런 식으로 찾을 수 있습니다.
그런데 arcsine을 사용하면 흥미로운 예입니다.
mql-
MathArcsin(1) = MathArcsin(2) = -nan(ind)
볼프람-
아크신(1) = 파이/2
Arcsin(2) = 복잡한 것. 진정한 해결책은 없습니다.
아르 자형-
asin(1) = 파이/2
asin(2) = nan(실수에 대한 답)
asin(2+0i) = Wolfram에서와 같이 복잡한 것
위키에서는 asin(1)이 아직 정의되어 있다고 말합니다( https://en.wikipedia.org/wiki/Inverse_trigonometric_functions ). 서비스 데스크에 버그 보고서를 작성할 수 있습니다.
그러나 asin(2)는 이미 정의되지 않은 영역이며 모든 것이 정상이고 모든 곳에서 동일합니다.
마지막 게시물에 대해 다시 한 번 - 간단한 수학에서는 0으로 나누는 것이 불가능하므로 mql 스크립트가 오류와 함께 충돌하는 것이 논리적입니다. 여기에는 버그가 없습니다. 그러나 소수점 이하 16자리까지 결과의 정확도에 이런 세심함을 보는 것은 매우 이상한 일이며, 0으로 나눌 때 nan 또는 Inf를 반환하는 것이 어떤 이유에서인지 불가능합니다. IMHO, Inf를 반환하고 스크립트의 갑작스러운 충돌로 개발자를 괴롭히지 않아야 합니다.
실수에서 0으로 나누기에 대한 제어를 비활성화하려면 metaeditor.ini 파일의 [Experts] 섹션에서 FpNoZeroCheckOnDivision=1 매개변수를 사용하십시오.
이 매개변수가 주어지면 다음 코드는 inf를 반환합니다.
당연히이 매개 변수의 존재는 상수 0.0으로 나눌 때 컴파일 오류 를 제거하지 않습니다.
'0.0' - division by zero in the constant expression s1.mq5 8 12
Renat, R에서 mql로 몇 가지 기능을 이전하는 것은 당신이 얼마 전에 이야기한 것이 정말 놀라운 일이었습니까?
아니요.
놀라움은 의미가 없습니다. 우리는 MQL5 및 MetaTrader 5의 프레임워크 내에서 모든 것을 할 것입니다.
이 매개변수가 주어지면 다음 코드는 inf를 반환합니다.