Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1062

 
Artyom Trishkin:

Puoi controllare tu stesso? È difficile? E perché scrivere cose inutili?

Non ho controllato. Cosa ti ferma?

Si può fare questo o non ho eseguito un errore, quindi non si può fare questo non è possibile?

 

Colleghi, come controllare programmaticamente il TF dove l'Expert Advisor è in esecuzione sia per i test che per il trading, ad esempio per

per ottenere i valori dell'indicatore dalla prossima TF

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



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

Параметры

symbol

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

timeframe

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

Voglio usare questo esempio, in generale, la funzione INIT nel tester viene eseguita ad ogni passaggio?

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:

Colleghi, come controllare programmaticamente il TF dove l'Expert Advisor è in esecuzione sia per i test che per il trading, ad esempio per

per ottenere i valori dell'indicatore dalla prossima TF

Voglio usare questo esempio: la funzione INIT nel tester viene eseguita ad ogni passaggio?


Così la funzione si chiama Periodo(), c'è anche una variabile che memorizza il timeframe.

 
Seric29:

Così la funzione si chiama Periodo(), e c'è anche una variabile che memorizza il timeframe.

Grazie, darò un'occhiata...
 
Seric29:

È possibile farlo o no, l'ho eseguito con un errore e non è possibile farlo?

L'esecuzione non può essere perdonata.

Che tipo di errore?

 
Non ho fatto trading per 1,5 mesi, sono loggato in Mt5 e c'è una connessione che deve essere ripristinata?
File:
 
Diciamo che sono rimasto troppo tempo ad accettare il lavoro su un lavoro freelance e ora il contraente ha un oggetto scaduto. può essere risolto? ora è stato accettato.
 
Zlaya_budka:
Diciamo che sono rimasto troppo tempo ad accettare il lavoro su un lavoro freelance e ora il contraente ha un oggetto scaduto. può essere risolto? ora è stato accettato.

non si può.

 
Artyom Trishkin:

Non si può.

Bene, allora lo aggiungerò alla recensione.

 
Zlaya_budka:

Beh, lo aggiungerò alla recensione.

Questo non cambierà le statistiche.