[ARCHIVE!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 4. - 페이지 363

 
테스터가 다른 시간 프레임의 지표를 고려하도록 하는 방법은 무엇이며 전혀 가능합니까?
 
vilard :
테스터가 다른 시간 프레임의 지표를 고려하도록 하는 방법은 무엇이며 전혀 가능합니까?
테스터의 지표를 고려한다는 것은 무엇을 의미합니까? (1) 시각화 중에 다른 시간대의 지표를 표시할 수 있습니까? 또는 (2) EA 코드에서 지표 기능에서 다른 시간대의 값을 계산해야 합니까?
 
vilard :
테스터가 다른 시간 프레임의 지표를 고려하도록 하는 방법은 무엇이며 전혀 가능합니까?

가능: https://docs.mql4.com/ru/indicators/icustom

https://docs.mql4.com/en/constants/timeframes

 

EA는 인덱스 1과 2가 있는 막대에 대한 신호를 생성하도록 설계되었습니다(즉, 새 막대가 열릴 때 시작 및 닫기 주문).

테스터에서는 OrderClose에 대해 오류 138 및 4051(티켓에서 맹세하는 것처럼 보임)을 교대로 제공합니다.

이 문제를 해결하는 데 도움을 주세요.

   if (Mas_Ord_New[ 0 ][ 0 ]!= 0 )
    {
     if (Signal== 2 )
      {
         for (i= 0 ; i<=Mas_Ord_New[ 0 ][ 0 ]; i++)
         {
           ticket=Mas_Ord_New[i][ 4 ];
           lts=Mas_Ord_New[i][ 5 ];
           Ans= OrderClose (ticket,lts,Bid, 5 );
           if (Ans==false) 
           Alert ( "Закрыть BUY " ,ticket, " не удалось. Ошибка: " , GetLastError ());
         }
      }
     if (Signal== 3 )
      {
         for (i= 0 ; i<=Mas_Ord_New[ 0 ][ 0 ]; i++)
         {
           ticket=Mas_Ord_New[i][ 4 ];
           lts=Mas_Ord_New[i][ 5 ];            
           Ans= OrderClose (ticket,lts,Ask, 5 );
           if (Ans==false) 
             Alert ( "Закрыть SELL " ,ticket, " не удалось. Ошибка: " , GetLastError ());
         }       
      }
    }

 // Функция из учебника

int Terminal()
 {
   int Qnt= 0 ;
   
   ArrayCopy (Mas_Ord_Old, Mas_Ord_New); // Сохранение информации
   Qnt= 0 ; // Обнуление счетчика
   ArrayInitialize (Mas_Ord_New, 0 );   // Обнуление массива
   ArrayInitialize (Mas_Tip, 0 );   // Обнуление массива
   
   for ( int n= 0 ; n<= OrdersTotal (); n++)
    {
       if (( OrderSelect (n,SELECT_BY_POS)==true) &&
          ( OrderSymbol ()== Symbol ()) && ( OrderMagicNumber ()==Magic))
       {
         Qnt++;
         Mas_Ord_New[Qnt][ 1 ]= OrderOpenPrice ();
         Mas_Ord_New[Qnt][ 2 ]= OrderStopLoss ();
         Mas_Ord_New[Qnt][ 3 ]= OrderTakeProfit ();
         Mas_Ord_New[Qnt][ 4 ]= OrderTicket ();
         Mas_Ord_New[Qnt][ 5 ]= OrderLots ();
         Mas_Tip[ OrderType ()]++;
         Mas_Ord_New[Qnt][ 6 ]= OrderType ();
         Mas_Ord_New[Qnt][ 7 ]= OrderMagicNumber ();
         if ( OrderComment ()== "" )
            Mas_Ord_New[Qnt][ 8 ]= 0 ;
         else
            Mas_Ord_New[Qnt][ 8 ]= 1 ;
       }
    }
   Mas_Ord_New[ 0 ][ 0 ]=Qnt;
   return ;
 }
 
silhouette :

EA는 인덱스 1과 2가 있는 막대에 대한 신호를 생성하도록 설계되었습니다(즉, 새 막대가 열릴 때 시작 및 닫기 주문).

테스터에서는 OrderClose에 대해 오류 138 및 4051(티켓에서 맹세하는 것처럼 보임)을 교대로 제공합니다.

이 문제를 해결하는 데 도움을 주세요.

포지션을 청산하려면 다음 구성을 시도하십시오.

 int err;
// ---
if (...) // условие закрытия позиции
{   if ( OrdersTotal ()> 0 )
   {   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
      {   if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
         {   // фильтрация позиции по текущему символу:
             if ( OrderSymbol ()!= Symbol ()) continue ;
             // фильтрация позиции по магик-номеру:
             if ( OrderMagicNumber ()!=MagNum) continue ;
             // ... можно и другие фильтры поставить.
             // --- закрытие позиции Buy.
             if ( OrderType ()==OP_BUY)
             // перед открытием или закрытием позиции
             // обновляйте котировки с помощью RefreshRates()
             // дабы избежать устаревание запрошенной цены,
             // возможной причины ошибки 138
            {   RefreshRates (); 
               OrderClose ( OrderTicket (), OrderLots (),Bid, 30 );
               err= GetLastError ();
               if (err> 0 )   Alert ( "Ошибка при закрытии позиции Buy (" ,err, ")." );
               if (err== 0 ) Alert ( "Позиция Buy закрыта успешно." );
               err= 0 ; return ( 0 );
            }
             // --- закрытие позиции Sell.
       else    if ( OrderType ()==OP_SELL)
            {   RefreshRates ();
               OrderClose ( OrderTicket (), OrderLots (),Ask, 30 );
               err= GetLastError ();
               if (err> 0 )   Alert ( "Ошибка при закрытии позиции Sell (" ,err, ")." );
               if (err== 0 ) Alert ( "Позиция Sell закрыта успешно." );
               err= 0 ; return ( 0 );
            }
   }  }  }
}
 
chief2000 :
USD/JPY


고맙습니다
 
Roman. :


0.01 - NDD 센트 계정 . TP 및 SL = 0.

모든 곳이 동일합니다.

4일에는 통화 쌍에 대해 질문 없이 모든 것이 알고리즘에 따라 테스트됩니다.

알프스에서 - 금 - 알고리즘에 따라 테스트됩니다.

4th에서 작동하는 내 GRAIL에 금속을 추가하고 싶습니다. 지금까지는 통화에서만 작동합니다.


즉, 화폐에는 문제가 없나요?
 
Vinin :

즉, 화폐에는 문제가 없나요?


네. 질문이 없습니다.

Viktor Ivanovich, 진심으로 감사드립니다. 주요 질문에서 스스로 알아냈습니다.

네 번째, 센트 NDD 에는 금속이 없고 통화만 있으므로 테스트할 때 오류 번호 131이 발생합니다. 볼륨이 올바르지 않습니다. 나는 그것에 대해 몰랐다.

금과 은의 경우 그는 이미 알프스에서 매개변수를 최적화하기 시작했습니다.

 
paladin80 :

포지션을 청산하려면 다음 구성을 시도하십시오.


고마워, 효과가 있었다!
 

예를 들어 배너의 HTML 코드를 삽입하는 방법을 알려주실 수 있습니까?