Bonjour,
Je teste une stratégie qui m'amène à avoir plusieurs ordres ouverts sur une valeur. Dès qu'un signal est activé, je voudrai que tous ces ordres soient immédiatement fermés.
Mon problème est le suivant :
- tant qu'il n'y a pas de signal, la commande Orderselect détecte bien tous mes ordres ouverts, grâce à une boucle for.
- dès que le signal de sortie de position s'active, le premier ordre dans la liste est correctement sélectionné et donc vendu ; par contre, pour les ordres suivants, la commande Orderselect déclenche cette fois le message d'erreur 4105 (no order selected), et la vente ne se fait donc pas. C'est la même boucle for, la seule chose qui a changé est qu'il y a eu fermeture de l'ordre précédent.
- il faut alors attendre le prochain signal pour que l'ordre suivant soit vendu, sans aucun problème de sélection cette fois.
- j'ai essayé d'introduire des délais d'attente (sleep) de 10 secondes entre les ordres de cloture, sans succès.
Merci d'avance de toute idée qui me ferait avancer car ça fait une semaine que je bute sur ce problème.
Voici quelques détails sur le code que j'utilise : je me suis en fait inspiré du code "Macd sample" fournit avec MT4, et en particulier la boucle suivante :
Par rapport au code original de "Macd sample", j'ai juste enlevé les instructions Return(0), pour que ça boucle autant de fois que nécessaire.
Merci d'avance
M'Klod
Je teste une stratégie qui m'amène à avoir plusieurs ordres ouverts sur une valeur. Dès qu'un signal est activé, je voudrai que tous ces ordres soient immédiatement fermés.
Mon problème est le suivant :
- tant qu'il n'y a pas de signal, la commande Orderselect détecte bien tous mes ordres ouverts, grâce à une boucle for.
- dès que le signal de sortie de position s'active, le premier ordre dans la liste est correctement sélectionné et donc vendu ; par contre, pour les ordres suivants, la commande Orderselect déclenche cette fois le message d'erreur 4105 (no order selected), et la vente ne se fait donc pas. C'est la même boucle for, la seule chose qui a changé est qu'il y a eu fermeture de l'ordre précédent.
- il faut alors attendre le prochain signal pour que l'ordre suivant soit vendu, sans aucun problème de sélection cette fois.
- j'ai essayé d'introduire des délais d'attente (sleep) de 10 secondes entre les ordres de cloture, sans succès.
Merci d'avance de toute idée qui me ferait avancer car ça fait une semaine que je bute sur ce problème.
Voici quelques détails sur le code que j'utilise : je me suis en fait inspiré du code "Macd sample" fournit avec MT4, et en particulier la boucle suivante :
Code
total=Ordertotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); // fonctionne bien tant qu'il n'y a pas eu de clôture d'ordre juste avant
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
je place ici tout mon code de test du signal et l'ordre de vente conditionné à ce test
}
}
Par rapport au code original de "Macd sample", j'ai juste enlevé les instructions Return(0), pour que ça boucle autant de fois que nécessaire.
Merci d'avance
M'Klod
Modifié le 2013-11-29 17:43:08 par
AliX