Symboles personnalisés. Erreurs, bogues, questions, suggestions. - page 12

 
fxsaber:

Bug 16.

Auparavant, CustomTicksAdd générait des barres à partir de ticks qui se référaient à la journée en cours. Ce n'est pas non plus le cas aujourd'hui.

Ce bogue semble être lié au bogue n°14.

Le retrait du symbole de l'aperçu du marché est possible pour la raison suivante. Le fait d'appeler consécutivement CustomSymbolCreate - CustomSymbolDelete - CustomSymbolCreate avec le même nom de symbole personnalisé provoquait l'apparition de l'ID du symbole. Par conséquent, lorsque l'on vérifie si un symbole peut être retiré de la vue d'ensemble du marché, le graphique de ce symbole n'a pas été trouvé (l'identifiant est corrompu), et le symbole a été retiré en toute sécurité. Ceci a été corrigé.

Lorsque l'on applique un tick à un graphique, la même chose est possible - la recherche du graphique par l'identifiant du symbole n'a pas donné de résultat.

 
fxsaber:

Bug 15.

Nous exécutons l'indicateur suivant sur le symbole de cet EA (avec ChartSetSymbolPeriod-row supprimé)

Il ne produit que des zéros.

C'est juste.

L'appel à CustomRatesUpdate remet à zéro tous les compteurs de changement et recalcule les indicateurs à partir de zéro.

 
Slava:

A juste titre.

Lorsque vous appelez CustomRatesUpdate, tous les compteurs de changement sont remis à zéro et les indicateurs sont recalculés à partir de zéro.

Quelle est la logique qui sous-tend cette solution ? Après tout, il y a des barres inchangées sur la gauche.

 
fxsaber:

Quelle est la logique qui sous-tend cette solution ? Après tout, il y a des barres invariantes sur la gauche.

prev_calculated contient une valeur qui a été renvoyée lors d'un appel OnCalculate précédent.

L'indicateur peut renvoyer n'importe quelle valeur en fonction de sa propre logique. Il est donc inutile de passer en revue tous les indicateurs et de remplacer la valeur de prev_calculated par sa propre valeur calculée en tenant compte de l'horizon temporel. Et il est gourmand en ressources, peut-être même déraisonnablement gourmand en ressources.

Il est beaucoup plus honnête de le mettre à 0, comme au début, lorsque rien n'était encore compté.

 
Slava:

prev_calculé contient la valeur qui a été retournée lors du précédent appel à OnCalculate.

L'auteur de l'indicateur peut renvoyer n'importe quelle valeur en fonction de sa propre logique. Il est donc inutile de passer en revue tous les indicateurs et de remplacer la valeur de prev_calculated par sa propre valeur calculée en tenant compte de l'horizon temporel. Et il est gourmand en ressources, peut-être même déraisonnablement gourmand en ressources.

Il est beaucoup plus honnête de le mettre à 0, comme au début, lorsque rien n'était encore compté.

Que faire alors lorsque les indicateurs d'un symbole personnalisé sont complètement recalculés à cause de cette valeur nulle après chaque retournement de tick ?

Les indicateurs sont spécialement écrits pour ne pas ralentir le Terminal, et ici c'est le contraire qui se produit.

 
fxsaber:

Mais qu'en est-il lorsque, sur un symbole personnalisé, après chaque retournement de tic, les indicateurs sont complètement recalculés à cause de cette valeur zéro ?

Cela ne devrait pas être le cas. Vérifiez

 
Slava:

Ça ne devrait pas être comme ça. Vérifiez

Permettez-moi de préciser qu'il ne s'agit pas seulement de CustomTicksAdd, mais aussi de RatesUpdate, qui est un tic-tac du passé. En fait, même le TicksAdd fonctionnel n'a pas formé les barres antérieures au jour courant. Nous devons les former nous-mêmes. Et nous obtenons zéro prev_calculé à cause de cela.

 
fxsaber:

Pour clarifier, il ne s'agit pas seulement de CustomTicksAdd, mais aussi de RatesUpdate, qui est un tick-through du passé. En fait, même le TicksAdd fonctionnel n'a pas formé les barres antérieures au jour courant. Nous devons les former nous-mêmes. Et nous obtenons zéro prev_calculé à cause de cela.

De toute façon, lors du remplacement, du rafraîchissement ou de la suppression des barres, tous les indicateurs seront recalculés à partir de zéro. C'est hors de question.

L'ajout de ticks devrait fonctionner comme d'habitude, c'est-à-dire que les ticks sont des ticks frais, actuels, mais pas les ticks d'hier/de la veille.

J'ai exécuté votre conseiller expert à partir de la description du bug 11, puis j'ai exécuté l'indicateur avec une impression sur chaque OnCalculate.

Voici les journaux.

2019.06.07 08:11:34.240 CustomHistoryTick (EURUSD,H1)   CustomSymbolCreate(Name,NULL,_Symbol) = true
2019.06.07 08:11:34.243 CustomHistoryTick (EURUSD,H1)   CustomRatesDelete(Name,0,0) = 0
2019.06.07 08:11:34.243 CustomHistoryTick (EURUSD,H1)   SymbolSelect(Name,false) = true
2019.06.07 08:11:34.243 CustomHistoryTick (EURUSD,H1)   CustomSymbolDelete(Name) = true
2019.06.07 08:11:34.243 CustomHistoryTick (EURUSD,H1)   CustomSymbolCreate(Name,NULL,_Symbol) = true
2019.06.07 08:11:34.321 CustomHistoryTick (EURUSD,H1)   CopyTicksRange(_Symbol,Ticks,COPY_TICKS_INFO,(TimeCurrent()-3600)*1000) = 1114
2019.06.07 08:11:46.158 Custom Moving Average (EURUSD11608,M1)  13  prev_calculated=0  begin=0  data=1.126668940063615
2019.06.07 08:11:46.173 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=13  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.209 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.228 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989297959183673
2019.06.07 08:11:46.246 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989312244897959
2019.06.07 08:11:46.271 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989312244897959
2019.06.07 08:11:46.305 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.399 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.427 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989255102040816
2019.06.07 08:11:46.460 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.494 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989255102040816
2019.06.07 08:11:46.521 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.561 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.586 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.614 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989297959183673
2019.06.07 08:11:46.645 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.676 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989297959183673
2019.06.07 08:11:46.708 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.775 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.803 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.835 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989283673469387
2019.06.07 08:11:46.869 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989269387755102
2019.06.07 08:11:46.898 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989255102040816
2019.06.07 08:11:46.930 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989255102040816
2019.06.07 08:11:46.972 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.298924081632653
2019.06.07 08:11:46.993 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989226530612245
2019.06.07 08:11:47.024 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.298924081632653
2019.06.07 08:11:47.050 Custom Moving Average (EURUSD11608,M1)  14  prev_calculated=14  begin=0  data=0.2989255102040816
2019.06.07 08:11:47.085 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=14  begin=0  data=0.4171804373177843
2019.06.07 08:11:47.116 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171790087463557
2019.06.07 08:11:47.175 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.198 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171790087463557
2019.06.07 08:11:47.215 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171790087463557
2019.06.07 08:11:47.242 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.270 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171761516034985
2019.06.07 08:11:47.302 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.335 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171790087463557
2019.06.07 08:11:47.370 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171761516034985
2019.06.07 08:11:47.398 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171804373177843
2019.06.07 08:11:47.434 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171790087463557
2019.06.07 08:11:47.466 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.494 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.528 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.586 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.617 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.646 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.41717472303207
2019.06.07 08:11:47.679 Custom Moving Average (EURUSD11608,M1)  15  prev_calculated=15  begin=0  data=0.4171775801749271
2019.06.07 08:11:47.716 Custom Moving Average (EURUSD11608,M1)  16  prev_calculated=15  begin=0  data=0.5185379258642233
2019.06.07 08:11:47.740 Custom Moving Average (EURUSD11608,M1)  16  prev_calculated=16  begin=0  data=0.5185364972927947

Cela signifie que tout fonctionne correctement dans une situation normale (les tics sont aujourd'hui, comme ils devraient toujours l'être). Les tics sont ajoutés, et l'indicateur est considéré avec parcimonie

 
Slava:

Dans tous les cas, lors du remplacement, de la mise à jour, de la suppression des barres, tous les indicateurs seront recalculés à partir de zéro. C'est hors de question.

L'ajout de ticks devrait fonctionner comme d'habitude, c'est-à-dire que les ticks sont frais, ceux d'aujourd'hui, et non ceux d'hier - d'avant-hier.

Exécuter votre Expert Advisor à partir de la description du bug 11, puis exécuter l'indicateur avec l'impression sur chaque OnCalculate

Voici les journaux.

Cela signifie que tout fonctionne correctement dans une situation normale (les tics sont d'actualité, comme ils devraient toujours l'être). Les tics s'ajoutent, et l'indicateur est considéré avec parcimonie

Cette affirmation est-elle correcte ?

Cliquez sur l'image pour voir l'animation.


De plus, s'il s'agit de 00:00:01, nous ne pouvons pas utiliser CustomTicksAdd pour remodeler une barre qui ne date que de deux secondes.

 
fxsaber:

Cette affirmation est-elle correcte ?

Pour le testeur, le tick d'avant-hier est frais, le tick d'aujourd'hui celui d'avant-hier.

Je comprends votre point de vue. Votre exercice avec les tics personnalisés d'il y a six mois est d'une nature nettement expérimentale. Votre situation n'est pas normale (dans le sens d'une pratique normale)

Raison: