MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1062

 
Artyom Trishkin :

직접 확인해보는 것은 어떨까요? 복잡한? 그리고 왜 너무 많이 쓰는가?

나는 확인하지 않았다. 무엇이 널 멈추게 해?

이거 해도 되나 안 되나 오류가 나서 하면 안 되는 건가요?

 

동료 - 예를 들어 테스트 및 거래를 위해 Expert Advisor가 실행 중인 TF를 프로그래밍 방식으로 확인하는 방법

다음 TF에서 표시기 값 가져오기

Возвращает значение времени открытия бара (указанного параметром shift) соответствующего графика. 



datetime    iTime ( 
   string            symbol,           // символ 
   int               timeframe,       // период 
   int               shift             // сдвиг 
   );
 

Параметры

symbol

[in]  Символьное имя инструмента. NULL означает текущий символ.

timeframe

[in]  Период. Может быть одним из значений перечисления ENUM_TIMEFRAMES . 0 означает период 

다음은 사용하려는 예입니다. 테스터의 INIT 기능이 각 패스에서 실행됩니까?

 int OnInit ()
{
   MINLOT = MarketInfo( Symbol (),MODE_MINLOT);
   MAXLOT = MarketInfo( Symbol (),MODE_MAXLOT);  
   //double vbid    = MarketInfo(Symbol(),MODE_BID); 
   //double vask    = MarketInfo(Symbol(),MODE_ASK); 
   vpoint  = MarketInfo( Symbol (),MODE_POINT); 
   vdigits = ( int )MarketInfo( Symbol (),MODE_DIGITS); 
   
   if ( Digits == 5 || Digits == 3 )
     {
      StopLoss = StopLoss* 10 ;       
      slippage = slippage* 10 ;
      TakeProfit = TakeProfit* 10 ;   
      TralingStop = TralingStop * 10 ;
      DELTA = DELTA* 10 ; 
      SPREAD_MAX = SPREAD_MAX* 10 ;      
     }
     
//   --------------------------------------------------------------
 switch (signal_period)
  { 
   case 0 :            ПЕРИОД_ДИАПАЗОНА = 0 ;
                      ПЕРИОД_СТАРШЕГО_ДИАПАЗОНА = 0 ;
                       break ;
//  --------------------------------------------------------------- 
   case 1 :            ПЕРИОД_ДИАПАЗОНА = PERIOD_M1 ;
                      ПЕРИОД_СТАРШЕГО_ДИАПАЗОНА = PERIOD_M5 ;
                       break ;
//  ---------------------------------------------------------------
   case 2 :            ПЕРИОД_ДИАПАЗОНА = PERIOD_M5 ;
                      ПЕРИОД_СТАРШЕГО_ДИАПАЗОНА = PERIOD_M15 ;
                       break ;
//  ---------------------------------------------------------------
   case 3 :            ПЕРИОД_ДИАПАЗОНА = PERIOD_M15 ;
                      ПЕРИОД_СТАРШЕГО_ДИАПАЗОНА = PERIOD_M30 ;
                       break ;
//  ---------------------------------------------------------------
   case 4 :            ПЕРИОД_ДИАПАЗОНА = PERIOD_M30 ;
                      ПЕРИОД_СТАРШЕГО_ДИАПАЗОНА = PERIOD_H1 ;
                       break ;
//  ---------------------------------------------------------------
   case 5 :            ПЕРИОД_ДИАПАЗОНА = PERIOD_H1 ;
                      ПЕРИОД_СТАРШЕГО_ДИАПАЗОНА = PERIOD_H4 ;
                       break ;
//  --------------------------------------------------------------- 
   case 6 :            ПЕРИОД_ДИАПАЗОНА = PERIOD_H4 ;
                      ПЕРИОД_СТАРШЕГО_ДИАПАЗОНА = PERIOD_D1 ;
                       break ;
//  --------------------------------------------------------------- 
   case 7 :            ПЕРИОД_ДИАПАЗОНА = PERIOD_D1 ;
                      ПЕРИОД_СТАРШЕГО_ДИАПАЗОНА = PERIOD_W1 ;
                       break ;
      
   case 8 :            ПЕРИОД_ДИАПАЗОНА = PERIOD_W1 ;
                      ПЕРИОД_СТАРШЕГО_ДИАПАЗОНА = PERIOD_MN1 ;
                       break ;   
                                      
   case 9 :            ПЕРИОД_ДИАПАЗОНА = PERIOD_MN1 ;
                      ПЕРИОД_СТАРШЕГО_ДИАПАЗОНА = PERIOD_MN1 ;
                       break ;             

 //  --------------------------------------------------------------- 
     default : 
    {
       Print ( " не соответствует signal_period для торгов " ); 
       return ( 0 );
    }  
 }                

iTmfrm = ПЕРИОД_ДИАПАЗОНА;
 
 
     
   Print ( " vpoint = " , vpoint, " vdigits = " , vdigits); 
   Print ( " MAXLOT = " , MAXLOT, " MINLOT = " , MINLOT); 
   Print ( " STOPLEVEL  = " , MarketInfo( Symbol (),MODE_STOPLEVEL));
   Print ( " SPREAD     = " , MarketInfo( Symbol (), MODE_SPREAD ));
   return ( INIT_SUCCEEDED );
}
//--------------------------------------------------------------------
void OnTick ()
{
                                 
   
   if ( iTime ( Symbol (),ПЕРИОД_ДИАПАЗОНА, 0 ) == prevtime) return ;             //ждем нового бара на текущем таймфрейме
      prevtime = iTime ( Symbol (),ПЕРИОД_ДИАПАЗОНА, 0 );                     //если появился новый бар на текущем графике, то включаемся 
 


// -------------------   РАСЧЕТ ИНДИКАТОРОВ    ---------------------------------------
  
   MacdCurrent = iMACD ( NULL ,ПЕРИОД_ДИАПАЗОНА, 12 , 26 , 9 , PRICE_OPEN ,MODE_MAIN, 0 );
   MacdPrevious= iMACD ( NULL ,ПЕРИОД_ДИАПАЗОНА, 12 , 26 , 9 , PRICE_OPEN ,MODE_MAIN, 1 );
   // SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
   // SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
   MaCurrent = iMA ( NULL ,ПЕРИОД_ДИАПАЗОНА,MATrendPeriod, 0 , MODE_EMA , PRICE_OPEN , 0 );
   MaPrevious= iMA ( NULL ,ПЕРИОД_ДИАПАЗОНА,MATrendPeriod, 0 , MODE_EMA , PRICE_OPEN , 1 ); 
   
   MaCurrent_СТАРШЕГО =   iMA ( NULL ,ПЕРИОД_СТАРШЕГО_ДИАПАЗОНА,MA_СТАРШЕГО_ТФ, 0 , MODE_EMA , PRICE_OPEN , 0 );
   MaPrevious_СТАРШЕГО = iMA ( NULL ,ПЕРИОД_СТАРШЕГО_ДИАПАЗОНА,MA_СТАРШЕГО_ТФ, 0 , MODE_EMA , PRICE_OPEN , 1 );                        

   // ------------------------------------------------------------------------------------ 
 
Roman Shiredchenko :

동료 - 예를 들어 테스트 및 거래를 위해 Expert Advisor가 실행 중인 TF를 프로그래밍 방식으로 확인하는 방법

다음 TF에서 표시기 값 가져오기

다음은 사용하려는 예입니다. 테스터의 INIT 기능이 각 패스에서 실행됩니까?


따라서 이 함수는 Period() 라고 하며 시간 프레임을 저장하는 변수도 있습니다.

 
Seric29 :

그래서 이 함수를 Period()라고 하며, 시간을 저장하는 변수도 있습니다.

고마워. 지켜볼게...
 
Seric29 :

이거 해도 되나 안 되나 오류가 나서 하면 안 되는 건가요?

처형은 용서할 수 없습니다.

무슨 실수?

 
나는 1.5 개월 동안 거래하지 않았고, 5 산에갑니다. 여기에 그러한 연결이 있습니다. 복원하려면 무엇을해야합니까?
파일:
 
내가 프리랜서 작업의 수락을 연체했고 이제 계약자가 연체된 이의를 가지고 있다고 가정해 보겠습니다. 그것은 고칠 수 있습니까? 이미 수락되었습니다.
 
Zlaya_budka :
내가 프리랜서 작업의 수락을 연체했고 이제 계약자가 연체된 이의를 가지고 있다고 가정해 보겠습니다. 그것은 고칠 수 있습니까? 이미 수락되었습니다.

금지되어 있습니다.

 
Artyom Trishkin :

금지되어 있습니다.

그럼 그렇구나 하는 후기를 덧붙이겠습니다.

 
Zlaya_budka :

그럼 그렇구나 하는 후기를 덧붙이겠습니다.

통계는 변경되지 않습니다.