CopyTicksRange () ne fonctionne pas correctement dans MQL5. a - page 6

 
Alexey Viktorov #:

En deux ans, vous auriez pu comprendre que si une fonction ne fonctionne pas comme vous le souhaitez, et que les développeurs le savent et ne la corrigent pas, cela ne s'appelle pas un bug...

Levez le pouce, programmeurs cool et instruits.........

Ainsi, si vous ne corrigez pas les bogues des indicateurs que vous vendez pendant trois ans, alors que vous êtes au courant, ce n'est pas un bogue !

Une bonne approche, qui devrait inciter le public à acheter vos produits artisanaux.

 
RusPro #:

INT_MAX = 2147483647


en fait, vous avez immédiatement arraché un morceau de mémoire INT_MAX* sizeof(double) et ensuite travailler comme avec static

vous auriez pu écrire

double d[INT_MAX] ; - ce serait la même chose pour vous que

la seule différence sera dans le fonctionnement de la fonction ArraySize() alors que vous obtiendrez la bobine entière de mémoire en une seule fois

Il ne faut pas tout prendre au pied de la lettre, ce n'est qu'un exemple!

"Aspirez" autant que vous en avez besoin !

 
prostotrader #:

Vous ne devez pas le prendre au pied de la lettre, c'est un exemple!

"Prenez-en autant que vous en avez besoin !

Je ne voulais pas vous offenser de quelque manière que ce soit, désolé. C'est juste que dans cet exemple, le maximum possible a été saisi :))

 
RusPro #:

résultats en microsecondes.

Aucune cellule de mon tableau ne présentait un résultat supérieur à deux.

 
fxsaber #:

Aucune cellule du tableau n'a affiché un résultat supérieur à deux.


Avez-vous changé le code ?


Déplacer tout le code de OnCalculate() vers OnInit(), pour qu'il ne s'exécute qu'une fois. Je n'avais pas de ticks dans la sortie et OnCalculate n'était appelé qu'une fois au démarrage.

 
RusPro #:

Déplacer tout le code de OnCalculate() vers OnInit() pour qu'il ne soit exécuté qu'une seule fois.

C'est comme ça que ça se passe. Il est intéressant de noter que tout se passe bien dans OnCalculate. Le compilateur semble bien fonctionner avec les répétitions.

Pour les CopyTicks, je ne vois pas l'utilité d'utiliser des statiques.

 
MetaQuotes #:
Corrigé, sera en version bêta aujourd'hui.

Quelle est la date d'aujourd'hui ?)

 
RusPro #:

Quelle est la date d'aujourd'hui ? :)

Mettez à jour uniquementterminal64.exe vers b3042. Ne mettez pas encore à jourMetaEditor64.exe.

 
RusPro #:

Quelle est la date d'aujourd'hui ?)

Les versions bêta sont publiées quotidiennement sur MetaQuotes-Demo, mais ne sont pas toujours disponibles lorsque vous consultez le menu d'aide, car nous donnons la priorité aux tests sur notre serveur de démonstration.

 
int m1,min1;
datetime start,end;
MqlTick  arr_ticks[];
MqlDateTime       now1;

void OnTick()
{
   TimeTradeServer(now1);
   if(min1 != now1.min)
   {
      if(m1==0){start=TimeTradeServer();}
      m1+=1;
      if(m1==4)
      {
         end = TimeTradeServer();
         ZeroMemory(arr_ticks);
         int len1 = CopyTicksRange(_Symbol,arr_ticks,COPY_TICKS_INFO,start,end);
         Print(__FUNCTION__," start: ", start," end: ",end," len: ",len1);
         ArrayPrint(arr_ticks);
         m1=0;
      }//old 3 min
   
   
   min1 = now1.min;
   }//New Minute

}//end OnTick

La description deCopyTicksRange () indique que l'opérateur compte le temps en millisecondes,

l'idée est venue de collecter dans un tableau les Ticks en minutes, mais pour une raison quelconque, cela fonctionne :