Caractéristiques du langage mql5, subtilités et techniques - page 194

 

Bonjour, l'aide des experts !

De la documentation

Variables globales

" L'initialisation des variables globales est effectuée une fois après le chargement du programme dans la mémoire du terminal client et avant le traitement du premier événement Init. Pour les variables globales, qui sont des objets de classes, lors de l'initialisation, les constructeurs appropriés sont appelés."

Mais en fait, lorsque je change la période du graphique, le constructeur de la classe d'objet global dans l'indicateur est appelé.

Comment faire en sorte que le constructeur soit appelé une fois après le démarrage de l'indicateur ?

 
Gudgeon:

Mais en fait, lorsque je change la période du graphique, le constructeur de la classe objet dans l'indicateur est appelé.

Comment faire en sorte que le constructeur soit appelé une fois après le démarrage de l'indicateur ?

Changement de TF pour l'indicateur - démarrage d'une nouvelle copie du programme.

 
fxsaber:

Changer le TF de l'indicateur - exécuter une nouvelle copie du programme.

Merci !

De façon inattendue, je ne comprends rien à la documentation.

Tout est OK dans les conseillers experts.

 
Pour connaître le temps nécessaire à la compilation de votre programme, procédez comme suit.
LastModifyEX5() - __DATETIME__
 
fxsaber:
Pour savoir combien de temps il faut pour compiler votre programme, procédez comme suit.
Qu'est-ce que LastModifyEX5() ? Je ne le trouve pas sur le site web.
 
Alexey Viktorov:
Et ce LastModifyEX5() quoi ? Je ne le trouve pas sur le site web.

Vous devez l'écrire vous-même via l'interface WinAPI. La mise en œuvre est ici secondaire.

 

Mes amis, camarades amateurs !

Comment puis-je définir par programme la visibilité d'un indicateur spécifique sur un TF spécifique,

Considérant qu'il peut y avoir 5 autres indicateurs pour d'autres TF.

J'ai cherché dans la description, et très simplement, la recherche dans l'aide, mais la recherche de la description ne donne aucun résultat sur le mécanisme pour le résoudre.


Je sais comment régler la visibilité des objets.

 
Le limiteur peut modifier sonORDER_TIME_SETUP_MSC - en cas d'exécution partielle, cette propriété devient égale au temps de la première (éventuellement avant-dernière) exécution partielle.
 
Dans le testeur, cette condition sera toujours déclenchée.
int OnInit()
{
  MqlTick Tick;
  
  return(SymbolInfoTick(_Symbol, Tick) && (TimeCurrent() != Tick.time));
}
Il est difficile de dire s'il s'agit d'un bogue dans le testeur ou d'une fonctionnalité.
 

Un moyen de déterminer le décalage GMT de l'heure du serveur a étéproposé une fois. Il ne fonctionne pas toujours de manière précise.

La version ci-dessous semble être une version exacte.

// Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmtoffset
int TimeServerGMTOffset( void )
{
  MqlCalendarValue Value[1];
  
  CalendarValueHistoryByEvent(840030016, Value, D'2020.12.03', D'2020.12.06');
  
  return((13 - ((Value[0].time / 3600) % 24)) * 3600);
}

// Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmt
datetime TimeServerGMT( void )
{
  return(TimeTradeServer() + TimeServerGMTOffset());
}


Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Caractéristiques du langage mql4, subtilités et astuces

fxsaber, 2018.03.29 14:32

Applications

#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{  
  PRINT(TimeGMT());
  PRINT(TimeServerGMT());  
}