Fermeture des demi-lots. - page 17

 
SDC:

Vous ne pensez pas du tout logiquement. En quoi modifier le nombre magique vous aiderait-il plus que de connaître l'OrderOpenTime() ? Cela revient exactement au même.


Parce que j'ai besoin de faire plusieurs fermetures partielles avec un ordre... Si je fais un OrderClose() et que je compare avec OrderOpenTime(), puis que je fais un autre OrderClose() avec le même ordre, mais que je compare à nouveau en utilisant OrderOpenTime(), cela ne fonctionnera pas, car il y aura un ordre fermé dans l'historique et cela ne fermera pas la deuxième fonction OrderClose()...

Maintenant, si je pouvais OrderClose() en utilisant un Magicnumber 1234 et ensuite après que l'OrderClose() soit terminé, je pourrais modifier le numéro magique des ordres à 12345, donc, la première fonction qui a appelé le MagicNumber 1234 ne serait plus applicable à l'ordre restant puisque l'ordre restant a maintenant reçu un numéro magique 12345. Maintenant, avec ce MagicNumber 12345, je pourrais alors l'utiliser avec une autre fonction OrderClose() (en supposant qu'elle soit applicable) et répéter le processus jusqu'à ce que ce que j'ai, fonctionne et s'exécute comme je le veux.

Jusque là, OrderOpenTime() ne peut fonctionner qu'une seule fois...
 
Je viens de penser, et corrigez-moi si je me trompe, mais que se passe-t-il si j'utilise OrderOpenTime() AND OrderCloseTime() ?

Si je compare l'OrderOpenTime() actuel avec les positions historiquement fermées sur le même Symbole() et que je ne trouve AUCUNE correspondance, alors CloseOrder() s'exécutera. Maintenant, si la deuxième fonction CloseOrder() est appelée (un prix plus élevé que le premier CloserOrder(), et que je veux liquider quelques lots supplémentaires sur le même ordre), je pourrais comparer l'OrderOpenTime() ET l'OrderCloseTime(). Si l'OrderOpenTime(OpenPosition) == OrderOpenTime(History) && OrderCloseTime(history) > OrderOpenTime(OpenPosition) THEN OrderClose() la deuxième fonction... ?
 

Vous n'avez jamais parlé de fermetures partielles multiples avant, vous avez dit que vous vouliez juste fermer à moitié l'ordre, mais quoi qu'il en soit, vous réfléchissez beaucoup trop et passez complètement à côté de l'évidence.

Pourquoi OrderOpenTime() ne fonctionne-t-il qu'une seule fois ?

static datetime partclosedonce ;

datetime st atique partclosedtwice ;

si l'ordre répond aux critères de fermeture de niveau 1 et que l'opentime ne correspond pas à partclosedonce, il est fermé partiellement et l'horodatage est ajouté à partclosedonce.

si la commande répond aux critères de clôture partielle de niveau 1 et que son heure d'ouverture correspond à la date de clôture partielle, elle a déjà été clôturée partiellement une fois, ne la clôturez pas à nouveau partiellement.

si l'ordre répond aux critères de fermeture partielle de niveau 2 et ne correspond pas à partclosedtwice, fermez-le partiellement et ajoutez l'horodatage à la variable partclosedtwice.

 

Vous devriez également éviter de faire quoi que ce soit avec OrdersHistory. Si vous exécutez un long backtest, vous pouvez avoir des centaines, voire des milliers d'ordres dans l'historique, votre EA comparera votre ordre ouvert avec tous ces ordres à chaque tick. C'est très lent à faire et vos backtests deviendront péniblement de plus en plus lents, car plus ils sont longs, plus l'historique devient important.

 
SDC:

Vous devriez également éviter de faire quoi que ce soit avec OrdersHistory. Si vous exécutez un long backtest, vous pouvez avoir des centaines, voire des milliers d'ordres dans l'historique, votre EA comparera votre ordre ouvert avec tous ces ordres à chaque tick. C'est très lent à faire et vos backtests deviendront péniblement de plus en plus lents, car plus ils sont longs, plus l'historique devient important.


Comment puis-je le faire autrement alors... ?
 

Je viens de vous montrer comment faire ! ! S'il y a une façon plus directe de le faire, j'aimerais la connaître. Faites-le avec l'historique si vous voulez, je vous donnais juste mon avis sur cette façon de faire, c'est tout.

 
SDC:

Je viens de vous montrer comment faire ! ! S'il y a une façon plus directe de le faire, j'aimerais la connaître. Faites-le avec l'historique si vous voulez, je vous donnais juste mon avis sur cette façon de faire, c'est tout.


Oh je vois que static datetime contient la date et l'heure de l'OrderClose() pour que je puisse le comparer avec l'heure d'ouverture initiale de l'ordre actuel, par opposition à tout ce qui concerne l'historique ?
 

oui

 
Bien joué - merci pour votre aide !

Static Datetime est assez nouveau pour moi, donc je vais travailler sur ce sujet demain et voir où j'en suis ! Avec un peu de chance, je pourrai alors résoudre cette partie ennuyeuse de mon code :)
 
SDC:

Vous n'avez jamais parlé de fermetures partielles multiples avant, vous avez dit que vous vouliez juste fermer à moitié l'ordre, mais quoi qu'il en soit, vous réfléchissez beaucoup trop et passez complètement à côté de l'évidence.

Pourquoi OrderOpenTime() ne fonctionne-t-il qu'une seule fois ?

static datetime partclosedonce ;

datetime st atique partclosedtwice ;

si l'ordre répond aux critères de fermeture de niveau 1 et que l'opentime ne correspond pas à partclosedonce, il est fermé partiellement et l'horodatage est ajouté à partclosedonce.

si la commande répond aux critères de clôture partielle de niveau 1 et que son heure d'ouverture correspond à la date de clôture partielle, elle a déjà été clôturée partiellement une fois, ne la clôturez pas à nouveau partiellement.

si l'ordre répond aux critères de fermeture partielle de niveau 2 et ne correspond pas à partclosedtwice, fermez-le partiellement et ajoutez l'horodatage à la variable partclosedtwice.


Banging ! Cela a marché à merveille - Beaucoup plus facile que je ne l'avais imaginé ! J'ai commencé à regarder, et 5 minutes plus tard, je l'ai fait fonctionner :) Merci beaucoup pour votre aide ! Je vais maintenant incorporer mes multiples fonctions OrderClose() et voir si je peux le faire fonctionner. Une fois que je l'aurai fait, je vais créer un autre fil de discussion pour rendre l'aide que j'ai reçue des autres ici ! Je pense que c'est vraiment quelque chose que les autres pourraient utiliser en un seul post concis.

Je ne suis pas encore sorti de l'auberge, mais cette date statique fonctionne parfaitement avec ce seul orderclose(). Je ne vois pas pourquoi ce ne serait pas le cas pour les autres :)
Raison: