Comment puis-je régler le TP de moins de 5 pips ? - page 3

 
J'ai fait la correction pour les ordres de vente ou d'achat, je ne trade que l'eurusd donc il n'y a pas de problème avec les symboles. Je n'utilise pas d'EA donc tous les ordres sont placés manuellement ! Le problème est de savoir comment différencier la fermeture des ordres que j'ai pour le scalping et les ordres à long terme.
 
extern double CloseforBuy=1.4;
extern double CloseforSell=1.3;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()


{
if(OrderType()==OP_BUY)
{
if(Bid>CloseforBuy)
{
for(int a=OrdersTotal()-1;a>=0;a--)
if(OrderSelect(a,SELECT_BY_POS, MODE_TRADES) )
//if(OrderSymbol()==Symbol())
OrderClose(OrderTicket(),OrderLots( ),OrderClosePrice(),1000,White);
//----

}}
if(OrderType()==OP_SELL)
{
if(Ask<CloseforSell)
{
for(int b=OrdersTotal()-1;b>=0;b--)
if(OrderSelect(b,SELECT_BY_POS, MODE_TRADES) )
//if(OrderSymbol()==Symbol())
OrderClose(OrderTicket(),OrderLots( ),OrderClosePrice(),1000,White);
//----
}}

return(0);
}
 

Vous ne pouvez pas faire ça...

if(OrderType()==OP_BUY)

. . . avant votre OrderSelect() . . . . lisez la documentation pour OrderType(), il est dit "Note : la commande doit être sélectionnée par la fonctionOrderSelect() ".

Essayez...

if(Bid>CloseforBuy)
   {
   for(int a=OrdersTotal()-1;a>=0;a--)
      if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_BUY &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());

   }
 
deVries:

vous pouvez fixer le tp à 25 pips et fermer le trade ensuite à 5 pips

Oui, mais si les prix changent soudainement de plus de 5 pips, vous serez incapable de fermer l'ordre à temps. Cela fait partie des risques.

Meilleures salutations et bon trading !!!

 
RaptorUK:

Vous ne pouvez pas faire cela . . .

... jusqu'à ce que votre OrderSelect() . ... lisez la documentation pour OrderType() , il est dit "Note : la commande doit être sélectionnée par la fonctionOrderSelect() ".

Essayez...

Merci beaucoup pour votre aide, j'ai fait la correction ! Super ! !!

Avez-vous des propositions pour filtrer et fermer un des achats/ventes et non pas tous les ordres. Ainsi il sera possible de scalper et de garder les ordres à long terme !

Merci pour votre aide ! !!

 
ats:

Merci beaucoup pour votre aide, j'ai fait la correction ! Super ! !!

Avez-vous des propositions pour filtrer et fermer un des ordres d'achat/vente et non pas tous les ordres. Ainsi il sera possible de scalper et de garder les ordres à long terme !

Probablement mais cela est déterminé par votre stratégie . . quel ordre voulez-vous fermer et lequel voulez-vous laisser en cours d'exécution, lorsque vous avez déterminé cela, il devrait être assez simple de le coder.
 

Il est facile de déterminer quel ordre vous voulez fermer. C'est l'ordre pour le scalping ! Disons le dernier ordre !

 

L'idée de base est la suivante : 1. Vous avez des positions ouvertes à long terme et vous voulez scalper.

2. vous définissez un ordre en attente

3. Vous activez l'EA

4. L'EA ferme uniquement CET ordre

5. Vous désactivez l'EA

 
ats:

Il est facile de déterminer quel ordre vous voulez fermer. C'est l'ordre pour le scalping ! Disons le dernier ordre !

Le dernier ordre placé devrait avoir le plus grand numéro de position d'ordre ... vous pouvez vérifier par OrderOpenTime().
 
RaptorUK:
Le dernier ordre passé devrait avoir le plus grand numéro de position d'ordre... vous pouvez vérifier par OrderOpenTime().

Bonne idée ! Je n'y ai pas pensé
Raison: