알고리즘, 결정 방법, 성능 비교 - 페이지 22 1...151617181920212223 새 코멘트 fxsaber 2019.12.11 23:16 #211 2269로 업데이트되었습니다. 대규모(비합성) Expert Advisor의 프로파일러 결과입니다. 시험 장치 가상 아마도 프로파일러가 잘못된 측정을 하고 있는 것 같습니다. 그렇지 않으면 5개의 OrderSend가 평균적으로 912ms가 걸립니다. fxsaber 2019.12.12 11:49 #212 하나의 알고리즘(예: NormalizeDouble을 통해)으로 정규화된 모든 double은 서로 직접 비교할 수 있습니다. 이 명백한 상황은 많은 경우에 실수를 비교하는 데 비용이 많이 드는 구성을 피할 수 있게 합니다. 일부 작업에서는 생산성을 크게 높일 수 있습니다. 아마도 이러한 작업 중 가장 눈에 띄는 것은 테스터일 것입니다. 예를 들어 보겠습니다. BuyLimit 가치가 있습니다. 테스터는 각 틱에서 BuyLimit와 Ask 가격을 비교할 의무가 있습니다. Staff Tester는 이제 이렇게 합니다. if ( NormalizeDouble (BuyLimit_Price - Ask , Symbol_Digits) >= 0 ) BuyLimit -> Buy; 저것들. 모든 거래 수준( 보류 주문 또는 SL/TP)은 하나의 정규화 호출을 생성합니다. 그러나 가격이 사전에(백테스트 전에) 정상화되었다면 매우 효율적인 비교 구성으로 항상 성공할 수 있습니다. if (BuyLimit_Price >= Ask) BuyLimit -> Buy; 비교해보도록 하겠습니다. 가상을 통해 테스터에서 이 로봇을 시작했습니다. #include <MT4Orders.mqh> #define VIRTUAL_TESTER // Запуск в виртуальном торговом окружении #include <fxsaber\Virtual\Virtual.mqh> #define Ask SymbolInfoDouble ( _Symbol , SYMBOL_ASK ) input int inAmountOrders = 10 ; input int inFakeRange = 0 ; void OnTick () { static bool FirstRun = true ; if (FirstRun) { for ( int i = 0 ; i < inAmountOrders; i++) OrderSend ( _Symbol , OP_BUYLIMIT, 0.1 , Ask - 10000 * _Point , 0 , 0 , 0 ); FirstRun = false ; } } 정상화를 통한 가격 비교. pass 0 returned result 100000.000000 in 0 : 00 : 01.578 pass 1 returned result 100000.000000 in 0 : 00 : 00.759 pass 2 returned result 100000.000000 in 0 : 00 : 00.894 pass 3 returned result 100000.000000 in 0 : 00 : 00.769 pass 4 returned result 100000.000000 in 0 : 00 : 00.806 pass 5 returned result 100000.000000 in 0 : 00 : 00.772 pass 6 returned result 100000.000000 in 0 : 00 : 01.253 pass 7 returned result 100000.000000 in 0 : 00 : 01.200 pass 8 returned result 100000.000000 in 0 : 00 : 01.089 pass 9 returned result 100000.000000 in 0 : 00 : 00.780 pass 10 returned result 100000.000000 in 0 : 00 : 01.258 optimization finished, total passes 11 optimization done in 0 minutes 11 seconds shortest pass 0 : 00 : 00.759 , longest pass 0 : 00 : 01.578 , average pass 0 : 00 : 01.014 정규화 없이. pass 0 returned result 100000.000000 in 0 : 00 : 01.743 pass 1 returned result 100000.000000 in 0 : 00 : 00.844 pass 2 returned result 100000.000000 in 0 : 00 : 00.672 pass 3 returned result 100000.000000 in 0 : 00 : 00.817 pass 4 returned result 100000.000000 in 0 : 00 : 00.635 pass 5 returned result 100000.000000 in 0 : 00 : 00.604 pass 6 returned result 100000.000000 in 0 : 00 : 00.867 pass 7 returned result 100000.000000 in 0 : 00 : 00.611 pass 8 returned result 100000.000000 in 0 : 00 : 00.899 pass 9 returned result 100000.000000 in 0 : 00 : 00.649 pass 10 returned result 100000.000000 in 0 : 00 : 00.742 optimization finished, total passes 11 optimization done in 0 minutes 09 seconds shortest pass 0 : 00 : 00.604 , longest pass 0 : 00 : 01.743 , average pass 0 : 00 : 00.825 가격을 비교할 때 정규화하지 않으면 이득이 20% 이상임을 알 수 있다. 결과적으로 사내 테스터를 정규화 가격으로 환산하고 가격 비교 시 내부 정규화를 사용하지 않는다면 상당한 성능 향상을 이룰 수 있다. MT5에 대한 고주파 거래 [ARCHIVE!] 포럼을 어지럽히 지 디지털 필터(기본 설명) TheXpert 2019.12.12 12:38 #213 매트 없이 직접 할당 후. 작업도 fxsaber 2019.12.12 12:41 #214 TheXpert : 매트 없이 직접 할당 후. 작업도 물론 할당은 변경되지 않은 숫자의 바이트 표현을 복사합니다. Andrey Khatimlianskii 2019.12.12 15:47 #215 명확성을 위해 1초 이상 지속되는 테스트를 실행하시겠습니까? 여기 한 버전에서 스프레드는 3배입니다: 최단 패스 0:00:00.604, 최장 패스 0:00:01.743. 우리는 무엇을 비교하고 있습니까? fxsaber 2019.12.12 15:49 #216 Andrey Khatimlianskii : 명확성을 위해 1초 이상 지속되는 테스트를 실행하시겠습니까? 여기 한 버전에서 스프레드는 3배입니다: 최단 패스 0:00:00.604, 최장 패스 0:00:01.743. 우리는 무엇을 비교하고 있습니까? 물론 가장 짧은 것을 비교합니다. 필터링된 틱에서 운전하는 데 사용됩니다. 필터링되지 않은 것은 나중에 만들겠습니다. Andrey Khatimlianskii 2019.12.12 15:56 #217 fxsaber : 물론 가장 짧은 것을 비교합니다. 왜??? 최적화는 한 번의 패스로 구성되지 않습니다. 평균이 크게 다르지 않다면 그것이 그렇게 빨리 미끄러지는 데 무슨 차이가 있습니까? fxsaber : 필터링된 틱에서 운전하는 데 사용됩니다. 필터링되지 않은 것은 나중에 만들겠습니다. 어쩌면 더 긴 간격일 수도 있습니다. 적어도 초 30 테스트가 갔다. fxsaber 2019.12.12 17:14 #218 Andrey Khatimlianskii : 왜??? 최적화는 한 번의 패스로 구성되지 않습니다. 평균이 크게 다르지 않다면 그것이 그렇게 빨리 미끄러지는 데 무슨 차이가 있습니까? 이 설정은 최적화되어 있습니다. input int inFakeRange = 0 ; 그리고 그것은 논리에 영향을 미치지 않습니다. 따라서 가장 짧습니다. Andrey Khatimlianskii 2019.12.12 17:17 #219 fxsaber : 이 설정은 최적화되어 있습니다. 그리고 그것은 논리에 영향을 미치지 않습니다. 따라서 가장 짧습니다. 여기서 고문의 논리는 무엇입니까? 테스터의 속도를 측정합니다. fxsaber 2019.12.12 17:19 #220 Andrey Khatimlianskii : 여기서 고문의 논리는 무엇입니까? 테스터의 속도를 측정합니다. 이것은 하나의 에이전트가 동일한 것을 순차적으로 계산하는 방식입니다. 모든 종류의 사고를 제거하면 순 성능이 가장 짧습니다. 1...151617181920212223 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
2269로 업데이트되었습니다. 대규모(비합성) Expert Advisor의 프로파일러 결과입니다.
시험 장치
가상
아마도 프로파일러가 잘못된 측정을 하고 있는 것 같습니다. 그렇지 않으면 5개의 OrderSend가 평균적으로 912ms가 걸립니다.
하나의 알고리즘(예: NormalizeDouble을 통해)으로 정규화된 모든 double은 서로 직접 비교할 수 있습니다.
이 명백한 상황은 많은 경우에 실수를 비교하는 데 비용이 많이 드는 구성을 피할 수 있게 합니다. 일부 작업에서는 생산성을 크게 높일 수 있습니다.
아마도 이러한 작업 중 가장 눈에 띄는 것은 테스터일 것입니다. 예를 들어 보겠습니다.
BuyLimit 가치가 있습니다. 테스터는 각 틱에서 BuyLimit와 Ask 가격을 비교할 의무가 있습니다. Staff Tester는 이제 이렇게 합니다.
저것들. 모든 거래 수준( 보류 주문 또는 SL/TP)은 하나의 정규화 호출을 생성합니다.
그러나 가격이 사전에(백테스트 전에) 정상화되었다면 매우 효율적인 비교 구성으로 항상 성공할 수 있습니다.
if (BuyLimit_Price >= Ask) BuyLimit -> Buy;
비교해보도록 하겠습니다. 가상을 통해 테스터에서 이 로봇을 시작했습니다.
정상화를 통한 가격 비교.
정규화 없이.
가격을 비교할 때 정규화하지 않으면 이득이 20% 이상임을 알 수 있다.
결과적으로 사내 테스터를 정규화 가격으로 환산하고 가격 비교 시 내부 정규화를 사용하지 않는다면 상당한 성능 향상을 이룰 수 있다.
매트 없이 직접 할당 후. 작업도
물론 할당은 변경되지 않은 숫자의 바이트 표현을 복사합니다.
명확성을 위해 1초 이상 지속되는 테스트를 실행하시겠습니까?
여기 한 버전에서 스프레드는 3배입니다: 최단 패스 0:00:00.604, 최장 패스 0:00:01.743. 우리는 무엇을 비교하고 있습니까?
명확성을 위해 1초 이상 지속되는 테스트를 실행하시겠습니까?
여기 한 버전에서 스프레드는 3배입니다: 최단 패스 0:00:00.604, 최장 패스 0:00:01.743. 우리는 무엇을 비교하고 있습니까?
물론 가장 짧은 것을 비교합니다. 필터링된 틱에서 운전하는 데 사용됩니다. 필터링되지 않은 것은 나중에 만들겠습니다.
물론 가장 짧은 것을 비교합니다.
왜??? 최적화는 한 번의 패스로 구성되지 않습니다. 평균이 크게 다르지 않다면 그것이 그렇게 빨리 미끄러지는 데 무슨 차이가 있습니까?
필터링된 틱에서 운전하는 데 사용됩니다. 필터링되지 않은 것은 나중에 만들겠습니다.
어쩌면 더 긴 간격일 수도 있습니다. 적어도 초 30 테스트가 갔다.
왜??? 최적화는 한 번의 패스로 구성되지 않습니다. 평균이 크게 다르지 않다면 그것이 그렇게 빨리 미끄러지는 데 무슨 차이가 있습니까?
이 설정은 최적화되어 있습니다.
그리고 그것은 논리에 영향을 미치지 않습니다. 따라서 가장 짧습니다.
이 설정은 최적화되어 있습니다.
그리고 그것은 논리에 영향을 미치지 않습니다. 따라서 가장 짧습니다.
여기서 고문의 논리는 무엇입니까? 테스터의 속도를 측정합니다.
여기서 고문의 논리는 무엇입니까? 테스터의 속도를 측정합니다.
이것은 하나의 에이전트가 동일한 것을 순차적으로 계산하는 방식입니다. 모든 종류의 사고를 제거하면 순 성능이 가장 짧습니다.