Servicedesk. Plaintes, suggestions. - page 6

 
Ilya Malev:
De toute façon, cela ne fonctionnera pas dans une seule boucle, puisque tous les indicateurs ont le même fil, que ce soit avec ou sans timer. Ou je ne comprends pas votre idée.
Disons qu'il existe un indicateur1. Il appelle l'indicateur2. L'indicateur2 manque de données sur certains symboles/TF. Il envoie ces données à l'indicateur1 et il a téléchargé les données requises dans le timer. Après avoir reçu la confirmation que toutes les données requises sont téléchargées, nous essayons à nouveau de télécharger les données de l'indicateur2 et dès que toutes les données requises sont disponibles, nous calculons l'indicateur1.
 
Alexey Kozitsyn:

Pour télécharger et vérifier l'historique, comme sur MT5 : https://www.mql5.com/ru/docs/series/timeseries_access

Je répète la question, savez-vous comment obtenir cette date au moyen de l'ancienne mql4 ?

Je le fais. Temps [Barres-1].
 
Alexey Kozitsyn:

... Transférabilité des programmes de MT4 à MT5 et inversement.

De 4 à 5 - compréhensible. Dans l'autre sens, pas vraiment.

 
Alexey Kozitsyn:
Disons qu'il existe un indicateur1. Il appelle l'indicateur2. L'indicateur2 manque de données sur certains symboles/TF. Il envoie ces données à l'indicateur1 et il a téléchargé les données requises dans le timer. Après avoir reçu la confirmation que toutes les données requises sont téléchargées, nous essayons à nouveau de télécharger les données de l'indicateur2 et dès que toutes les données requises sont disponibles, nous calculons l'indicateur1.

La mémoire est allouée 5 fois. Sous l'espace d'adressage des commandes pour la même chose.

Qu'est-ce que vous pleurez à propos de la libération agressive de la mémoire de l'espace d'adressage des données ? Au moins les extents y sont présents.

 
Vasyl Nosal:
J'attends l'arbitrage depuis très longtemps. Troisième semaine (ils m'ont demandé d'attendre la deuxième semaine, d'accord).
O modérateurs tout-puissants, s'il vous plaît détournez vos yeux du problème :)
 
Алексей Тарабанов:
Je sais. Temps [Barres-1].

Vous avez tort. J'ai déjà écrit ci-dessous que la construction que vous avez donnée donnera la première date non pas sur le serveur, mais sur le tableau.

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

Service Desk. Plaintes, suggestions.

Alexey Kozitsyn, 2015.10.30 16:42

En utilisant iTime( _Symbol, period, Bars( _Symbol, period )-1 ) nous pouvons obtenir l'heure de la première bougie disponible sur le graphique.

Mais pour obtenir l'heure de la première bougie sur le serveur, je n'ai pas décidé quelle construction utiliser.

Tout se fait simplement en utilisant SeriesInfoInteger : SeriesInfoInteger( _Symbol, period,SERIES_SERVER_FIRSTDATE);


 
Алексей Тарабанов:

La mémoire est allouée 5 fois. Sous l'espace d'adressage des commandes pour la même chose.

Qu'est-ce que vous pleurez à propos de la libération agressive de la mémoire de l'espace d'adressage des données ? Au moins, il y a des extensions.

Avez-vous quelque chose de substantiel à dire ?
 

D'une manière générale, il existe très probablement une solution normale au problème iCustom que j'ai mentionné.

Si MT5 a déjà chargé le handle de l'indicateur avec les paramètres spécifiés pour ce symbole/tf, alors, si je comprends bien, lorsque vous l'appelez depuis un autre endroit, le calcul du même indicateur n'est pas refait, mais le handle existant est utilisé.

Et puisque le premier "niveau d'imbrication" avant l'appel de iCustom, l'appel de OnTimer fonctionne, nous pouvons attendre un calcul séquentiel de tous les indicateurs, en commençant par les plus basiques, puis ceux qui les utilisent, et ainsi de suite jusqu'à n'importe quel niveau d'imbrication, en créant leurs poignées seulement lorsque tous les indicateurs et séries temporelles déjà utilisés dans celles-ci ont été calculés. Dans ce cas, la nécessité du bouton "Rafraîchir" disparaît probablement. J'aurais aimé le deviner il y a une semaine...

P.S. Lorsque vous utilisez OnTimer, notez que les tampons des indicateurs ne seront pas affichés sur le graphique et la fenêtre de données jusqu'à ce que le OnCalculate, appelé par le terminal, renvoie une valeur différente de 0. Et le terminal n'appelle OnCalculate qu'une seule fois, juste après Inite, lorsque les séries chronologiques et les indicateurs n'ont pas encore été calculés. Lorsque OnCalculate est appelé depuis Ontimer, quelle que soit la valeur qu'il renvoie, si le tout premier retour est 0, alors l'indicateur ne sera pas affiché sur le graphique jusqu'à ce que le prochain tick arrive ou que vous appuyiez sur "Refresh".

 
Alexey Kozitsyn:

Le deuxième problème est d'un type similaire. L'indicateur est sur TF MN1. J'essaie de recevoir des données via la fonction SeriesInfoInteger() du TF M5. La fonction renvoie des valeurs correctes pendant un certain temps, puis cesse de le faire et commence à renvoyer des zéros.

Je viens de voir votre problème dans l'indicateur MT5, sans laisser un cycle OnTimer, je vérifie la série temporelle sur un autre symbole/période (pas le courant) - la fonction dit qu'elle est construite et donne le nombre correct de barres. Immédiatement après, j'appelle une autre fonction pour construire l'indicateur - à l'intérieur de cette fonction, appelée à partir du même appel de OnTimer, la timeseries parvient à être déchargée et le SeriesInfoInteger renvoie des zéros. J'ai dû intégrer une vérification cyclique supplémentaire, afin que tout se construise sans ticks entrants.
 
Vasyl Nosal:
O modérateurs tout-puissants, regardez le problème :)
Ce sera bientôt la semaine 4 de l'arbitrage...à suivre :)))))