Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1062

 
Artyom Trishkin:

Pouvez-vous le vérifier vous-même ? Est-ce difficile ? Et pourquoi écrire des choses inutiles ?

Je n'ai pas vérifié. Qu'est-ce qui vous arrête ?

Pouvez-vous faire cela ou non j'ai couru une erreur, donc vous ne pouvez pas faire cela n'est pas possible ?

 

Chers collègues, comment vérifier de manière programmatique le TF où le conseiller expert est exécuté à la fois pour les tests et pour le trading, par exemple pour

pour obtenir les valeurs des indicateurs de la prochaine TF

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



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

Параметры

symbol

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

timeframe

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

Je veux utiliser cet exemple, en général, la fonction INIT dans le testeur est exécutée à chaque passage ?

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:

Chers collègues, comment vérifier de manière programmatique le TF où le conseiller expert est exécuté à la fois pour les tests et pour le trading, par exemple pour

pour obtenir les valeurs des indicateurs de la prochaine TF

Je veux utiliser cet exemple. La fonction INIT du testeur est-elle exécutée à chaque passage ?


C'est ainsi que la fonction s'appelle Period(), il y a aussi une variable qui stocke le délai.

 
Seric29:

C'est ainsi que la fonction s'appelle Period(), et qu'il y a aussi une variable qui stocke le délai.

Merci. Je vais regarder...
 
Seric29:

Est-ce possible de le faire ou non, j'ai lancé le programme avec une erreur et il n'est pas possible de le faire ?

L'exécution ne peut être pardonnée.

Quel genre d'erreur ?

 
Je n'ai pas négocié depuis 1,5 mois, je suis connecté à Mt5 et il y a une connexion qui doit être restaurée ?
Dossiers :
 
Disons que j'ai dépassé le délai d'acceptation d'un travail en freelance et que le contractant a maintenant un objet en souffrance. est-ce que cela peut être réparé ? a maintenant été accepté.
 
Zlaya_budka:
Disons que j'ai dépassé le délai d'acceptation d'un travail en freelance et que le contractant a maintenant un objet en souffrance. cela peut-il être réparé ? a maintenant été accepté.

vous ne pouvez pas.

 
Artyom Trishkin:

Tu ne peux pas.

Dans ce cas, je l'ajouterai à la critique.

 
Zlaya_budka:

Eh bien, je vais ajouter ça à la critique.

Cela ne changera pas les statistiques.
Raison: