Comment coder ? - page 180

 

problème avec la position fermée

......

double cena=0 ;

statique int isCrossed = 0 ;

isCrossed = Crossed (k,d) ;

if(OrderSelect(ticket, SELECT_BY_POS))

{

c=OrderOpenPrice() ;

retour(0) ;

}

si (isCrossed>0)

{

cena=((c-Ask)*10000);

retour(0) ;

}

total = OrdersTotal() ;

si(total < 1)

{

si(isCrossed == 1)

{

ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 1000, cena,

cena , "EMA_CROSS", 12345, 0, Green) ;

}

....

if(isCrossed == 2)

{

ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 1000, cena,

cena, "EMA_CROSS", 12345, 0, Red) ;

......

en général l'EA ferme la position quand l'EMA traverse et en même temps ouvre une autre position.

les positions sont ouvertes mais elles ne veulent pas se fermer ;/

merci de m'aider

 

Est-il possible de fermer une position et d'en ouvrir une nouvelle au même tick ?

(...)

if(OrdersTotal()!=0) {

(...)

OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), Slippage, Green ); }

if(OrdersTotal()==0) {

OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Ask - SL * Point, Ask + TP * Point, NULL, Magic, 0, Green); }

(...)

Dans cet exemple de code, la position courte sera fermée au premier tick, mais la position longue ne sera pas ouverte instantanément. Il faut un autre tick pour ouvrir la position longue.

Merci d'avance :-)

 

Oui, c'est possible. Il suffit de mettre la fonction RefreshRates() entre les opérateurs.

 
 
pietra`:
...... aidez-nous s'il vous plaît

On dirait bien : Je m'appelle Pietra. Quel est mon deuxième nom ?

C'est impossible de vous aider sans le code complet. Désolé.

 

Besoin d'aide pour le codage

Quelqu'un peut m'aider à coder MT4 pour connaître les prix d'ouverture maximum et minimum pour l'EA ? Il y a plusieurs ouvertures par un EA.

J'ai trouvé un code comme celui-ci, mais c'est pour connaître la première/dernière ouverture de transaction.

double GetLastBuyPrice(int Magic)

{

int total=OrdersTotal()-1 ;

for (int cnt = total ; cnt >=0 ; cnt--)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) ;

if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY))

{

return(OrderOpenPrice()) ;

}

}

return(10000) ;

}

Comment coder pour connaître l'ouverture de transaction la plus haute/la plus basse ?

 

Code

lumanauw:
Quelqu'un peut m'aider sur le codage MT4 pour connaître les prix maximum et minimum d'ouverture pour l'EA ? Il y a quelques ouvertures par un EA.

J'ai trouvé un code comme celui-ci, mais c'est pour connaître la première/dernière ouverture de transaction.

Double opens[1000] = {0} ;

double maxopen = 0 ;

double minopen = 1000000 ;

// double GetLastBuyPrice(int Magic)

{

int total=OrdersTotal()-1 ;

for (int cnt = total ; cnt >=0 ; cnt--)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) ;

if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY))

{

opens[cnt] = OrderOpenPrice() ;

}

}

for ( cnt = 0 ; cnt <= total ; cnt ++ )

{

si ( opens[cnt] > maxopen ) maxopen = opens[cnt] ;

si ( opens[cnt] < minopen ) minopen = opens[cnt] ;

}

}

Comment coder pour connaître l'ouverture de transaction la plus élevée/la plus basse ?

salut,

modifiez le code comme ci-dessus,

ce n'est pas une procédure à appeler depuis un autre ...,

mettez-la où vous voulez dans votre code EA.

OTR

 

Besoin d'aide pour créer un code permettant d'ouvrir plus d'une commande

Je n'ai pas réussi à ajouter un code pour ouvrir un deuxième ordre.

J'essaie d'ouvrir 2 ordres basés sur le même signal avec des niveaux de TP différents.

Voici mon code pour ouvrir le premier ordre :

toute aide est appréciée.

if(SlowSell<0 && FastSell<0 && PrevFastSell==0)

{

ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,Bid-TakeProfit*Point, "MA_Angle_Trader",MagicNumber,0,Red) ;

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordre SellStop ouvert : ",OrderOpenPrice()) ;

}

else Print("Erreur lors de l'ouverture de l'ordre SellStop : ",GetLastError()) ;

retour(0) ;

ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,0, "MA_Angle_Trader",MagicNumber,0,Red) ;

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordre SellStop ouvert : ",OrderOpenPrice()) ;

}

else Print("Erreur lors de l'ouverture de l'ordre SellStop : ",GetLastError()) ;

return(0) ;

}

 

Bonjour

J'ai besoin d'une aide simple pour le codage,

1) Couvrir une transaction à un certain nombre de pips.

2) Puis désactiver/suspendre tout autre trade...........

Je dois m'assurer qu'il n'y aura pas de nouvelle couverture car je fermerai manuellement la transaction couverte.

 
williamcope:
Je n'ai pas réussi à ajouter le code permettant d'ouvrir une deuxième commande.

J'essaie d'ouvrir 2 ordres basés sur le même signal avec des niveaux de TP différents.

Voici mon code pour ouvrir le premier ordre :

toute aide est appréciée.

if(SlowSell<0 && FastSell<0 && PrevFastSell==0)

{

ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,Bid-TakeProfit*Point, "MA_Angle_Trader",MagicNumber,0,Red) ;

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordre SellStop ouvert : ",OrderOpenPrice()) ;

}

else Print("Erreur lors de l'ouverture de l'ordre SellStop : ",GetLastError()) ;

retour(0) ;

ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,0, "MA_Angle_Trader",MagicNumber,0,Red) ;

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordre SellStop ouvert : ",OrderOpenPrice()) ;

}

else Print("Erreur lors de l'ouverture de l'ordre SellStop : ",GetLastError()) ;

retour(0) ;

}

Remplacer le premier

return(0) ;

à

RefreshRates() ;

Raison: