Questions des débutants MQL5 MT5 MetaTrader 5 - page 986
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
Dans OnInit() appelez la série temporelle du symbole : iTime(Symbol,Timeframe,1) ;
Au tout début de OnTick(), demandez la barre nécessaire de la série temporelle nécessaire via le iFunc() correspondant, ou si( iTime(Symbol,Timeframe,10)==0) return ;
Dans ce cas, le conseiller expert ne détectera pas de nouvelle barre et attendra le prochain tick.
Dans OnInit(), nous avons demandé les données de la série chronologique, activant ainsi la pagination des données.
Dans OnTick() nous vérifions si l'historique minimum requis est disponible pour l'EA et s'il n'est pas encore disponible, nous attendons le prochain tick.
Et jusqu'à ce que toutes les données requises par le conseiller expert soient reçues, il attendra le prochain tick.
Dès que toutes les données nécessaires sont pompées et obtenues, le conseiller expert commence à travailler avec la nouvelle barre et l'historique requis.
Pour que les données de série restent à jour, veillez à y accéder au moins une fois toutes les deux minutes. Créez une deuxième minuterie d'environ une minute et demie (90 secondes) et dans celle-ci, accédez simplement à n'importe quelle série temporelle du symbole souhaité, par exemple iTime(Symbol,Timeframe,1) ; sans vérifier les données reçues - il suffit de "déplacer" l'historique. Ainsi, toutes les données du symbole seront toujours à jour.
Bien sûr, je vais essayer de vérifier la nouvelle barre en utilisant toutes les TF mais ce n'est pas synchrone, ce n'est pas MT4. Le problème ne vient pas de la barre mais de la non-performance des indicateurs qui sont appelés depuis l'indicateur, qui à son tour est appelé depuis l'Expert Advisor.
Je travaille sur des procès-verbaux, donc l'historique doit toujours être à jour.
Et, toutes ces vérifications sont faites pour le test et elles ne feront que ralentir le travail sur un compte réel, car tout y fonctionne plus lentement que dans les conditions stationnaires du testeur, je répète que sur un compte réel l'indicateur fonctionne correctement.
Jusqu'à présent, j'ai résolu le problème en vérifiant l'état des indicateurs qui ont échoué avant de lancer le code principal.
Mais cette approche n'est pas universelle, car il faut répertorier tous les indicateurs. Existe-t-il une autre méthode, plus universelle, pour faire fonctionner correctement l'environnement du testeur ?
Dans OnTick() nous vérifions si l'historique minimum requis est disponible pour le conseiller expert, et s'il n'est pas encore disponible - nous attendons le prochain tick.
Et jusqu'à ce que toutes les données requises par l'EA soient obtenues, il attendra le prochain tick.
Dès que toutes les données nécessaires sont pompées et obtenues, le conseiller expert commence à travailler avec la nouvelle barre et l'historique requis.
Comment proposez-vous de vérifier la disponibilité de l'historique, je ne comprends pas...
Ajoutez cette ligne avant la fonction MQL4
et il fonctionnera dans MT5.
C'est génial. Merci beaucoup !
Pouvez-vous dire que MT5 peut mettre en œuvre de tels boutons, peut-être en avez-vous déjà un, partagez le code ...
Prévoir les glissements et les requêtes.
Bonjour, si les prix Ask et Bid de la classe CSymbolInfo sont plus ou moins clairs, comment obtenir par exemple SessionInterest ou SessionBuyOrdersVolume ou SessionPriceLimitMin, Cela donne des zéros, je ne comprends pas pourquoi....
Bonjour, si les prix Ask et Bid de la classe CSymbolInfo sont plus ou moins clairs, comment obtenir par exemple SessionInterest ou SessionBuyOrdersVolume ou SessionPriceLimitMin, cela donne des zéros, je ne comprends pas pourquoi ...
Si le serveur de négociation diffuse cette information, vous la recevrez.
En règle générale, ces informations sont diffusées par les courtiers pour les symboles boursiers (ne pas confondre courtiers et centres de négociation).
Si un serveur de négociation diffuse cette information, vous la recevrez.
Ces informations sont généralement diffusées par les courtiers pour les symboles boursiers (ne pas confondre courtiers et centres de négociation).
Le courtier Otkritie, le RTS Index Futures, je suppose qu'il doit diffuser au moins SessionPriceLimitMin et SessionPriceLimitMax (parce que ce sont, d'après ce que j'ai compris, les prix d'ouverture utilisés dans les ordres au marché). L'ouverture ne traduit-elle pas... Je prescris par exemple :
Print(m_symbol.Ask()," ",m_symbol.SessionBuyOrdersVolume()) ; - à partir de votre EA
Je n'obtiens que des prix Ask dans le journal
Veuillez m'aider à écrire un morceau de code qui déterminerait correctement la date de la dernière barre avec n'importe quel décalage dans n'importe quelle TF, avec une précision par rapport à la TF actuelle.
Ce code fonctionne généralement, mais seulement si l'heure de début de la barre actuelle coïncide avec la barre réelle (arrondie à la minute), car mon graphique actuel est M1. Et s'il ne coïncide pas, diverses mésaventures se produisent, en fonction des différentes TF. Par exemple, j'ai besoin de connaître la date de début de la dernière barre M1 de la dernière heure, si c'était 12 heures, pas de problème, l'heure sera 12:59, mais si c'était 13 heures, ce sera 13:58 parce que la barre horaire s'est ouverte à 14:05 et non à 14:00 et la fonctioniBarShift a renvoyé la barre la plus proche de 14:00, c'est-à-dire 13:59.
Ajouté : fait ceci, il semble fonctionner
Courtier Otkritie, RTS index futures, je suppose qu'il devrait diffuser au moins SessionPriceLimitMin et SessionPriceLimitMax (comme je comprends qu'ils sont utilisés dans les ordres au marché par les prix d'ouverture ). L'ouverture ne traduit-elle pas... Je prescris par exemple :
Print(m_symbol.Ask()," ",m_symbol.SessionBuyOrdersVolume()) ; - à partir de votre EA
Je n'obtiens que des prix Ask dans le journal