Questions des débutants MQL5 MT5 MetaTrader 5 - page 623
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Non, je n'en ai pas besoin dans le testeur, mais lorsque le terminal fonctionne réellement sur un graphique - il ne fonctionnera que si l'historique contient moins que le nombre maximum de barres, ou est-ce que je me trompe ?
Et en temps réel, rates_total et Bars() seront incrémentés lorsque l'indicateur fonctionnera. Vous ne pourrez pas obtenir rates_total dans OnInit(), car le paramètre n'est pas transmis à la fonction. Vous devez vérifier l'historique dans tous les cas dans OnCalculate().
Et en temps réel, rates_total et Bars() seront incrémentés lorsque l'indicateur fonctionnera. Vous ne pourrez pas obtenir rates_total dans OnInit(), car le paramètre n'est pas transmis à la fonction. L'historique doit être vérifié dans tous les cas dans OnCalculate().
C'est-à-dire que nous devons créer un indicateur séparé, où nous vérifions le nombre de barres et si tout est OK, nous remplissons la mémoire tampon du graphique avec une barre, puis nous attendons dans l'EA jusqu'à ce que nous obtenions une barre de l'indicateur, et seulement ensuite nous continuons à travailler, n'est-ce pas ?
Bien sûr que non... Pourquoi le rendre si compliqué... On recommence. Quel est l'objectif ? Pour obtenir tout l'historique disponible pour le calcul ?
Le problème est que pour que l'EA fonctionne correctement, il doit calculer l'historique une fois. Ainsi, il arrive que lorsque vous allumez le terminal avec cet EA, il y a un historique et, en conséquence, l'initialisation et le calcul sont effectués, mais cet historique peut ne pas être complet et un nouveau sera chargé après la connexion au terminal.
Je pense que nous pouvons tracer la connexion avec le terminal et ensuite, si elle est disponible, vérifier les changements de la dernière barre dans HLCO et si elle est disponible, nous attendons, et si elle n'est pas disponible dans les x secondes, nous effectuons le calcul.
Le problème est que pour que l'EA fonctionne correctement, il doit calculer l'historique une fois. Ainsi, il arrive que lorsque vous allumez le terminal avec cet EA, il y a un historique et, en conséquence, l'initialisation et le calcul sont effectués, mais cet historique peut ne pas être complet, et un nouveau sera chargé après la connexion au terminal.
Je pense que nous pouvons tracer la connexion avec le terminal et ensuite, si elle est disponible, vérifier les changements de la dernière barre par HLCO et si elle est disponible, nous attendons, mais si elle n'est pas disponible dans les x secondes, nous effectuons le calcul.
Le conseiller expert utilise-t-il des indicateurs personnalisés ?
Par exemple, vous pouvez faire ce qui suit : vous vérifiez la taille de l'historique grâce à Bars(). Puis voyez si Bars() > prev_bars+1 (la taille de l'historique sur le tick précédent) - alors vous réinitialisez toutes les données sauvegardées et faites un recalcul complet du Conseiller Expert à partir de zéro. Cette construction doit être insérée en premier dans OnTick().
Il n'est pas nécessaire de s'occuper de la connexion au terminal, des pauses, etc. L'option la plus simple est souvent la meilleure.
Le conseiller expert utilise-t-il des indicateurs personnalisés ?
Par exemple, vous pouvez faire ceci : vérifier la taille de l'historique via Bars(). Puis voyez si Bars() > prev_bars+1 (la taille de l'historique sur le tick précédent) - alors vous réinitialisez toutes les données sauvegardées et faites un recalcul complet du Conseiller Expert à partir de zéro. Cette construction doit être insérée en premier dans OnTick().
Il n'est pas nécessaire de s'occuper de la connexion au terminal, des pauses, etc. La variante la plus simple est le plus souvent la meilleure.
Le conseiller expert utilise beaucoup de choses, y compris des indicateurs.
Je comprends que la variante suggérée recalculera sur chaque barre, ou est-ce que je me trompe ?
Le conseiller expert utilise beaucoup de choses, y compris des indicateurs.
Je comprends que cette variante sera recalculée à chaque barre, ou est-ce que je me trompe ?
Non, pourquoi sur tous les bars ? L'Expert Advisor sera recalculé complètement seulement si plus d'une barre est ajoutée à l'historique ! Si une barre est ajoutée (une nouvelle barre se forme), le recalcul complet ne sera pas effectué.
Si vous utilisez des indicateurs et qu'ils ont des variables globales, elles doivent être remises à zéro lorsque vous les exécutez pour la première fois. Sinon, des artefacts peuvent apparaître sur le graphique / les indicateurs peuvent être affichés de manière incorrecte.
Non, pourquoi sur chacun ? Un recalcul complet de l'EA ne se produira que si plus d'une barre a été ajoutée à l'histoire ! Si une barre est ajoutée (une nouvelle barre se forme), il n'y aura pas de recalcul complet.
Si vous utilisez des indicateurs et qu'ils ont des variables globales, elles doivent être remises à zéro lorsque vous les exécutez pour la première fois. Sinon, des artefacts peuvent apparaître sur le graphique / les indicateurs peuvent être affichés de manière incorrecte.
double A ;
int x, y ;
x=100 ; y=3 ; A=x/y=33 000