Indiquer une nouvelle barre - page 3

 

Bonjour Alain,

merci pour votre commentaire et vos améliorations.

Je devrais revenir à ma première version dans laquelle "bool NewBar" est une variable globale commutée par un appel de fonction dans OnTick().

Ou alors j'en fais un petit objet. Peut-être l'option la plus intelligente.


Et - bien sûr - "ne jamais faire deux fois le même calcul".

Helmut

 
datetime iTime[];
datetime recent;
datetime projection;
int OnInit()
  {
//---
  int pull=CopyTime(NULL,0,0,1,iTime);
  recent=iTime[0];
  projection=recent+PeriodSeconds();
//---
   return(INIT_SUCCEEDED);
  }

void OnTick()
  {
//---
  if(TimeCurrent()>=projection)
   {
   Print("New Bar "+TimeToString(projection,TIME_DATE|TIME_MINUTES));
   projection=projection+PeriodSeconds();
   }
  }
 

@ Doerk Hilger

La langue est la même, mais ils ont un petit sous-ensemble de fonctions non communes<br / translate="no">.

Oh mon Dieu ... définitivement pas !

Comme MQ a souligné sur la description du produit

MetaQuotes Language 5 est basé sur les concepts du langage de programmationbien connu et populaire С++. MQL5 est également un langage de programmation orienté objet de haut niveau.

https://www.metatrader5.com/en/automated-trading/mql5

A part quelques différences dans la manipulation des structures, des pointeurs et des adresses, le point le plus important est : MQL5 fournit toutes les caractéristiques d'un langage de programmation orienté objet qui permet un paradigme de programmation complètement différent. De ce point de vue, MQL5 appartient clairement à une autre classe et aussi à une autre génération de langages que MQL4.

Un autre avantage est la vitesse. Je ne me souviens plus où j'ai lu cela : MQL5 est cent fois plus rapide en exécution que MQL4.

Et voici l'inconvénient : il est plus rapide en exécution MAIS la création d'un programme est très très lente si vous avez besoin de vousfamiliariser avec les concepts de la programmation à un niveau professionnel.

Ce qui nous amène au problème de MQ. D'une part, ils doivent offrir un environnement de développement professionnel moderne afin d'obtenir ou de conserver le marché des professionnels, d'autre part, ils ne peuvent pas se permettre de perdre tous les clients privés et semi-professionnels qui sont intéressés par le commerce et non par la science de la programmation.




 
MQ a fait beaucoup pour générer la confusion à ce stade.

Vous avez peut-être raison.

Voyons ce que nous pouvons faire pour clarifier cette question.

Je pense qu'il serait très utile que les gens postent leurs questions sur le MQL4 dans le forum MQL4, tandis que ceux qui ont des questions sur le MQL5, devraient les poster dans le forum MQL5.

Cela semble très simple... qu'en pensez-vous ?

Au début, il serait utile que le modérateur déplace les messages erronés vers le bon forum, en laissant une mention "désolé, mauvais forum - voir...".

Willbur

 

@LorentzosRoussos

C'est de plus en plus facile ;-)

Ce qui m'inquiète, c'est de savoir si TimeCurrent() est synchrone avec les barres dans tous les cas.

Je vais faire des tests sur 2h lundi.

Willbur



 
devrait être : 24 h
 
Willbur:

@LorentzosRoussos

C'est de plus en plus facile ;-)

Ce qui m'inquiète, c'est la question de savoir si TimeCurrent() est synchrone avec les barres dans tous les cas.

Je vais faire des tests sur 2h lundi.

Willbur



Alain peut me corriger sur ce point, mais vous pouvez trouver des lacunes dans les cas où, sur l'horizon temporel d'une barre, il n'y avait pas de ticks, donc aucune barre ne sera en place.
 
Willbur:

@ Doerk Hilger

Oh mon Dieu ... certainement pas !

Comme MQ a souligné sur la description du produit

A part quelques différences dans la manipulation des structures, des pointeurs et des adresses, le point le plus important est : MQL5 fournit toutes les caractéristiques d'un langage de programmation orienté objet qui permet un paradigme de programmation complètement différent.




Définitivement oui :) Mais je sais ce que vous voulez dire, j'ai toujours pensé que je programmais MQL5, parce que je ne code qu'orienté objet, mais comme je l'ai appris maintenant, c'est MQL4 "amélioré" depuis la version 600 qui n'est tout simplement rien d'autre que MQL5 mais, comme on l'a dit, avec de petites différences dans le sous-ensemble des fonctions - et depuis cette version MQL4 n'est plus un autre langage. En fait, Enhanced-MQL4 est MQL5 pour MetaTrader4. C'est ce que je voulais dire par la partie confusion. Pour moi, MQL5 a toujours été OOP et MQL4 n'était que du spaghetti descendant. Et je n'aime pas les spaghettis ;)

Edit : D'où vient votre déclaration ci-dessus et quand a-t-elle été publiée ? Parce qu'en fait, cela signifierait que la première hypothèse était la bonne : c'est la confusion de MQL5 .... à son plus haut niveau ;)

 
J'adore les spaghettis.
 
Doerk Hilger:

Définitivement oui :) Mais je sais ce que vous voulez dire, j'ai toujours pensé que je programmais MQL5, parce que je ne code qu'orienté objet, mais comme je l'ai appris maintenant, c'est MQL4 "amélioré" depuis la version 600 qui n'est tout simplement rien d'autre que MQL5 mais, comme on l'a dit, avec de petites différences dans le sous-ensemble des fonctions - et depuis cette version MQL4 n'est plus un autre langage. En fait, Enhanced-MQL4 est MQL5 pour MetaTrader4. C'est ce que je voulais dire par la partie confusion. Pour moi, MQL5 a toujours été OOP et MQL4 n'était que du spaghetti descendant. Et je n'aime pas les spaghettis ;)

Edit : D'où vient votre déclaration ci-dessus et quand a-t-elle été publiée ? Parce qu'en fait, cela signifierait que la première hypothèse était la bonne : c'est MQL5 .... confusion à son plus haut niveau ;)

MQL4 amélioré ?

Jamais entendu parler de cela.

Peut-être devriez-vous lire la documentation des deux plateformes avant de vous convaincre que vous savez ce que vous faites.

Raison: