MetaTrader 5 전략 테스터: 오류, 버그, 개선 제안 - 페이지 42 1...353637383940414243444546474849...84 새 코멘트 Sergey Chalyshev 2019.12.18 21:53 #411 fxsaber : 모든 캐릭터에 대한 플레이 지침을 사용할 수 있습니다. 질문이 있습니다. 그냥 실행하십시오. 아니요, 당신이 더 좋습니다. 당신의 코드를 알아내는 동안 내가 그것을 시작한 이유를 잊을 것입니다)) 예를 들어 Si 와 같은 교환 선물에서 테스트할 수 있습니까? 테스트를 위해 교환 계정을 제공합니까? Dmitiry Ananiev 2019.12.18 22:28 #412 Sergey Chalyshev : 아니요, 당신이 더 좋습니다. 당신의 코드를 알아내는 동안 내가 그것을 시작한 이유를 잊을 것입니다)) 예를 들어 Si 와 같은 교환 선물에서 테스트할 수 있습니까? 테스트를 위해 교환 계정을 제공합니까? 거래소의 낮은 유동성과 주문 대기열의 문제가 있습니다. 따라서 모스크바 거래소 의 테스터는 정확하지 않습니다. Forex에서는 실제로 작은 로트에서 이러한 현상이 없습니다. 가끔 발생하지만. fxsaber 2019.12.18 22:30 #413 Sergey Chalyshev : 테스트를 위해 교환 계정을 제공합니까? 하자. 하지만 바로 예약하겠습니다. 테스터에서 마지막 가격으로 실행하는 것은 실수입니다. fxsaber 2019.12.18 22:34 #414 테스터의 정확성에 대한 인증 코드입니다. #include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006 #define Bid SymbolInfoDouble ( _Symbol , SYMBOL_BID ) #define Ask SymbolInfoDouble ( _Symbol , SYMBOL_ASK ) void CloseAll() { for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--) if ( OrderSelect (i, SELECT_BY_POS)) { if (OrderType() <= OP_SELL) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0 ); else OrderDelete(OrderTicket()); } } bool Check1() { bool Res = true ; Res &= OrderSend ( _Symbol , OP_BUY, 1 , Ask, 0 , Bid, 0 ) && ! OrdersTotal (); CloseAll(); Res &= OrderSend ( _Symbol , OP_BUY, 1 , Ask, 0 , 0 , Bid) && ! OrdersTotal (); CloseAll(); Res &= OrderSend ( _Symbol , OP_SELL, 1 , Bid, 0 , Ask, 0 ) && ! OrdersTotal (); CloseAll(); Res &= OrderSend ( _Symbol , OP_SELL, 1 , Bid, 0 , 0 , Ask) && ! OrdersTotal (); CloseAll(); return (Res); } bool Check2() { bool Res = true ; Res &= OrderModify( OrderSend ( _Symbol , OP_BUY, 1 , Ask, 0 , 0 , 0 ), Ask, Bid, 0 , 0 ) && ! OrdersTotal (); CloseAll(); Res &= OrderModify( OrderSend ( _Symbol , OP_BUY, 1 , Ask, 0 , 0 , 0 ), Ask, 0 , Bid, 0 ) && ! OrdersTotal (); CloseAll(); Res &= OrderModify( OrderSend ( _Symbol , OP_SELL, 1 , Bid, 0 , 0 , 0 ), Bid, Ask, 0 , 0 ) && ! OrdersTotal (); CloseAll(); Res &= OrderModify( OrderSend ( _Symbol , OP_SELL, 1 , Bid, 0 , 0 , 0 ), Bid, 0 , Ask , 0 ) && ! OrdersTotal (); CloseAll(); return (Res); } bool Check3() { bool Res = true ; Res &= OrderSelect ( OrderSend ( _Symbol , OP_BUYLIMIT, 1 , Ask, 0 , 0 , 0 ), SELECT_BY_TICKET) && (OrderType() <= OP_SELL); CloseAll(); Res &= OrderSelect ( OrderSend ( _Symbol , OP_SELLLIMIT, 1 , Bid, 0 , 0 , 0 ), SELECT_BY_TICKET) && (OrderType() <= OP_SELL); CloseAll(); Res &= OrderSelect ( OrderSend ( _Symbol , OP_BUYSTOP, 1 , Ask, 0 , 0 , 0 ), SELECT_BY_TICKET) && (OrderType() <= OP_SELL); CloseAll(); Res &= OrderSelect ( OrderSend ( _Symbol , OP_SELLSTOP, 1 , Bid, 0 , 0 , 0 ), SELECT_BY_TICKET) && (OrderType() <= OP_SELL); CloseAll(); return (Res); } bool Check4() { bool Res = true ; const double TickSize = SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_SIZE ); Res &= OrderModify( OrderSend ( _Symbol , OP_BUYLIMIT, 1 , Ask - TickSize, 0 , 0 , 0 ), Ask, 0 , 0 , 0 ) && ( OrdersTotal () == 1 ) && ( OrderSelect ( 0 , SELECT_BY_POS)) && (OrderType() <= OP_SELL); CloseAll(); Res &= OrderModify( OrderSend ( _Symbol , OP_BUYSTOP, 1 , Ask + TickSize, 0 , 0 , 0 ), Ask, 0 , 0 , 0 ) && ( OrdersTotal () == 1 ) && ( OrderSelect ( 0 , SELECT_BY_POS)) && (OrderType() <= OP_SELL); CloseAll(); Res &= OrderModify( OrderSend ( _Symbol , OP_SELLLIMIT, 1 , Bid + TickSize, 0 , 0 , 0 ), Bid, 0 , 0 , 0 ) && ( OrdersTotal () == 1 ) && ( OrderSelect ( 0 , SELECT_BY_POS)) && (OrderType() <= OP_SELL); CloseAll(); Res &= OrderModify( OrderSend ( _Symbol , OP_SELLSTOP, 1 , Bid - TickSize, 0 , 0 , 0 ), Bid, 0 , 0 , 0 ) && ( OrdersTotal () == 1 ) && ( OrderSelect ( 0 , SELECT_BY_POS)) && (OrderType() <= OP_SELL); CloseAll(); return (Res); } bool Check5() { bool Res = true ; const double TickSize = SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_SIZE ); Res &= OrderModify( OrderSend ( _Symbol , OP_BUYLIMIT, 1 , Ask - TickSize, 0 , 0 , 0 ), Ask, Bid, 0 , 0 ) && ! OrdersTotal (); CloseAll(); Res &= OrderModify( OrderSend ( _Symbol , OP_BUYSTOP, 1 , Ask + TickSize, 0 , 0 , 0 ), Ask, Bid, 0 , 0 ) && ! OrdersTotal (); CloseAll(); Res &= OrderModify( OrderSend ( _Symbol , OP_SELLLIMIT, 1 , Bid + TickSize, 0 , 0 , 0 ), Bid, Ask, 0 , 0 ) && ! OrdersTotal (); CloseAll(); Res &= OrderModify( OrderSend ( _Symbol , OP_SELLSTOP, 1 , Bid - TickSize, 0 , 0 , 0 ), Bid, Ask, 0 , 0 ) && ! OrdersTotal (); CloseAll(); return (Res); } bool Check6() { bool Res = true ; Res &= OrderSend ( _Symbol , OP_BUYLIMIT, 1 , Ask, 0 , Bid, 0 ) && ! OrdersTotal (); CloseAll(); Res &= OrderSend ( _Symbol , OP_BUYSTOP, 1 , Ask, 0 , Bid, 0 ) && ! OrdersTotal (); CloseAll(); Res &= OrderSend ( _Symbol , OP_SELLLIMIT, 1 , Bid, 0 , Ask, 0 ) && ! OrdersTotal (); CloseAll(); Res &= OrderSend ( _Symbol , OP_SELLSTOP, 1 , Bid, 0 , Ask, 0 ) && ! OrdersTotal (); CloseAll(); return (Res); } #define TOSTRING(A) #A + " = " + ( string )(A) + "\n" void OnTick () { Print (TOSTRING(Check1()) + TOSTRING(Check2()) + TOSTRING(Check3()) + TOSTRING(Check4()) + TOSTRING(Check5()) + TOSTRING(Check6())); ExpertRemove (); } 올바르게 수행되면 다음과 같아야 합니다. 2019.12 . 19 00 : 27 : 59.263 2019.12 . 13 00 : 00 : 00 Check1() = true 2019.12 . 19 00 : 27 : 59.263 2019.12 . 13 00 : 00 : 00 Check2() = true 2019.12 . 19 00 : 27 : 59.263 2019.12 . 13 00 : 00 : 00 Check3() = true 2019.12 . 19 00 : 27 : 59.263 2019.12 . 13 00 : 00 : 00 Check4() = true 2019.12 . 19 00 : 27 : 59.263 2019.12 . 13 00 : 00 : 00 Check5() = true 2019.12 . 19 00 : 27 : 59.263 2019.12 . 13 00 : 00 : 00 Check6() = true Sergey Chalyshev 2019.12.18 22:51 #415 fxsaber : 하자. 하지만 바로 예약하겠습니다. 테스터에서 마지막 가격으로 실행하는 것은 실수입니다. 비공개로 썼습니다. 당연히 last의 실행은 의미가 없습니다(넌센스). fxsaber 2019.12.18 23:34 #416 Sergey Chalyshev : 예를 들어 Si 와 같은 교환 선물에서 테스트할 수 있습니까? 더 좋습니다. 실제 틱에 의해, 그러나 TP는 오리발에 의해 실행됩니다. Sergey Chalyshev 2019.12.18 23:42 #417 fxsaber : 심하게. 아니요, 테스터에 문제가 있습니다. 모든 진드기 또는 실제 진드기에 대해 어떻게 테스트합니까? 시를보십시오. 9시 45분에 시장은 여전히 닫혀 있습니다. 이 시간에는 무엇이든 있을 수 있으므로 10:01 이후에 열어야 합니다. fxsaber 2019.12.19 00:07 #418 Sergey Chalyshev : 교환 기호와 상계 계정이 있는 경우에만 현재 가격 의 제한 한도가 허용됩니다. 불행히도 모든 시장(TP 포함)은 플리퍼에서 실행됩니다. 따라서 테스터에서 마켓을 사용하지 않는 것이 좋습니다. Alexey Kravchenko 2019.12.23 03:20 #419 그러면 테스터에서 로드된 모든 막대에 액세스하는 것은 어떻습니까? 답변 부탁드립니다. 또는 이 인위적인 제한이 필요한 이유를 설명하십시오. Andrey Khatimlianskii 2019.12.23 03:32 #420 Alexey Kravchenko : 그러면 테스터에서 로드된 모든 막대에 액세스하는 것은 어떻습니까? 답변 부탁드립니다. 또는 이 인위적인 제한이 필요한 이유를 설명하십시오. Expert Advisors의 99% 테스트 속도를 높입니다. 나머지 1%에 대해 목발을 삽입할 수 있습니다. 1...353637383940414243444546474849...84 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
모든 캐릭터에 대한 플레이 지침을 사용할 수 있습니다. 질문이 있습니다. 그냥 실행하십시오.
아니요, 당신이 더 좋습니다. 당신의 코드를 알아내는 동안 내가 그것을 시작한 이유를 잊을 것입니다))
예를 들어 Si 와 같은 교환 선물에서 테스트할 수 있습니까? 테스트를 위해 교환 계정을 제공합니까?
아니요, 당신이 더 좋습니다. 당신의 코드를 알아내는 동안 내가 그것을 시작한 이유를 잊을 것입니다))
예를 들어 Si 와 같은 교환 선물에서 테스트할 수 있습니까? 테스트를 위해 교환 계정을 제공합니까?
거래소의 낮은 유동성과 주문 대기열의 문제가 있습니다. 따라서 모스크바 거래소 의 테스터는 정확하지 않습니다. Forex에서는 실제로 작은 로트에서 이러한 현상이 없습니다. 가끔 발생하지만.
테스트를 위해 교환 계정을 제공합니까?
하자. 하지만 바로 예약하겠습니다. 테스터에서 마지막 가격으로 실행하는 것은 실수입니다.
올바르게 수행되면 다음과 같아야 합니다.
하자. 하지만 바로 예약하겠습니다. 테스터에서 마지막 가격으로 실행하는 것은 실수입니다.
비공개로 썼습니다.
당연히 last의 실행은 의미가 없습니다(넌센스).
예를 들어 Si 와 같은 교환 선물에서 테스트할 수 있습니까?
더 좋습니다. 실제 틱에 의해, 그러나 TP는 오리발에 의해 실행됩니다.
심하게.
아니요, 테스터에 문제가 있습니다. 모든 진드기 또는 실제 진드기에 대해 어떻게 테스트합니까?
시를보십시오.
9시 45분에 시장은 여전히 닫혀 있습니다. 이 시간에는 무엇이든 있을 수 있으므로 10:01 이후에 열어야 합니다.교환 기호와 상계 계정이 있는 경우에만 현재 가격 의 제한 한도가 허용됩니다.
불행히도 모든 시장(TP 포함)은 플리퍼에서 실행됩니다. 따라서 테스터에서 마켓을 사용하지 않는 것이 좋습니다.
그러면 테스터에서 로드된 모든 막대에 액세스하는 것은 어떻습니까? 답변 부탁드립니다. 또는 이 인위적인 제한이 필요한 이유를 설명하십시오.
Expert Advisors의 99% 테스트 속도를 높입니다.
나머지 1%에 대해 목발을 삽입할 수 있습니다.