Le changement de TF est un problème - page 6

 
Vasyl Nosal:
C'est tout ? Il n'y aura pas de problème ?
Ce n'est pas le code qui est défectueux. :) Prenez-le et utilisez-le.
 
Sergei Vladimirov:

Vladimir, pourquoi faites-vous cela dans OnCalculate() ? Je veux dire les deux dernières lignes - réinitialisation des tableaux. Vous avez les deux tampons calculés sur chaque barre, c'est une action inutile.

if(prev_calculated==0)
{
   limit=rates_total-1;
   ArrayInitialize(up_arr,EMPTY_VALUE);
   ArrayInitialize(down_arr,EMPTY_VALUE);
}
Pourquoi avez-vous décidé que l'initialisation sera effectuée à chaque tick? La condition prev_calculated==0 est exécutée une ou deux fois au début de l'indicateur. Pendant l'opération, prev_calculated==0 peut le devenir si l'historique est modifié - mais c'est rarement ou jamais le cas et le changement d'historique nécessite un nouveau calcul de l'indicateur.
 
Sergei Vladimirov:
Ce n'est pas le code qui est défectueux. :) Prenez-le et utilisez-le.

Merci : ))))))))))))))))))))))))))))))))))))))))))))))))))

Qui est le prochain ?

 
Karputov Vladimir:
Pourquoi avez-vous décidé que l'initialisation aura lieu à chaque tick ? La condition prev_calculated==0 est exécutée une ou deux fois lors du démarrage de l'indicateur. Pendant l'opération prev_calculated==0 peut devenir si l'historique est modifié - mais c'est rarement ou même jamais et le changement d'historique nécessite un recalcul de l'indicateur.
Peut-on se passer de la mise à zéro des tampons lors du chargement de l'historique ?
 
Karputov Vladimir:
Qu'est-ce qui vous fait penser que l'initialisation aura lieu à chaque tick ?
Où ai-je écrit ça ? Je demandais pourquoi réinitialiser les tampons dans OnCalculate() si les deux tampons sont ensuite calculés sur toutes les barres.
 
Sergei Vladimirov:
Où ai-je écrit ça ? Je demandais pourquoi réinitialiser les tampons dans OnCalculate() si les deux tampons sont ensuite calculés sur toutes les barres.
Déclaration incorrecte. Lorsque prev_calculated==0, je contourne ensuite toutes les barres, mais cela ne garantit pas le remplacement de toutes les valeurs dans les tampons des indicateurs. Par conséquent, lorsque prev_calculé==0, vous devez vider les tampons des indicateurs.
 
Vasyl Nosal:

Merci : ))))))))))))))))))))))))))))))))))))))))))))))))))

Qui est le prochain ?

Pourquoi mentir ?

 
Karputov Vladimir:
Déclaration incorrecte. Lorsque prev_calculated==0, jecontourne ensuitetoutes les barres, maiscela ne garantit pas le remplacement de toutes les valeurs dans lestampons des indicateurs. Par conséquent, à prev_calculated==0, je dois vider les tampons d'indicateurs.

Oui ? Pouvez-vous me donner un exemple de cas où, dans votre code, la valeur d'un tampon ne sera pas remplie ? Sauf peut-être le tout premier bar de l'histoire.

 
Sergei Vladimirov:

Pourquoi mentir ?

Génie.

Avez-vous essayé de passer à une paire sans historique, puis à une autre TF ?

 
Sergei Vladimirov:

Ce n'était pas une déclaration, c'était une question.

Oui ? Peut-être pouvez-vous nous donner un exemple, quand dans votre code une valeur d'un tampon ne sera pas remplie ?

Vous savez, faisons ceci : prenez le code 1.43 de ce post et commentez les lignes :

if(prev_calculated==0)
{
   limit=rates_total-1;
//ArrayInitialize(up_arr,EMPTY_VALUE);
//ArrayInitialize(down_arr,EMPTY_VALUE);
}

et regardez le résultat lorsque vous faites défiler le graphique vers l'arrière de l'historique et que l'historique est chargé.

Raison: