Séquence d'exécution de Init() et DeInit() - page 17

 
fxsaber:

Il s'avère que les services auront presque tous des fonctions On : OnInit, OnDeinit, OnTick(string),OnTimer,OnTrade,OnTradeTransaction, OnTester, OnTesterInit, OnTesterPass, OnTesterDeinit, OnBookEvent, OnChartEvent(long ChartID, ...), OnCalculate, ...


Et si vous n'avez pas besoin de tampons d'indicateurs et ne voulez pas affronter les béquilles des indicateurs/conseillers, écrivez dans un nouveau type de programme - Services - qui ne souffre pas des limitations (étendues des versions précédentes de MT).

Exactement.

Il n'y aura pas de OnCalculate.

Pas encore de solution avec OnChartEvent

 
Slawa:

C'est vrai.

Ces béquilles doivent être gênantes pour de nombreuses personnes.

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Je ne peux pas obtenir les données de l'indicateur à partir de la TF élevée.

Sergey Dzyublik, 2017.04.14 10:55

L'utilisateur disposait d'un indicateur qui mesurait la "force" du marché.
L'indicateur a fonctionné sur le cadre temporel et la paire de devises actuels.

La tâche consistait à montrer les résultats de 8 devises populaires sur un graphique avec la possibilité de sélectionner un TF indépendant à afficher.
Peu importe la TF dans laquelle se trouve l'utilisateur - elle doit afficher les résultats de celle qui a été définie dans les paramètres.

Le problème du chargement du trafic d'autres monnaies par le TF requis a été résolu avec la béquille suivante :

   for (int i = ArraySize(symbols_load) - 1; i >= 0; --i){
      int counter = 0;
      int max_count = 10;
      while(counter < max_count){
         RefreshRates();
         double tmp_arr[];
         int res = CopyClose(symbols_load[i] + Suffix, int(TF), 0, 3, tmp_arr);
         if (res == 3)
            break;
         RefreshRates();
         ++counter;
      }
   }

où :

symbols_load- liste des monnaies nécessaires au chargement
Suffixe- préfixe éventuel au nom des paires de devises
TF- délai requis

Est-il possible d'ajouter un abonnement/une souscription aux données historiques (barres et ticks) pour un volume donné ? Ainsi, il y aurait toujours un cache (de barres et de ticks frais) d'une certaine taille au service pour les symboles donnés.


Il serait alors beaucoup plus facile d'écrire, par exemple, des scénarios de marché.

 
Slawa:

Les indicateurs doivent être utilisés conformément à leur objectif.

En d'autres termes, la séquence d'exécution de l'indicateur OnInit et OnDeinit lors de la modification de la période des symboles dugraphique ne devrait déranger personne.

Cette approche explique beaucoup de choses.

Nous devons donc l'accepter tel qu'il est, l'essentiel étant d'en être conscient.

 
Slawa:

Non.

Relisez ce que sont les indicateurs. Akelis. Colby. Demandez à Yandex quels sont les indicateurs du marché.

Dans MT3, lorsque nous avons introduit le concept d'indicateurs personnalisés, nous avons permis d'opérer avec des objets sur les graphiques car il n'y avait que 2 tampons d'indicateurs.

Faisons un peu d'histoire. Au début, il y avait FXCharts, mais je ne l'ai pas remarqué car je n'ai rejoint l'entreprise qu'en octobre 2002. Puis il y a eu MetaTrader. J'ai rejoint la société pour développer MQL II (FXCharts avait déjà un langage de stratégies de trading). Quand nous avons fait MQL II et les EAs, nous avons changé le nom en MetaTrader 2. Lorsque nous avons autorisé l'écriture d'indicateurs personnalisés, MetaTrader 3 est devenu MetaTrader 3.

Puis vint MetaTrader 4 et MQL4. Les indicateurs personnalisés ont la possibilité de fonctionner avec 8 tampons d'indicateurs. La possibilité de travailler avec des objets sur la carte a été conservée. Mais comme les indicateurs étaient calculés dans le fil de l'interface, peu de personnes ont abusé du travail avec les objets.

Et maintenant, nous avons MT5. L'architecture est complètement différente, mais nous sommes les otages de MT4 en termes de possibilités d'opérer avec des objets graphiques sur le graphique. Oui, nous sommes des stakhanovites, nous avons aussi, en héros, ajouté des possibilités quasi illimitées de gestion des graphiques à partir d'indicateurs. Nous sommes arrivés. L'illustration - 16 pages de discussions sur rien.

Passons aux services

Le dossier Services est apparu dans l'éditeur MQL5, mais la façon d'utiliser cet outil n'est pas encore claire. https://www.mql5.com/ru/forum/190129


Services , новый функциона в архитеркуте MT5, похороны MT4 не за горой.
Services , новый функциона в архитеркуте MT5, похороны MT4 не за горой.
  • www.mql5.com
Хотелось бы подробней с примерами использования обсудить новый функционал...
 
Slawa:

Les indicateurs doivent être utilisés conformément à leur objectif.

En d'autres termes, la séquence OnInit et OnDeinit de l'indicateur lors du changement de la période-symbole dugraphique ne devrait déranger personne.

Et pourquoi tous les arguments se sont déplacés vers les objets graphiques ? Il existe d'autres ressources globales comme les variables globales, les fichiers, etc. (peuvent-ils être utilisés dans les indicateurs conformément à leur finalité ?) qui sera la source d'erreurs, si"l'ordre d'exécution OnInit et OnDeinit de l'indicateur au changement de la période-symbole dugraphique ne devrait gêner personne". Une fois de plus, notez que le noyau est maintenant implémenté de telle sorte que l'ordre devrait inquiéter le programmeur MQL, afin d'éviter le râteau causé par l'incertitude de la séquence des appels OnInit/Deinit. Pour ne pas inquiéter MQL, il faut un noyau qui se charge en interne de résoudre l'incertitude.
 
Stanislav Korotky:
Pourquoi toute l'argumentation tombe-t-elle sur les objets graphiques ? Il existe d'autres ressources globales comme les variables globales, les fichiers, etc. (peuvent-elles être utilisées dans les indicateurs ? (peuvent-ils être utilisés dans les indicateurs conformément à leur finalité ?) qui sera la source d'erreurs, si"l'ordre d'exécution OnInit et OnDeinit de l'indicateur au changement de la période-symbole dugraphique ne gênera personne". Une fois de plus, notez que le noyau est maintenant implémenté de telle sorte que l'ordre devrait inquiéter le programmeur MQL, afin d'éviter le râteau causé par l'incertitude de la séquence des appels OnInit/Deinit. Pour ne pas inquiéter MQL, il faut un noyau qui se charge en interne de résoudre l'incertitude.
Voici une bonne question sur les dossiers. Si un élément doit être réinitialisé lors de la désinitialisation et lu lors de l'initialisation suivante, cela peut poser des problèmes.
 
Stanislav Korotky:

Comment les services ou la possibilité d'exécuter plusieurs EA sur un seul graphique ne peuvent-ils pas couvrir complètement les problèmes dont nous discutons ?

Imaginez qu'au lieu des indicateurs mentionnés dans le fil de discussion, il y aurait un Service en cours d'exécution qui contiendrait une partie entièrement calculée de l'indicateur. Et il placera l'indicateur sur le graphique qui visualisera les données, calculées par le Service dans les tampons de l'indicateur.


Il convient d'utiliser les indicateurs en fonction de leur objectif et de ne pas en faire quelque chose d'universel, simplement parce qu'il y a plusieurs indicateurs à lancer dans un même graphique. Ainsi, vous pourrez commencer à vous plaindre de l'interdiction d'OrderSend dans les indicateurs.

 
fxsaber:

Comment les services ou la possibilité d'exécuter plusieurs EA sur un seul graphique ne peuvent-ils pas couvrir complètement les problèmes dont nous discutons ?

Imaginez qu'au lieu des indicateurs mentionnés dans le fil de discussion, il y aurait un Service en cours d'exécution qui contiendrait une partie entièrement calculée de l'indicateur. Et il placera l'indicateur sur le graphique, qui visualisera les données calculées par le Service dans les tampons de l'indicateur.

En d'autres termes, sera-t-il possible de créer un indicateur par le biais du service ?
 
Alexey Kozitsyn:
En d'autres termes, sera-t-il possible de créer un indicateur par le biais du service ?
Ceci est déjà possible à partir d'un EA (avec certaines limitations).
 
fxsaber:
C'est toujours possible à partir de l'EA (avec certaines limitations).
Tu veux dire en utilisant des béquilles ? Je peux vous donner un exemple ?