Erreurs, bugs, questions - page 147

 
Vladix:

Y a-t-il une possibilité dans mql5 de suivre le statut d'une position ouverte, par exemple, qu'elle est en train d'être fermée maintenant ?

...

Mais au tick suivant, toutes les étapes ci-dessus sont répétées, la sélection de la position est faite, le volume est pris et UNE position supplémentaire est placée dans la direction de la fermeture.

Que peut-on faire pour éviter cela ?

Il n'y a rien à faire. Jusqu'à ce que le tick actuel soit traité par la fonction OnTick(), tous les ticks entrants sont ignorés.

Ce qui arrive à la position en temps réel, peut être suivi à l'aide de la fonction OnTrade ().

Обработка торговых событий в эксперте при помощи функции OnTrade()
Обработка торговых событий в эксперте при помощи функции OnTrade()
  • 2010.06.01
  • KlimMalgin
  • www.mql5.com
В 5-ой версии языка MQL появилась масса нововведений, в том числе работа с событиями различных типов (события таймера, торговые события, пользовательские и т.д.). Возможность обработки событий позволяет создавать совершенно новый тип программ для автоматического и полуавтоматического трейдинга. В этой статье мы рассмотрим торговые события и напишем для функции OnTrade() код, который будет обрабатывать событие Trade.
 
Valmars:

Il n'y a pas besoin de faire quoi que ce soit. Tant que le tick actuel n'est pas traité par la fonction OnTick(), tous les ticks nouvellement arrivés sont ignorés.

Ce qui arrive à la position en temps réel peut être suivi à l'aide de la fonction OnTrade ().

S'il n'y avait pas l'exécution asynchrone de la demande, tout irait bien. Mais quand un tick arrive, la position est fermée, alors qu'elle est toujours dans la liste quand le tick suivant arrive, donc comment comprendre si la position est ouverte, ouverte ou fermée ? Comment traiter les événements commerciaux ? Je pense qu'une opération de base ne devrait pas être si compliquée.

Idéalement, lorsqu'on essaie de fermer une position, celle-ci obtient le statut "Fermé" ou "En cours de traitement" ou quelque chose d'autre, grâce auquel on peut déterminer qu'elle est en train d'effectuer une action quelconque, puis on peut la laisser tranquille en toute bonne conscience.

Et maintenant, il faut parcourir une grande partie de l'histoire et comprendre comment tout s'est passé, et il n'y a aucune garantie que tout sera correct.

 
Vladix:

S'il n'y avait pas la nature asynchrone de la demande, tout irait bien. Mais quand un tick arrive, la position est fermée, et quand le tick suivant arrive, ils sont toujours dans la liste, donc comment pouvons-nous comprendre s'ils sont ouverts ou fermés ? Comment traiter les événements commerciaux ? Je pense qu'une opération de base ne devrait pas être si compliquée.

Idéalement, lorsqu'on tente de fermer une position, elle obtient le statut "Fermé" ou "En cours de traitement" ou autre, ce qui permet de déterminer qu'elle est actuellement en cours d'action, et on peut alors la laisser tranquille en toute bonne conscience.

Et maintenant, il faut parcourir une grande partie de l'histoire et comprendre comment tout s'est passé, et il n'y a aucune garantie que tout sera correct.

N'ouvrez pas et ne fermez pas de positions à chaque tick, faites un délai après chaque opération commerciale.
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
EQU:

Pourquoi... Qui peut dire que le NewBar n'est pas un événement ? )))))))))

OnNews - les nouvelles arrivent, le robot doit les lire... Officiellement... Pas en fouillant dans WinAPI d'une manière gauchiste.

1.NewBar - Un événement que vous pouvez implémenter vous-même. C'est probablement ce qu'ils conseillent. J'ai posé une fois la question de Connect et la réponse a été simple : vous devez le mettre en œuvre vous-même.

Ce n'est pas un problème - je l'ai mis en œuvre et maintenant j'essaie de suivre presque tout ce dont j'ai besoin à l'aide du minuteur (j'ai déjà environ 30 événements). Lorsque j'ai terminé, l'utilisateur ne peut modifier aucun des paramètres qui m'intéressent, de sorte que l'expert n'en a pas eu connaissance.

2. OnNews - L'idée en général est compréhensible, vous pourriez y adhérer. Cependant, les développeurs sont susceptibles de mettre en avant la présence de News.wav.

Bien que, j'ai longtemps cherché auprès des développeurs d'étendre la fonctionnalité de la langue par la possibilité de travailler avec le calendrier des nouvelles économiques et d'autres FA. Pensez-vous qu'ils feront tout bien ? Je ne pense pas.

J'ai déjà envoyé ma candidature à cette occasion, l'espoir est toujours vivant. Ce serait bien qu'un expert fasse un peu de travail par lui-même...

Документация по MQL5: Основы языка / Функции
Документация по MQL5: Основы языка / Функции
  • www.mql5.com
Основы языка / Функции - Документация по MQL5
 
Vladix:

Sans la demande asynchrone, tout irait bien. Mais lorsqu'un tick arrive, la position est fermée et au tick suivant, elles sont toujours dans la liste, et comment comprendre si elles sont ouvertes, ouvertes ou fermées ? Comment traiter les événements commerciaux ? Je pense qu'une opération de base ne devrait pas être si compliquée.

Idéalement, lorsque vous essayez de fermer une position, elle obtient le statut "Fermé" ou "En cours de traitement" ou autre, ce qui vous permet de déterminer qu'elle est actuellement en cours d'action, puis vous pouvez la laisser tranquille en toute bonne conscience.

Et maintenant, il faut parcourir une grande partie de l'histoire et comprendre comment tout s'est passé, et il n'y a aucune garantie que tout sera correct.

Même aujourd'hui, il est possible de le faire facilement, si l'on sait comment s'y prendre. Les développeurs ont promis de réécrire OnTrade(), d'y ajouter les paramètres nécessaires. Si cela est fait, ce sera encore plus facile à gérer.

Personne n'empêche de gérer de telles situations sur place, dans OnTick() ou OnTime() - au lieu de l'opération commerciale; ou dans OnTrade(), si vous voulez attraper les actions de l'utilisateur ou les opérations commerciales non contrôlées directement par le code.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
Interesting:

1.NewBar - Un événement que vous pouvez implémenter vous-même. C'est probablement ce qu'ils conseillent. J'ai posé une fois la question de Connect et la réponse a été simple : vous devez le mettre en œuvre vous-même.

...

Je suis un peu confus sur la façon dont je vois OnNewBar...))

OnNewBar(ulong Param), où Param - bitwise rempli de 1 dans les positions de timeframe avec une nouvelle barre... - Tous les graphiques ne sont pas mis à jour simultanément par le nombre de barres...

Par exemple ...

...00001 - seulement mis à jour une minute

...00111 - seulement une minute, 2 et 3 sont mis à jour... et ainsi de suite...

C'est juste une idée, mais je pense que ce serait utile. Bien que...? ;)

 
EQU:

Je suis un peu confus sur la façon dont je vois OnNewBar...)

OnNewBar(ulong Param), où Param - remplit les positions 1 in timeframe avec une nouvelle barre... - Tous les graphiques ne sont pas mis à jour simultanément par le nombre de barres...

Par exemple ...

...00001 - seule la minute a été mise à jour.

...00111 - seulement une minute, 2 et 3 sont mis à jour... etc...

C'est juste une idée, mais je pense que ce serait utile. Bien que...? ;)

Aux dépens du paramètre il faut penser. Cela vaut-il la peine de le faire (il est peut-être plus facile d'y mettre TF comme ENUM_TIMEFRAMES) ?

Du moins, je voulais faire quelque chose comme ça, mais j'ai laissé tomber...

PS

J'ai oublié de dire que je voulais créer OnNewBar dans la classe Chart, sur laquelle je travaille en ce moment (en ce moment, je suis toujours en train d'y mettre des trucs standards + mes propres bricoles agréables).

Ne me demandez pas pourquoi je n'aime pas le CChart standard... :)

 

Si vous avez besoin de suivre une nouvelle barre, jetez un coup d'œil à mon code. Il pourrait vous être utile. J'ai essayé différentes variantes - cette méthode est la plus fiable.

https://www.mql5.com/ru/code/107

isNewBar
isNewBar
  • votes : 7
  • 2010.05.07
  • Prival
  • www.mql5.com
Функция анализа появления нового бара на заданном таймфрейме.
 
Prival:

Si vous avez besoin de suivre une nouvelle barre, jetez un coup d'œil à mon code. Il pourrait vous être utile. J'ai essayé différentes variantes - cette méthode est la plus fiable.

https://www.mql5.com/ru/code/107

Quel est le problème avec l'heure d'ouverture de la dernière barre par rapport à la période symbole SERIES_LASTBAR_DATE ? Beaucoup plus facile que votre version et vous n'avez pas besoin d'un indicateur.


En outre, pour un EA multi-devises, une nouvelle barre doit être définie pour chaque symbole, ce qui signifie que l'indicateur doit être initialisé pour tous les symboles.

 
Prival:

Si vous avez besoin de suivre une nouvelle barre, jetez un coup d'œil à mon code. Il pourrait vous être utile. J'ai essayé différentes variantes - cette méthode est la plus fiable.

https://www.mql5.com/ru/code/107

Encore une fois - code... code... Le code c'est bien... mais aussi les tactiques, les boucles... ;)

Le graphique ne reçoit-il pas un message concernant la création d'une nouvelle barre ? Je n'y crois pas...)))

Cela pose-t-il un problème d'en faire un événement ? Une variable est-elle au moins prédéfinie ?

En général, il est plus facile de traiter des événements que de remplir une montagne de code. Et en plus - avec des erreurs (LES PROGRAMMES SANS ERREUR NE SONT JAMAIS !!!) )))))

Raison: