Questions des débutants MQL5 MT5 MetaTrader 5 - page 608

 

new-rena:
Ок. В каком месте? В конце месяца? Я по календарику проверял...

//+------------------------------------------------------------------+
//|                                                  WeekOfMonth.mq4 |
//|                                                         new-rena |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "new-rena"
#property link      ""
#property version   "1.00"
#property strict
//--------------------------
double DayOfMonth,WeekOfMonth;
int DayOfWeeks,MonthOfYear,PrevMonth,Delta=0,Show=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//--- 
PrevMonth=TimeMonth(TimeLocal());
DayOfMonth=TimeDay(TimeLocal());
if(DayOfMonth==1)
   {
      Delta=TimeDayOfWeek(TimeLocal());
      Show=1;
   }
//--- init
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//--- deinit
      return(0);   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start()
  {
//---   
MonthOfYear=TimeMonth(TimeLocal());
DayOfMonth=TimeDay(TimeLocal());
DayOfWeeks=TimeDayOfWeek(TimeLocal());
if(PrevMonth!=MonthOfYear && DayOfMonth==1)
   {
      Delta=DayOfWeeks;
      Show=1;
   }
if(Show==1)
   {
      WeekOfMonth=MathCeil((DayOfMonth+Delta)/7);      
      Print("DayOfMonth N "+DoubleToStr(DayOfMonth,0));
      Print("WeekOfMonth N "+DoubleToStr(WeekOfMonth,0));
   }

PrevMonth=MonthOfYear;
//--- start
      return(0);   
  }
//+------------------------------------------------------------------+

pas drôle
 
pako:
ce n'est pas drôle.

Tu as pensé à répondre comme ça pendant 30 minutes ?

Ce n'est pas une réponse. Soyez plus précis, Paco.

Vous savez, ce n'est pas drôle du tout, mais l'histoire est muette sur ce point...

 

Tout testeur, doit inclure des incertitudes.

Je n'ai pas à vous l'expliquer. 2 ou 3 points à réaliser. Commission de 0,1-1 point. Et ainsi de suite.

Mais, encore une fois, il est inutile que je vous explique qu'il existe aussi d'autres paramètres.

Par exemple, supposons que nous ayons touché une tendance. Par exemple, sur EURUSD. Pour la période allant de janvier de cette année, par exemple, encore ! Alors combien d'argent avons-nous gagné jusqu'à présent ? Il est facile à calculer. Mais quoi ? Si nous investissons exactement la même somme d'argent. Nous obtiendrons exactement le même bénéfice dans quelques jours ? C'est ce dont un trader devrait rêver ! !! Maintenant, allons droit au but. Stratégie ? Si c'est possible en code machine ? Il doit faire quelque chose de similaire, ou proche de la stratégie d'un trader expérimenté.

En un mot, regarder votre création ! Que pouvez-vous dire ? Je ne peux rien dire. Comme c'est mauvais ! Tout est si mauvais. Tout est si loin de la vraie direction. Je regarde juste la télé. Je me repose, je me repose juste ! !!

Mais bonne chance, quand même.

 
new-rena:

Tu as pensé à répondre comme ça pendant 30 minutes ?

Ce n'est pas une réponse. Soyez plus précis, Paco.

Vous savez, ce n'est pas drôle du tout, mais l'histoire est muette sur ce point...

dans le panier compte bien :)))
 
pako:
dans le panier compte correctement :))))

Il y a toujours une idée ici et je l'ai donnée (so....) :

if(PrevMonth!=MonthOfYear && DayOfMonth==1)    {       Delta=DayOfWeeks;       Show=1;    }

WeekOfMonth=MathCeil((DayOfMonth+Delta)/7); 

 
new-rena:

Il faudrait aussi mettre quand le 1er du mois tombe sur un week-end, car le testeur ne tourne pas les week-ends.... Je n'ai pas vu pour l'Excel.

Eh bien, et de rouler dans l'initialisation d'un couple de mois auparavant ET au mois en cours ne serait pas mal, afin de ne pas attendre la fin du calcul du numéro de la semaine un mois entier. Mais ce ne sont que des nuances ....

C'est ce qui rend MQL4 si attrayant - le code est court et clair !

Je n'ai pas le temps maintenant, mais Kim a toutes les fonctions pour rechercher les dates et les heures, il y a le début du mois et le numéro de la semaine, en général j'ai tout vu, je ne me souviens plus où je l'ai vu, mais peut-être ici : https://forum.mql4.com/ru/38949.
 
Dimitri a depuis longtemps tout écrit pour vous sur le temps, les jours, les semaines, les mois, les années... Réinventez-vous la roue ?
 

Ah. Des années, des mois, des jours ou des semaines. Des heures ? ?? 15 minutes ? ?? Ah. !5 minutes de travail et Ah. Ah combien d'argent. Ou vingt ? Et puis encore. Ah.

 
Karputov Vladimir:

Lorsqu'un indicateur doit être ajouté à la fenêtre principale

int OnInit() 
  { 
   
//--- Создание кнопки 
  if( !ObjectCreate( 0, "Add_Indicator", OBJ_BUTTON, 0, 0, 0 ) )
  {
  
    Print( "Кнопка 'Добавить' не создана!" );
    return( INIT_FAILED );
  }
  else
  {
    ObjectSetInteger( 0, "Add_Indicator", OBJPROP_CORNER, CORNER_RIGHT_LOWER );
    ObjectSetInteger( 0, "Add_Indicator", OBJPROP_XDISTANCE, 200 );             
    ObjectSetInteger( 0, "Add_Indicator", OBJPROP_YDISTANCE, 500 );
    ObjectSetInteger( 0, "Add_Indicator", OBJPROP_XSIZE, 80 );
    ObjectSetInteger( 0, "Add_Indicator", OBJPROP_YSIZE, 20);

      ObjectSetInteger( 0, "Add_Indicator", OBJPROP_BGCOLOR, clrWhite );
      ObjectSetInteger( 0, "Add_Indicator", OBJPROP_STATE, true );
      ObjectSetString( 0, "Add_Indicator", OBJPROP_TEXT, "Добавить" );
     
  }
    
MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",MA_Period,MA_Shift,MA_Method,PRICE_CLOSE);
   if(MA_handle==INVALID_HANDLE)
//--- попробуем добавить индикатор на график 
 Print(__FUNCTION__,", first_start = ",first_start);
//return(INIT_FAILED);
   return(INIT_SUCCEEDED);
  } 
//+------------------------------------------------------------------+
//| Обработка события нажатия кнопок                                 |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // идентификатор события   
                  const long& lparam,   // параметр события типа long 
                  const double& dparam, // параметр события типа double 
                  const string& sparam  // параметр события типа string 
                  )                
  {
   long b_state;
   //---
   if(id==CHARTEVENT_OBJECT_CLICK) // НАЖАТ ГРАФИЧЕСКИЙ ОБЪЕКТ       
         if ( sparam == "Add_Indicator" )// Нажата кнопка
         {
      if ( ObjectGetInteger( 0, "Add_Indicator", OBJPROP_STATE, 0, b_state ) )
      {
        if ( b_state == 1 )
        {
          first_start=false;
          ObjectSetInteger( 0, "Add_Indicator", OBJPROP_BGCOLOR,clrWhite );
          ObjectSetString( 0, "Add_Indicator", OBJPROP_TEXT, "Добавить" );
        }
   }
}
 return;
}

J'ai également repris le code du bouton dans les exemples, ..... Comment faire pour que l'appui sur un bouton ne soit pas fixe, c'est-à-dire qu'après l'exécution de sa fonction, il revienne à son état initial ...

 
new-rena:
Avez-vous besoin d'un panneau de contrôle personnalisé qui vous permette d'ajouter un nombre quelconque d'indicateurs parmi un ou plusieurs ?

Je ne sais pas comment le simplifier, si c'est nécessaire ou non...

J'y penserai plus tard.