- FOREX - Tendances, prévisions et implications 2015(suite)
- Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6.
- L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading
Le problème est que l'indicateur , qui trace la ligne lorsqu'il change le TF, sur lequel l'historique n'est pas encore chargé, calcule les données, puis les barres sont ajoutées au graphique, et il calcule à nouveau les données, respectivement, les précédentes sont également laissées de côté.
Il y a donc une erreur dans la logique de l'indicateur. Lors du chargement de l'historique, l'option idéale de l'indicateur : calculer son état au moment de la dernière barre, qui n'a pas changé dans l'historique et recalculer les données sur la partie actualisée de l'historique.
En réalité, cette option n'est pas toujours possible, car pour retourner l'environnement de l'indicateur sur une certaine barre, il faudrait effectuer le calcul depuis le début de l'historique. Par conséquent, dans les algorithmes complexes de l'indicateur, un recalcul complet de l'historique est effectué lors du chargement d'une seule barre (à ne pas confondre avec l'ouverture d'une nouvelle barre).
En fait le problème est que l'indicateur qui trace la ligne au changement de TF, sur lequel l'historique n'est pas encore chargé, calcule les données, puis les barres sont ajoutées au graphique, et il calcule à nouveau les données, respectivement, les précédentes sont également laissées de côté + saut.
Dans l'indicateur, la vérification doit être faite dans OnCalculate() :
if(prev_calculated==0) // значит история изменилась или это первый проход
L'indicateur dans OnCalculate() doit vérifier :
Merci.
J'étais juste confus par le fait que les alertes m'indiquaient que l'histoire était chargée par morceaux.
Oui. C'est ça.
Il y a donc une erreur dans la logique de l'indicateur. Lors du chargement de l'historique, l'option idéale de l'indicateur : calculer son état au moment de la dernière barre, qui n'a pas changé dans l'historique et recalculer les données sur la partie actualisée de l'historique.
En réalité, cette option n'est pas toujours possible, car pour retourner l'environnement de l'indicateur sur une certaine barre, il faudrait effectuer le calcul depuis le début de l'historique. Par conséquent, avec tout algorithme sophistiqué de l'indicateur, un recalcul complet de l'historique est effectué lors du chargement d'une seule barre (ne pas confondre avec l'ouverture d'une nouvelle barre).
Donc la seule solution viable est seulement ?
for(int i=rates_total-prev_calculated;i>=0;i--)
Donc la seule solution qui fonctionne est...
for(int i=rates_total-prev_calculated;i>=0;i--)
Et si j'ai besoin de recalculer non seulement la barre courante mais aussi la barre 4, par exemple ?
for(int i=rates_total-prev_calculated+4;i>=0;i--) { if(i>Bars) i=Bars;
Oui, ça marche.
Lorsque les barres sont chargées par morceaux, elles sont recalculées par morceaux.
Le bon morceau est seulement le dernier à être chargé plus à gauche haha.
Il est temps d'apprendre à rédiger des indicateurs.
Apprends-moi.
Et je dis que les développeurs devraient faire des ajustements dans les premiers calculs de l'indicateur.
Il est temps d'apprendre à écrire des indicateurs
Tu veux un truc ? Devinez ce qu'Alert a rendu ?
int OnCalculate(const int rates_total,const int prev_calculated,const datetime &time[],const double &open[],const double &high[], const double &low[],const double &close[],const long &tick_volume[],const long &volume[],const int &spread[]) { if(prev_calculated!=0) Alert(prev_calculated," M:",Period()); return(rates_total); }
Tu veux un truc ? Devinez ce qu'Alert a rendu ?
Je n'utilise pas les alertes dans les indicateurs. Prévoir un nouveau calcul complet en cas de téléchargement de l'historique. Il est facile à contrôler.
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation