Erreurs, bugs, questions - page 1787

 

J'ai une question : pouvez-vous utiliser les outils mql5 pour identifier tous les programmes en cours d'exécution sur les graphiques et leurs noms ? En particulier, comment puis-je obtenir les noms de tous les indicateurs sur le graphique actuel ?

 
Alexey Kozitsyn:

J'ai une question : pouvez-vous utiliser les outils mql5 pour identifier tous les programmes en cours d'exécution sur les graphiques et leurs noms ? En particulier, comment puis-je obtenir les noms de tous les indicateurs sur le graphique actuel ?

https://www.mql5.com/ru/docs/chart_operations/chartindicatorstotal

https://www.mql5.com/ru/docs/chart_operations/chartindicatorname

https://www.mql5.com/ru/docs/chart_operations/chartgetstring

https://www.mql5.com/ru/docs/constants/chartconstants/enum_chart_property#enum_chart_property_string
Документация по MQL5: Операции с графиками / ChartIndicatorName
Документация по MQL5: Операции с графиками / ChartIndicatorName
  • www.mql5.com
Операции с графиками / ChartIndicatorName - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

S'il vous plaît conseiller, si dans le MT4 Expert Advisor vous appelez en série un indicateur personnalisé qui a plus d'un tampon graphique, le recalcul est effectué à chaque appel ou tous les tampons sont calculés à la fois et vous pouvez appliquer à l'indicateur dans le code de nombreuses fois et ne pas s'attendre à ce qu'il y aura un gaspillage de ressources. Une autre question intéressante est de savoir ce qui se passera si le code n'arrête pas de s'exécuter (s'exécute plus d'un tick) mais que la valeur de l'indicateur change.

 
A100:

Puis j'écris directement à ServiceDesk#1666680

Veuillez envisager de modifier le fonctionnement de la fonction

bool SymbolInfoTick( string symbol, MqlTick& tick );

afin que dans les indicateurs (y compris le corps OnCalculate), il renvoie les prix actuels conformément à sa description.

tout en complétant la langue par la fonction

bool SymbolInfoTick_OnCalculate( string& symbol, MqlTick& tick ); //(*)

qui renverrait le symbole et le tick qui ont provoqué l'appel à la fonction OnCalculate

ou comme alternative (*) : ajouter ces paramètres à l'appel à OnCalculate

OnCalculate( ..., const string& symbol, const MqlTick& tick );
Je m'associe à cette insolence manifeste ! ))
 
Alexey Kozitsyn:
C'est très peu. Mesurez pendant plusieurs heures. Sur plusieurs instruments.
Oups
Test_SymbolInfoTcick (Si-3.17,M1)       OnCalculate: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
Test_SymbolInfoTcick (Si-3.17,M1)       OnCalculate: Текущее время мс = 1486493406313 (2017.02.07 18:50:06), предыдущее = 1486493406315
Test_SymbolInfoTcick (Si-3.17,M1)       OnTick: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
Test_SymbolInfoTcick (Si-3.17,M1)       OnTick: Текущее время мс = 1486493406313 (2017.02.07 18:50:06), предыдущее = 1486493406315
Test_SymbolInfoTcick (Si-3.17,M1)       OnCalculate: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
Test_SymbolInfoTcick (Si-3.17,M1)       OnCalculate: Текущее время мс = 1486495281212 (2017.02.07 19:21:21), предыдущее = 1486495281213
Test_SymbolInfoTcick (Si-3.17,M1)       OnTick: ОШИБКА ПОСЛЕДОВАТЕЛЬНОСТИ! SymbolInfoTick() вернуло не последнее значение!
Test_SymbolInfoTcick (Si-3.17,M1)       OnTick: Текущее время мс = 1486495281212 (2017.02.07 19:21:21), предыдущее = 1486495281213
Problèmes dans OnTick également. D'après le journal sur plusieurs heures , OnCalculate a des problèmes trois fois plus souvent que OnTick. Le problème de OnTick se répète toujours sur OnCalculate, mais pas l'inverse.
 
fxsaber:
Oups
Problèmes dans OnTick aussi. Selon le journal de plusieurs heures, OnCalculate a des problèmes trois fois plus souvent que OnTick. En même temps, le problème de OnTick se répète toujours sur OnCalculate aussi, mais pas vice versa.
Il s'avère queSymbolInfoTick() est asynchrone...
 
-Aleks-:

S'il vous plaît conseiller, si dans le MT4 Expert Advisor vous appelez en série un indicateur personnalisé qui a plus d'un tampon graphique, le recalcul est effectué à chaque appel ou tous les tampons sont calculés à la fois et vous pouvez appliquer à l'indicateur dans le code de nombreuses fois et ne pas s'attendre à ce qu'il y aura un gaspillage de ressources. Une autre question intéressante est de savoir ce qui se passera si le code n'arrête pas de s'exécuter (s'exécute plus d'un tick) mais que la valeur de l'indicateur change.

Tous les tampons sont calculés en même temps. Interrogez tranquillement les valeurs des indicateurs - il n'y aura pas de nouveau calcul.

Dans MT4, l'indicateur, appelé depuis l'Expert Advisor, travaille dans le flux de ce même Expert Advisor et sur une copie de ses données historiques. Vous pouvez boucler l'Expert Advisor, mais en même temps vous recevrez les données de l'indicateur calculées au moment de l'appel OnTick. Jusqu'à ce que vous appeliez RefreshRates. RefreshRates met à jour les données historiques de l'Expert Advisor, après quoi toutes ses données seront recalculées au premier appel de l'indicateur.
 
Slawa:
Tous les tampons sont calculés en même temps. Appelez tranquillement les valeurs de l'indicateur - il n'y aura pas de nouveau calcul.

Dans MT4, l'indicateur appelé par le conseiller expert fonctionne dans le flux de ce même conseiller expert et sur une copie de ses données historiques. Vous pouvez boucler l'Expert Advisor, mais en même temps vous recevrez les données de l'indicateur calculées au moment de l'appel OnTick. Jusqu'à ce que vous appeliez RefreshRates. RefreshRates met à jour les données de l'historique du conseiller expert, après quoi toutes ses données seront recalculées au premier appel de l'indicateur.

Merci pour votre réponse !

Plus tôt, je me suis également intéressé au clignotement de l'indicateur ZigZag dans MT5 (pas d'effet de ce type dans MT4) - très ennuyeux - de quoi s'agit-il ?

 
Chers programmeurs, comment puis-je faire en sorte que la dernière ligne d'information du terminal soit "Balance", "Fonds", "Marge", ..... ne s'enfuit pas et ne se cache pas au fond lorsque de nouveaux éléments apparaissent ?
Raison: