Question sur la fonction OnTradeTransaction - page 3

 
Mikalas:

:)

1. EXEMPLE pour les FORTS

2. Ne pouvez-vous pas mettre des points d'ancrage ?

3. J'ai l'impression que vous lisez des messages à travers une ligne :)

Non, j'ai l'impression que vous écrivez de l'autre côté de la ligne :

void OnTick()
{
  MqlTick a_tick; //Зачем этот зазор ниже?
                                           
  if ( SymbolInfoTick( _Symbol, a_tick ) )
  {
    PlaceOrder( _Symbol, a_tick.ask, 1, false );   //Устанавливаем ордер
  }     
}

:)) J'ai mis des points d'arrêt et je ne comprends toujours pas. Désolé, mais votre code est moche. L'ordre est d'abord envoyé, puis quelques contrôles sans intérêt sont effectués dansOnTradeTransaction et CheckOrder(). Le volume est également calculé dans le vérificateur.

Ne nous torturons pas les uns les autres : Vous donnez au moins une brève annotation de votre code (ce que l'auteur voulait dire pour ainsi dire, quels buts il recherchait :) et j'essaierai d'en faire une analyse non superficielle. Je ne veux pas le rappeler tel qu'il est maintenant, même sous des points d'arrêt.

 
Mikalas:

:)

Faisons comme ça.

Je te pose des questions et tu y réponds, d'accord ?

...

Allez !
Mikalas:

Question 1 : Comment connaître le ticket d'ordre (en envoyant la commande OrderSendAsync), si l'événement TradeTransaction n'est pas arrivé (ou n'est pas utilisé) ?

Je reconnaîtrai le ticket de commande par la fonction TrackingHistoryOrders, car tôt ou tard, la commande sera exécutée et elle ira dans l'historique des commandes que cette fonction analysera.

 
C-4:

J'ai l'impression que vous écrivez à travers une ligne :

J'ai mis des points d'arrêt et je n'y arrive toujours pas. Désolé, mais votre code est moche. L'ordre est d'abord envoyé, puis quelques contrôles sans intérêt sont effectués dans OnTradeTransaction et CheckOrder(). Le volume est également calculé dans le vérificateur.

Ne nous torturons pas les uns les autres : Vous donnez au moins une brève annotation de votre code (ce que l'auteur voulait dire pour ainsi dire, quels buts il recherchait :) et j'essaierai d'en faire une analyse non superficielle. Je ne veux pas le rappeler sous la forme dans laquelle il se trouve actuellement, même sous des points d'arrêt.

:) :):)

Je ne suis plus tout jeune (la photo a 9 ans), et je suis plus à l'aise pour faire des "trous" dans le code pour une meilleure perception.

Et beaucoup de gens trouvent également plus pratique de lire du code lorsque les lignes et les colonnes de 100 caractères ne sont pas écrites ensemble.

Vous pensez que c'est "moche" parce que VOUS avez pris le temps d'inventer votre propre méthode de...

Commande OrderSendAsync, donc vous pensez que code différent = moche ! :)

Le principe est très simple, et vous le savez, puisque vous avez participé à la discussion sur ce sujet.

La solution à ce problème a été suggérée par Yurich, à savoir que pour chaque commande de la commande OrderSendAsync

a sa propre magie, alors cet ordre, si l'événement TradeTransaction n'est pas arrivé, est très facile à trouver (par magie).

Une plage de numéros magiques est attribuée à chaque symbole, par exemple, pour AUDUSD, de 1010000 à 1019999,

pour EURUSD de 1020000 à 1029999

Ces numéros uniques peuvent être répétés dans le temps

if ( mem_magic >= ( magic_number + 9999 ) ) mem_magic = magic_number;  //Переполнение, начинаем сначала

Pour éviter de "rentrer" dans un autre ordre, il existe une variable (datetime mem_time ;)

qui enregistre la date et l'heure de la commande et nous permet de la retrouver précisément et presque instantanément.

Pouvons-nous continuer avec ça ?

 
C-4:
Allez !

Je récupère le ticket de l'ordre par la fonction TrackingHistoryOrders, car tôt ou tard l'ordre sera exécuté et entrera dans l'historique des ordres, qui sera analysé par cette fonction.

C'est très bien, mais j'en ai besoin le plus tôt possible (la commande peut être "suspendue" pendant un jour et elle ne sera pas dans l'historique).

Je veux le modifier !

Je veux supprimer !

 

Toute cette agitation et beaucoup de code auxiliaire proviennent de cette phrase : En outre, lestransactions peuvent se perdre lors de leur acheminement du serveur au terminal.

Quelqu'un peut-il clarifier la situation ? Qui peut perdre une transaction en personne (problèmes de bourse, fermeture de courtier, arrêt du serveur MQ MT5) ?

Pourquoi MQ ne veut pas garantir la livraison des transactions, qui en profite ?

 
Serj_Che:

Toute cette agitation et beaucoup de code auxiliaire proviennent de cette phrase : En outre, lestransactions peuvent se perdre lors de leur acheminement du serveur au terminal.

Quelqu'un peut-il clarifier la situation ? Qui peut perdre une transaction, notamment en personne (problèmes de bourse, fermeture de courtiers) ?

Pourquoi MQ ne veut pas garantir la livraison des transactions, qui en profite ?

Personne ne le fait, mais MQ "ne peut pas se permettre" de tout faire en même temps, et il y a beaucoup de projets, et...

les programmeurs de talent sont rares, donc ça prend trop de temps...

Ils le feront, bien sûr. (Ils ont déjà tout ce qu'il faut pour cela, à part le mécanisme de suivi lui-même).

 
Basil, alors comment modifier (supprimer) un OrderSendAsync émis si vous n'avez pas de ticket?
 
Mikalas:

Personne n'en profite, MQ n'arrive pas à mettre la main sur tout en même temps, et il y a beaucoup de projets, mais...

les programmeurs de talent sont rares, donc ça prend trop de temps...

Ils le feront, bien sûr. (ils ont déjà tout ce qu'il faut pour cela, sauf le mécanisme de suivi lui-même).

D'après ce que je comprends, l'échange donne tout. Il n'est pas logique non plus qu'un courtier normal perde quoi que ce soit.

Sur MQ, ça ressemble à ça. MQ dispose de MetaTrader5 et l'intégration avec la bourse n'est pas une priorité.

 
Serj_Che:

En ce qui me concerne, l'échange donne tout. Il n'est pas logique non plus qu'un courtier normal perde quelque chose.

C'est similaire à la MQ. MQ dispose de MetaTrader5 et l'intégration avec la bourse n'est pas une priorité.

Oui, c'est parce qu'il n'y a pas de cuisine à la bourse (seulement des commissions), et il y a des millions d'adeptes du MMM sur le FOREX,

Ils ont peut-être 100 dollars, mais tout le monde en a ! De l'argent énorme, il y a de quoi compter ! :)

 

Vasily, y aura-t-il une réponse ?

Je ne pense pas.

J'ai gagné ?

Raison: