초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 71

 
xyz999 : 2) 예를 들어 10개월 동안 최적화(백테스트)를 수행하고 1/4 전방 테스트 옵션을 선택한 경우 다음을 이해해야 합니다.
클라이언트 단말 / 전략 테스터 / 테스터 와 작업 / 포워드 테스팅
 
Yedelkin :
클라이언트 단말 / 전략 테스터 / 테스터 와 작업 / 포워드 테스팅

고맙습니다.

예, 이 링크에서

http://www.metatrader5.com/ru/terminal/help/tester/tester_using/forward_testing

두 번째 질문에 대한 답을 찾았습니다. 그러나 첫 번째와 세 번째 질문에는 답이 없습니다.

저도 갖고 싶습니다.

다른 트레이더들의 결과와 비율을 알고 싶습니다. 내가 얻은 결과가 매우 불안하기 때문입니다. 저는 자동 제어 및 비정상 프로세스 시뮬레이션 분야의 과학자입니다. 여기에는 시장의 가격 변동 차트도 포함됩니다. 나는 수년 동안 비정상 프로세스를 시뮬레이션해 왔으며 테스터가 작동하는 방식은 내 다년간의 경험에 투자된 것이 아닙니다. 문제가 있습니다. 테스터를 잘못 사용하거나 제대로 작동하지 않습니다. 함께 알아봅시다.

나에게 최적화 기간에 따라 엄격하게 백 테스트를 수행하면 동일한 매개 변수로 최적화 중에 얻은 이익의 200%가 표시됩니다. 그리고 다른 최적화 매개변수를 선택할 때 최적화 기간에 따라 다시 테스트하면 몇 배나 적은 수익을 얻습니다. 원칙적으로 이러면 안 됩니다. 그래서 질문이 있습니다.

 
xyz999 : 두 번째 질문에 대한 답을 찾았습니다. 그러나 첫 번째와 세 번째 질문에는 답이 없습니다. 저도 갖고 싶습니다.

더 이상 나를 위한 것이 아닙니다. 그들이 말하는 것처럼 "내가 무엇을 할 수 있습니까?"(c). 나는 주제 자체와 거리가 멀다. 포워드 테스팅이 이미 논의된 포럼을 검색해 보십시오. 또는 주제가 매우 중요하다고 생각되면 새 주제 스레드를 만드십시오. 그런 다음 일반 스레드에서 질문을 빨리 잃게 됩니다.

xyz999 : 예, 이 링크에서 https://www.metatrader5.com/ru/terminal/help/algotrading/testing 두 번째 질문에 대한 답을 찾았습니다.

터미널에는 참고 자료도 있습니다. F1.

 
mario065 :

끝났어, 아주 멍청하게.

사용자 정의 이동 평균 표시기의 본체를 가져와서 내부에 MFI 버퍼를 배치했습니다.

필요한 경우 가격을 변경했습니다. 그게 전부입니다.

나는 전문가로서 당신을 위해 그것을했습니다. 단지 칠면조와 확인을위한 의견입니다. 일반적으로.

답장을 보내지 않고 메시지를 남겨주셔서 감사합니다. 아아, 테스터는 여전히 다른 지표의 평활화를 거부합니다. 내 Expert Advisor의 조건은 MFI와 DEMA의 두 가지 지표 값입니다. MFI를 사용하여 귀하의 알고리즘을 Expert Advisor에 구현했지만 헛수고였습니다. 전역 변수 를 최적화하기 위해 실행할 수 없었습니다.

다시 한 번, 메시지에 감사드립니다.
 
Expert Advisor에 대한 기사 https://www.mql5.com/en/articles/100은 포지션을 여는 조건에 대해 이야기하지만 포지션을 닫는 조건은 없습니다.


   bool Buy_opened= false ;   // переменные, в которых будет храниться информация 
   bool Sell_opened= false ; // о наличии соответствующих открытых позиций

   if ( PositionSelect ( _Symbol )== true ) // есть открытая позиция
     {
       if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY )
        {
         Buy_opened= true ;   //это длинная позиция
        }
       else if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_SELL )
        {
         Sell_opened= true ; // это короткая позиция
        }
     }    
             
   bool Buy_Condition_1=...
   bool Buy_Condition_2=...
   bool Buy_Condition_3=...

   
 if (Buy_Condition_1 || Buy_Condition_2)
     { 
       if (Buy_Condition_3)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if (Buy_opened)
           {
             Alert ( "Уже есть позиция на покупку!!!" );
             return ;     // не добавлять к открытой позиции на покупку
           }        
         mrequest.action = TRADE_ACTION_DEAL ;                                   // немедленное исполнение
         mrequest.price = NormalizeDouble (latest_price.ask, _Digits );           // последняя цена ask
         mrequest.sl = NormalizeDouble (latest_price.ask - STP* _Point , _Digits ); // Stop Loss
         mrequest.tp = NormalizeDouble (latest_price.ask + TKP* _Point , _Digits ); // Take Profit
         mrequest.symbol = _Symbol ;                                             // символ
         mrequest.volume = Lot;                                                 // количество лотов для торговли
         mrequest.magic = EA_Magic;                                             // Magic Number
         mrequest.type = ORDER_TYPE_BUY ;                                       // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK ;                             // тип исполнения ордера - все или ничего
         mrequest.deviation= 10 ;                                               // проскальзывание от текущей цены
         //--- отсылаем ордер
         OrderSend (mrequest,mresult);
         // анализируем код возврата торгового сервера
         if (mresult.retcode== 10009 || mresult.retcode== 10008 ) //запрос выполнен или ордер успешно помещен
           {
             Alert ( "Ордер Buy успешно помещен, тикет ордера #:" ,mresult.order, "!!" );
           }
         else
           {
             Alert ( "Запрос на установку ордера Buy не выполнен - код ошибки:" , GetLastError ());
             return ;
           }
        }
      }
 
 bool Buy_Close_1=....
 bool Buy_Close_2=...
 bool Buy_Close_3=...
 
 if (Buy_Close_1 || Buy_Close_2)
     {
       if (Buy_Close_3)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if (????)
         {
           Alert ( "Позицию на покупку закрываю!!!" );
             return ;     // закрыл
         }        
         mrequest.action = TRADE_ACTION_DEAL ;                                   // немедленное исполнение
         mrequest.price = NormalizeDouble (latest_price.bid, _Digits );           // последняя цена bid
         mrequest.sl = 0 ;
         mrequest.tp = 0 ;
         mrequest.symbol = _Symbol ;                                             // символ
         mrequest.volume = Lot;                                                 // количество лотов для торговли
         mrequest.magic = EA_Magic;                                             // Magic Number
         mrequest.type = ORDER_TYPE_SELL ; // ордер на продажу                                     // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK ;                             // тип исполнения ордера - все или ничего
         mrequest.deviation= 10 ;                                               // проскальзывание от текущей цены
         //--- отсылаем ордер
         OrderSend (mrequest,mresult);

물음표 대신 PositionSelect(_Symbol)에 true 값을 넣었습니다. 도움이되지 않았습니다.


문제. 포지션 청산 조건을 설정하기 위해 최소한 무엇을 변경할 수 있습니까?
Пошаговое руководство по написанию MQL5-советников для начинающих
Пошаговое руководство по написанию MQL5-советников для начинающих
  • 2010.06.09
  • Samuel
  • www.mql5.com
Написание советников на MQL5 проще чем кажется, вы легко можете этому научиться. В этом руководстве вы познакомитесь с основными моментами, необходимыми для написания простого советника на основе конкретной торговой стратегии. Рассмотрена структура советника, использование встроенных технических индикаторов и торговых функций, вопросы отладки и тестирования советника на исторических данных.
 
Lester :
Expert Advisor에 대한 기사 https://www.mql5.com/en/articles/100은 포지션을 여는 조건에 대해 이야기하지만 포지션을 닫는 조건은 없습니다.


물음표 대신 PositionSelect(_Symbol)에 true 값을 넣었습니다. 도움이되지 않았습니다.


문제. 포지션 청산 조건을 설정하기 위해 최소한 무엇을 변경할 수 있습니까?

경고 후 복귀했습니다. 이 반환으로 인해 포지션이 분명히 닫히지 않았습니다. 제거하고 다시 시도하십시오.

 // есть ли в данный момент открытая позиция на покупку?
         if (????)
         {
           Alert ( "Позицию на покупку закрываю!!!" );
            return ;      // закрыл
         }  


 
답은 매우 간단하고 가깝다고 느꼈을 정도로 감사합니다.
그러나 물음표와 관련하여 또 다른 질문이 생겼습니다.

알고리즘으로.

적절한 조건 + 포지션 없음 - 포지션이 열리고 다른 조건과 오픈 포지션이 존재할 때 - 오픈 포지션이 닫힙니다.

내가 틀리지 않았다면 - 포지션의 존재, 즉 Buy_opened

 if (Buy_Condition_1 || Buy_Condition_2)
     { 
       if (Buy_Condition_3)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if (Buy_opened)
           {
             Alert ( "Уже есть позиция на покупку!!!" );
             return ;     // не добавлять к открытой позиции на покупку
           }        

1과 같음 - 경고 및 반환(처음으로 돌아가기)을 일으키고 0과 같음 - 구매 주문을 엽니다.

문제. 물음표 대신 무엇을 작성해야합니까 - 고문이 포지션을 열지 않도록 기존 미결 주문의 조건 (내 경우 - 판매 주문 열기)?

 bool Buy_Close_1=....
 bool Buy_Close_2=...
 bool Buy_Close_3=...
 
 if (Buy_Close_1 || Buy_Close_2)
     {
       if (Buy_Close_3)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if (????)
         {
           Alert ( "Позицию на покупку закрываю!!!" );
             return ;     // закрыл
         }        
         mrequest.action = TRADE_ACTION_DEAL ;                                   // немедленное исполнение
         mrequest.price = NormalizeDouble (latest_price.bid, _Digits );           // последняя цена bid
         mrequest.sl = 0 ;
         mrequest.tp = 0 ;

현재 이 정의의 조건이 PositionSelect(_Symbol)와 연결되어 있기 때문에 Buy_opened도 등록했습니다.

가능한 모든 논리적 옵션을 빠르게 시도하고 테스트할 수 있기 때문에 질문이 아무 의미가 없다는 것을 이해하지만 문제는 테스터 버그로 인해 이를 허용하지 않지만 실제 거래에서 M1에 대해 실제로 진단이 가능하다는 것입니다 방법.

 
Lester :
...

가능한 모든 논리적 옵션을 빠르게 시도하고 테스트할 수 있기 때문에 질문이 아무 의미가 없다는 것을 이해하지만 문제는 테스터 버그로 인해 이를 허용하지 않지만 실제 거래에서 M1에 대해 실제로 진단이 가능하다는 것입니다 방법.

귀하의 질문을 잘 이해하지 못했습니다.

그리고 테스터에서 어떤 종류의 버그를 발견하여 테스트할 수 없었습니까?

 
tol64 :

귀하의 질문을 잘 이해하지 못했습니다.

그리고 테스터에서 어떤 종류의 버그를 발견하여 테스트할 수 없었습니까?

앞에서 설명했거나 표시기 분기에서 설명합니다. MFI 표시기의 핸들을 참조하는 Dema는 MFI 창에 표시되지 않으므로 테스터는 작동하지 않지만 EA 자체는 작동합니다. MA, AMA도 마찬가지입니다...!

질문에 대해. 어드바이저가 열린 입장 이 있고 주문을 열지 않는다는 것을 "이해"할 수 있도록 물음표 대신 작성해야 할 것!

 bool Buy_Close_1=....
 bool Buy_Close_2=...
 bool Buy_Close_3=...
 
 if (Buy_Close_1 || Buy_Close_2)
     {
       if (Buy_Close_3)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if (????)
         {
           Alert ( "Позицию на покупку закрываю!!!" );
           // Return убрал благодаря форуму ))
         }        
 
Lester :
앞에서 설명했거나 표시기 분기에서 설명합니다. MFI 표시기의 핸들을 참조하는 Dema는 MFI 창에 표시되지 않으므로 EA가 작동하지 않습니다. MA, AMA도 마찬가지입니다...!

질문에 대해. 어드바이저가 열린 입장 이 있고 주문을 열지 않는다는 것을 "이해"할 수 있도록 물음표 대신 작성해야 할 것!

위치(PositionSelect(_Symbol))가 있고 다른 모든 조건이 충족되면 해당 위치를 닫습니다. 예제에서 return이 제거되지 않은 경우 조건은 다음과 같아야 합니다.

 if (! PositionSelect ( _Symbol ))
  {
   return;
  }

즉, 위치가 없으면 종료합니다. 종료되지 않은 경우 프로그램은 이 블록 다음에 오는 코드를 실행합니다.

하지만 나는 클로징 조건을 확인하기 전에 포지션의 유무에 대한 체크를 할 것입니다.

사유: