Quoi qu'il en soit, l'essentiel, à mon avis, est le suivant.
Globalement, il y a deux façons de procéder :
1) l'analyse de l'environnement (aspirer l'historique des transactions, vérifier la position ouverte ou le volume de la position) ;
2) l'analyse des transactions.
Le premier fonctionne plus lentement. Mais il est plus fiable. Nous avons besoin d'un compromis. Peut-être devons-nous examiner la stratégie et en dépendre.
Oui, FORTS a un ticker à part entière, donc il ne faut pas travailler avec les ticks mais avec l'événement BookEvent.
Il est étrange que Vasily Sokolov n'ait pas fait de commentaire sur ce sujet. Son point de vue est intéressant...
Dennis Kirichenko: Quoi qu'il en soit, l'essentiel, à mon avis, est le suivant.
Globalement, il y a deux façons de procéder :
1) l'analyse de l'environnement (aspirer l'historique des transactions, vérifier la position ouverte ou le volume de la position) ;
2) l'analyse des transactions.
Le premier fonctionne plus lentement. Mais il est plus fiable. Nous avons besoin d'un compromis. Peut-être devons-nous examiner la stratégie et en dépendre.
Oui, FORTS a un ticker à part entière, donc il ne faut pas travailler avec les ticks mais avec l'événement BookEvent.
Il est étrange que Vasily Sokolov n'ait pas fait de commentaire sur ce sujet. Son point de vue est intéressant...
Peut-être que bientôt je passerai au verre, mais pour l'instant .... à l'ancienne.
Dennis Kirichenko: Quoi qu'il en soit, l'essentiel, à mon avis, est le suivant.
Globalement, il y a deux façons de procéder :
1) l'analyse de l'environnement (aspirer l'historique des transactions, vérifier la position ouverte ou le volume de la position) ;
2) l'analyse des transactions.
Le premier fonctionne plus lentement. Mais il est plus fiable. Nous avons besoin d'un compromis. Peut-être devons-nous examiner la stratégie et en dépendre.
Oui, FORTS a un ticker à part entière, donc il ne faut pas travailler avec les ticks mais avec l'événement BookEvent.
Il est étrange que Vasily Sokolov n'ait pas fait de commentaire sur ce sujet. Son point de vue est intéressant...
À propos, j'ai une question : peut-on utiliser l'événementBookEvent de la même manière que l'on utilise Tick ou Timer ? c'est-à-dire que je peux y transférer complètement ma stratégie ?
J'ai travaillé une fois sur cet ordre et j'ai écrit la classe CiOnTrade :
class CiOnTrade : public CTrade
C'était une tâche intéressante. Mon client et moi, on s'est tapé sur les nerfs et on a brisé nos coeurs. Autant que je me souvienne, la tâche principale était d'acheter/vendre le volume garanti. Et si une partie du volume n'était pas remplie, nous devions supprimer ces ordres et vendre le reste à un prix différent...
Donc, la solution optimale que j'ai trouvée était de traiter les états. Et il y en avait tellement :
Gennady Mazur: A propos, une question s'est posée : l'événementBookEvent peut-il être utilisé de la même manière que le Tick ou le Timer ? c'est-à-dire que je peux y transférer complètement ma stratégie ?
Oui, mais notez que BookEvent génère des événements plus souvent. C'est pourquoi nous avons besoin d'un filtre pour éliminer les éléments inutiles. Par exemple, les prix n'ont pas changé, mais seulement les volumes de certaines offres...
Dennis Kirichenko: Oui ! Mais considérez que le verre est plus susceptible de générer des événements. Par conséquent, vous avez besoin d'un filtre pour éliminer les événements inutiles. Par exemple, les prix n'ont pas changé, mais seulement les volumes de certaines offres...
Je comprends, merci... et dans certains cas, la variation de volume est plus importante que la variation de prix, surtout près de niveaux forts.
Dennis Kirichenko: L'essentiel, à mon avis, est le suivant.
Globalement, il y a deux façons de procéder :
1) l'analyse de l'environnement (aspirer l'historique des transactions, vérifier la position ouverte ou le volume des positions) ;
2) l'analyse des transactions.
Lepremier fonctionne plus lentement. Mais il est plus fiable. Il doit y avoir un compromis. Nous devons peut-être envisager la stratégie et en dépendre.
La variante OrderSend+Sleep(0) ne fonctionne pas plus lentement que OrderSend+OnTradeTransaction. Je l'ai mesuré. C'est pourquoi je n'utilise pas la deuxième variante, pas pour les transactions asynchrones.
Dennis Kirichenko: Je suppose que l'information sur l'accord n'est pas encore arrivée. Ici (marqué en rouge), vous comptez sur la chance. Et c'est une dame capricieuse :-))
Même avecORDER_STATE_FILLED, Results.order peut avoir un problème - Results.deal est zéro. La reproduction à 100% de cette situation est réalisée sur le serveur FXOpen-MT5.
Je recommande d'ouvrir plusieurs démos sur différents serveurs et d'obtenir la pleine fonctionnalité du code. Je l'ai fait pour MT4 biblique. C'est pourquoi il n'y a pas de problème avec le sous-jeu.
fxsaber: OrderSend+Sleep(0) n'est pas plus lent que OrderSend+OnTradeTransaction. Je l'ai mesuré. Par conséquent, je n'utilise pas la deuxième variante pour les transactions asynchrones.
La variante OrderSend+Sleep(0) est temporaire, car c'est un défaut des développeurs (ne l'utilisez pas comme exemple :) ).
Ce n'est pas toi qui as besoin d'une pause.
Globalement, il y a deux façons de procéder :
1) l'analyse de l'environnement (aspirer l'historique des transactions, vérifier la position ouverte ou le volume de la position) ;
2) l'analyse des transactions.
Le premier fonctionne plus lentement. Mais il est plus fiable. Nous avons besoin d'un compromis. Peut-être devons-nous examiner la stratégie et en dépendre.
Oui, FORTS a un ticker à part entière, donc il ne faut pas travailler avec les ticks mais avec l'événement BookEvent.
Il est étrange que Vasily Sokolov n'ait pas fait de commentaire sur ce sujet. Son point de vue est intéressant...
Quoi qu'il en soit, l'essentiel, à mon avis, est le suivant.
Globalement, il y a deux façons de procéder :
1) l'analyse de l'environnement (aspirer l'historique des transactions, vérifier la position ouverte ou le volume de la position) ;
2) l'analyse des transactions.
Le premier fonctionne plus lentement. Mais il est plus fiable. Nous avons besoin d'un compromis. Peut-être devons-nous examiner la stratégie et en dépendre.
Oui, FORTS a un ticker à part entière, donc il ne faut pas travailler avec les ticks mais avec l'événement BookEvent.
Il est étrange que Vasily Sokolov n'ait pas fait de commentaire sur ce sujet. Son point de vue est intéressant...
Quoi qu'il en soit, l'essentiel, à mon avis, est le suivant.
Globalement, il y a deux façons de procéder :
1) l'analyse de l'environnement (aspirer l'historique des transactions, vérifier la position ouverte ou le volume de la position) ;
2) l'analyse des transactions.
Le premier fonctionne plus lentement. Mais il est plus fiable. Nous avons besoin d'un compromis. Peut-être devons-nous examiner la stratégie et en dépendre.
Oui, FORTS a un ticker à part entière, donc il ne faut pas travailler avec les ticks mais avec l'événement BookEvent.
Il est étrange que Vasily Sokolov n'ait pas fait de commentaire sur ce sujet. Son point de vue est intéressant...
c'est-à-dire que je peux y transférer complètement ma stratégie ?
J'ai travaillé une fois sur cet ordre et j'ai écrit la classe CiOnTrade :
Donc, la solution optimale que j'ai trouvée était de traiter les états. Et il y en avait tellement :
{
TRADE_STATE_NONE=0, // "ничего"
TRADE_STATE_ORDERS=1, // "только ордера"
TRADE_STATE_POSITION=2, // "только позиция"
TRADE_STATE_ALL=3, // "все"
};
2) "Commandes uniquement" - il s'agit de l'état lorsque les commandes sont passées.
3) "Position uniquement" est l'état dans lequel les ordres sont entièrement exécutés.
4) "Tous" est l'état où les ordres n'ont pas été complètement exécutés et où il y a déjà une position sur le marché.
Il fallait donc traiter chaque état. Oui, d'ailleurs, j'admets qu'il y a aussi des états intermédiaires. Donc ma classe pourrait être améliorée.
A propos, une question s'est posée : l'événementBookEvent peut-il être utilisé de la même manière que le Tick ou le Timer ?
c'est-à-dire que je peux y transférer complètement ma stratégie ?
Oui ! Mais considérez que le verre est plus susceptible de générer des événements. Par conséquent, vous avez besoin d'un filtre pour éliminer les événements inutiles. Par exemple, les prix n'ont pas changé, mais seulement les volumes de certaines offres...
L'essentiel, à mon avis, est le suivant.
Globalement, il y a deux façons de procéder :
1) l'analyse de l'environnement (aspirer l'historique des transactions, vérifier la position ouverte ou le volume des positions) ;
2) l'analyse des transactions.
Lepremier fonctionne plus lentement. Mais il est plus fiable. Il doit y avoir un compromis. Nous devons peut-être envisager la stratégie et en dépendre.
Je suppose que l'information sur l'accord n'est pas encore arrivée. Ici (marqué en rouge), vous comptez sur la chance. Et c'est une dame capricieuse :-))
{
MqlTradeRequest Request;
MqlTradeResult Results;
ZeroMemory(Request);
ZeroMemory(Results);
Request.price=SymbolInfoDouble(_Symbol,SYMBOL_BID);
Request.action=TRADE_ACTION_DEAL;
Request.type=ORDER_TYPE_SELL;
Request.symbol=symbol;
Request.volume=volume;
Request.deviation=deviation;
Request.comment=comment;
Request.type_filling=filling;
bool res=false;
res=OrderSend(Request,Results);
if(res)
{
if(Results.deal>0) return(true);
else return(false);
}
return(false);
}
Même avecORDER_STATE_FILLED, Results.order peut avoir un problème - Results.deal est zéro. La reproduction à 100% de cette situation est réalisée sur le serveur FXOpen-MT5.
Je recommande d'ouvrir plusieurs démos sur différents serveurs et d'obtenir la pleine fonctionnalité du code. Je l'ai fait pour MT4 biblique. C'est pourquoi il n'y a pas de problème avec le sous-jeu.
OrderSend+Sleep(0) n'est pas plus lent que OrderSend+OnTradeTransaction. Je l'ai mesuré. Par conséquent, je n'utilise pas la deuxième variante pour les transactions asynchrones.
La variante OrderSend+Sleep(0) est temporaire, car c'est un défaut des développeurs (ne l'utilisez pas comme exemple :) ).
Quand il sera corrigé, seul OrderSend restera