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

 
Comment puis-je travailler avec ça ? Ça fait deux jours que je suis assis ici pour rien. Quelle autre solution pourrait-il y avoir ?
 
Question : dans le gestionnaire OnCalculate(...), les constantes de tampon open,high,low,close débordent pour l'historique entier, un caractère à la fois, que dois-je faire ? Par exemple, je veux calculer la valeur du tableau mas[i]= open[i] /close[i] pour tout l'historique d'une paire et faire la moyenne de cette valeur avec un autre caractère. J'ai cherché dans de nombreux sujets, il n'y a pas grand chose de similaire. Pouvez-vous me dire où chercher.
 
Juer:
Comment puis-je travailler avec ça ? Ça fait deux jours que je suis assis ici pour rien. Quelle autre solution pourrait-il y avoir ?

Et où avez-vous montré un exemple reproductible ? Vous nous donnez juste des bouts de code. Devons-nous les compiler en code fonctionnel à notre gré ? Et si on ne devine pas et que vous avez besoin du mauvais ?

 
Artyom Trishkin:

Et où avez-vous montré un exemple reproductible ? Vous ne donnez que des bouts de code. Devons-nous les lier à un code fonctionnel à notre discrétion ? Et si on ne devine pas et que vous avez besoin de la mauvaise chose ?

OK, mais comment le faire correctement non pas à travers un tableau de structures, mais à travers une classe CArrayObj, où l'objet serait un objet de type structure ? Je ne comprends pas vraiment comment déclarer et comment ajouter et est-ce même possible ?

 
Juer:

OK, mais comment le faire correctement non pas à travers un tableau de structures, mais à travers une classe CArrayObj, où l'objet serait un objet de type structure ? Je ne comprends pas vraiment comment déclarer et comment ajouter et est-ce même possible ?

Essayez de décrire le problème en général, et non de manière spécifique - ce que vous voulez obtenir comme résultat en ayant telle ou telle donnée.

 
mwwm:
Question : dans le gestionnaire OnCalculate(...), les constantes de tampon open,high,low,close débordent pour l'historique entier, un caractère à la fois, que dois-je faire ? Par exemple, je veux calculer la valeur du tableau mas[i]= open[i] /close[i] pour tout l'historique d'une paire et faire la moyenne de cette valeur avec un autre caractère. J'ai cherché dans de nombreux sujets, il n'y a pas grand chose de similaire. Pouvez-vous me dire où chercher.
Qu'entendez-vous par débordement?
 
Дед пенсионер:
Que signifie " débordement"?

XAUUSD,Quotidien : sortie de la fourchette en 2019.mq4' (243,6) s'arrête pendant les calculs via les constantes dansOnCalculate, et 'CopyOpen' - aucune des surcharges ne peut être appliquée à l'appel de fonction lorsque j'essaie de faire comme ceci int prices1=CopyOpen(Symbol(),0,0,Bars(_Symbol,_Period),open) ; C'est très confus d'organiser l'accès aux données via des structures, à quel moment OHLC prend toutes les cotations et ensuite seulement les nouvelles, je suis bloqué sur iOpen(,,,))


 
Juer:

Donc erreur d'accès invalide au tableau.

Il n'y a pas de tableaux ou de chaînes dans la structure. Seulement bool, integer, double et enums.

Je suis désolé. Je suis devenu un peu idiot. Bien sûr, cela devra être un peu plus compliqué :

bool CCandleRule::GetRulesArray(input_rule &rules_array[])
{
   int nArraySize = ArraySize(rules);
   if (ArraySize(rules_array) != nArraySize)
      if (ArrayResize(rules_array, nArraySize) != nArraySize)
         return false;

   for (int i = 0; i < nArraySize; ++i)
      rules_array[i] = rules[i];
      
   return true;
}

Il ne s'agit pas d'un vecteur, comme en C++. C'est pourquoi la copie élément par élément est nécessaire. Nous devons également veiller à faire correspondre la taille du tableau d'origine et du tableau de destination. C'est pour ça que la fonction ne tient pas sur une seule ligne. Et il ne sera pas toujours exécuté avec succès. C'est pourquoi nous devons retourner la confirmation qu'elle a été exécutée avec succès.

 
mwwm:

XAUUSD,Quotidien : sortie de la fourchette en '2019.mq4' (243,6) s'arrête pendant les calculs via les constantes dansOnCalculate, et 'CopyOpen' - aucune des surcharges ne peut être appliquée à l'appel de fonction lorsque j'essaie de faire comme ceci int prices1=CopyOpen(Symbol(),0,0,Bars(_Symbol,_Period),open) ; C'est très confus d'organiser l'accès aux données via des structures, à quel moment OHLC prend toutes les cotations et ensuite seulement les nouvelles, bloqué sur iOpen(,,,))


Il n'est pas prioritaire, et tu accèdes à un index inexistant.
 
Artyom Trishkin:
Il n'est pas prioritaire, et vous vous adressez à un index inexistant.

et comment le faire correctement ?