Comment coder ? - page 335

 
mladen:
Cette partie

si(newbar==Time[0])return(0) ;

sinon newbar=Time[0] ;

int ticket, total ;

si(Bars<100)

{

Print("barres inférieures à 100") ;

return(0) ;

}

if(TakeProfit<10)

{

Print("TakeProfit inférieur à 10") ;

return(0) ; // vérifier TakeProfit

}

Empêche l'application de fermer les ordres à un moment donné si ce n'est pas le premier tick d'une nouvelle barre et si le profit n'est pas > 10 pips.

Bonjour mladen, j'ai supprimé cette partie du codage et mon ea ne ferme toujours pas au moment souhaité.

Avez-vous une idée de ce qui pourrait être la raison ? Merci.

Salutations

Ryan

 
tkuan77:
Bonjour mladen, j'ai supprimé cette partie du codage et mon ea ne ferme toujours pas au moment souhaité.

Avez-vous une idée de ce qui pourrait être la raison ? Merci.

Salutations

Ryan

La façon dont il est écrit, il fermera les ordres seulement, et seulement si l'heure du courtier est exactement 07:00:00.

 
mladen:
De la façon dont c'est écrit, cela fermera les ordres seulement, et seulement si l'heure du courtier est exactement 07:00:00.

Bonjour mladen, y a-t-il un autre moyen de contourner ce problème car il ne semble pas fonctionner ici.

Salutations

Ryan

 
tkuan77:
Bonjour mladen, existe-t-il un autre moyen de contourner ce problème car il ne semble pas fonctionner ici.

Salutations

Ryan

Essayez d'utiliser

Si (TimeCurrent()>= StringToTime("07:00:00"))

à la place

 
mladen:
Essayez d'utiliser

Si (TimeCurrent()>= StringToTime("07:00:00"))

au lieu de

Bonjour mladen, cela ne fonctionne toujours pas. Je me demande si cela pourrait être dû à ces lignes ici... soit les OrdersTotal ou les OrderSelect pourraient causer le problème ?

for (int i=OrdersTotal()-1 ; i>=0 ; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

Salutations

Ryan

 
tkuan77:
Bonjour mladen, cela ne fonctionne toujours pas. Je me demande si cela pourrait être dû à ces lignes ici... soit les OrdersTotal ou OrderSelect pourraient causer le problème ?

for (int i=OrdersTotal()-1 ; i>=0 ; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

Salutations

Ryan

Non. Ces lignes sont correctes

 
mladen:
Non. Ces lignes sont correctes

Bonjour mladen, parce que j'ai configuré mon ea pour n'avoir qu'une seule transaction à un moment donné et j'ai remarqué que OrdersTotal a mis mon compte int i à 0 négatif par 1-1, i>=0 ; i-- fera que mon i=-1.

Je me demandais donc si cela pouvait être l'erreur.

else if(total > 1) //pour fermer les ordres basés sur le timing... pas encore résolu.

{

if (Hour()==7 && Minute()==30)

{

for (int i=OrdersTotal()-1 ; i>=0 ; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (!UseCurrSymbol || OrderSymbol()==Symbol())

{

si (OrderType()==OP_BUY)

{

pBid=MarketInfo(OrderSymbol(),MODE_BID) ;

OrderClose(OrderTicket(),OrderLots(),pBid,1,Blue) ;

}

if (OrderType()==OP_SELL))

{

pAsk=MarketInfo(OrderSymbol(),MODE_ASK) ;

OrderClose(OrderTicket(),OrderLots(),pAsk,1,Red) ;

}

}

}

}//

}

return(0) ;

}

 
tkuan77:
Bonjour mladen, parce que j'ai configuré mon ea pour n'avoir qu'une seule transaction à un moment donné et j'ai remarqué que OrdersTotal a mis mon compte int i à 0 négatif par 1-1, i>=0 ; i-- fera que mon i=-1.

Je me demandais donc si cela pouvait être l'erreur.

else if(total > 1) //pour fermer les ordres basés sur le timing... pas encore résolu.

{

if (Hour()==7 && Minute()==30)

{

for (int i=OrdersTotal()-1 ; i>=0 ; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (!UseCurrSymbol || OrderSymbol()==Symbol())

{

si (OrderType()==OP_BUY)

{

pBid=MarketInfo(OrderSymbol(),MODE_BID) ;

OrderClose(OrderTicket(),OrderLots(),pBid,1,Blue) ;

}

if (OrderType()==OP_SELL))

{

pAsk=MarketInfo(OrderSymbol(),MODE_ASK) ;

OrderClose(OrderTicket(),OrderLots(),pAsk,1,Red) ;

}

}

}

}//

}

return(0) ;

}

Veuillez remplacer ceci : f (Hour()==7 && Minute()==30) par la ligne que je vous ai envoyée et essayez alors

OrdersTotal() renvoie 1 s'il y a un ordre ouvert. En utilisant OrderSelect(), ce 0 (OrdersTotal()-1) sélectionnera l'ordre correct. Si OrdersTotal() renvoie 0, alors il n'y a pas d'ordres ouverts dans le pool d'ordres actifs.

 
mladen:
Veuillez remplacer ceci : f (Hour()==7 && Minute()==30) par la ligne que je vous ai envoyée et essayez alors OrdersTotal() retournera 1 s'il y a un ordre ouvert. En utilisant OrderSelect(), ce 0 (OrdersTotal()-1) sélectionnera l'ordre correct. Si OrdersTotal() renvoie 0, cela signifie qu'il n'y a pas d'ordre ouvert dans le pool d'ordres actifs.

Bonjour mladen, malheureusement, je viens de réessayer et ça ne marche toujours pas.

Existe-t-il un autre moyen de fermer ma transaction en fonction d'un moment précis ?

Salutations

Ryan

 
mladen:
Veuillez remplacer ceci : f (Hour()==7 && Minute()==30) par la ligne que je vous ai envoyée et essayez alors OrdersTotal() retournera 1 s'il y a un ordre ouvert. En utilisant OrderSelect(), ce 0 (OrdersTotal()-1) sélectionnera l'ordre correct. Si OrdersTotal() renvoie 0, cela signifie qu'il n'y a pas d'ordre ouvert dans le pool d'ordres actifs.

Bonjour mladen, j'ai réussi à résoudre le problème. il semble que ce doublon était à l'origine du problème. le code fonctionne après que je l'ai supprimé.

else if(total > 1)

merci pour votre aide...

Salutations

Ryan