Aide au codage - page 471

 
systemfault:
Bonjour à tous,

J'ai besoin d'aide... J'ai un ea simple, mais programmé pour 4 chiffres. (Par exemple : EUR/USD : 1,1234)

Comment puis-je utiliser mon ea 5 chiffres ? (Par exemple : EUR/USD : 1,12345)

Merci :)

simpleea.mq4

Vous pouvez ajouter ceci :

*MathPow(10,_Digits%2)

où que vous utilisiez _Point et alors il fonctionnera en pips de manière égale sur les courtiers à 4 et 5 chiffres.

____________________

 

Salut mladen,

Merci pour ce message.

Je le fais ainsi.

int CheckForOpen()

{

double L = Low ;

double H = High ;

double Lots = MathRound(AccountBalance()/100)/1000 ;

if((H-Bid>Limit*Point))

{OrderSend(Symbol(),OP_BUY,Lots,Ask,1,0,0,"",MAGICMA,0,CLR_NONE) ;

for(int i=1 ; i<5 ; i++){OrderSend(Symbol(),OP_BUYLIMIT,MathPow(2,i)*Lots,Ask-i*Grid*Point*MathPow(10,_Digits%2),1,0,0,"",MAGICMA,0,CLR_NONE);}

}

if((Bid-L>Limit*Point))

{OrderSend(Symbol(),OP_SELL,Lots,Bid,1,0,0,"",MAGICMA,0,CLR_NONE) ;

for(int j=1 ; j<5 ; j++){OrderSend(Symbol(),OP_SELLLIMIT,MathPow(2,j)*Lots,Bid+j*Grid*Point*MathPow(10,_Digits%2),1,0,0,"",MAGICMA,0,CLR_NONE);}

}

}

c'est vrai ?

 
systemfault:
Bonjour mladen,

Merci pour le post.

Je le fais ainsi.

int CheckForOpen()

{

double L = Low ;

double H = High ;

double Lots = MathRound(AccountBalance()/100)/1000 ;

if((H-Bid>Limit*Point))

{OrderSend(Symbol(),OP_BUY,Lots,Ask,1,0,0,"",MAGICMA,0,CLR_NONE) ;

for(int i=1 ; i<5 ; i++){OrderSend(Symbol(),OP_BUYLIMIT,MathPow(2,i)*Lots,Ask-i*Grid*Point*MathPow(10,_Digits%2),1,0,0,"",MAGICMA,0,CLR_NONE);}

}

if((Bid-L>Limit*Point))

{OrderSend(Symbol(),OP_SELL,Lots,Bid,1,0,0,"",MAGICMA,0,CLR_NONE) ;

for(int j=1 ; j<5 ; j++){OrderSend(Symbol(),OP_SELLLIMIT,MathPow(2,j)*Lots,Bid+j*Grid*Point*MathPow(10,_Digits%2),1,0,0,"",MAGICMA,0,CLR_NONE);}

}

}

c'est vrai ?

Oui

Mais modifiez également le paramètre Grid de 1500 à 150, sinon il essaiera de fixer le prix à 1500 pips de l'offre ou de la demande.

 

J'utilise cette configuration ;

extern int PeriodX = 60 ;

extern int Limit = 50 ;

extern int Grille = 14 ;

extern int Amount = 1 ;

extern int LockDown = 20 ;

Comment se présente cette configuration ?

 
systemfault:
J'utilise cette configuration ;

extern int PeriodX = 60 ;

extern int Limit = 50 ;

extern int Grille = 14 ;

extern int Amount = 1 ;

extern int LockDown = 20 ;

Comment est cette configuration ?

Il ouvrira des limites d' achat et de vente à 14 pips de l'offre et de la demande.

Essayez-le

 
mladen:
Il ouvre les limites d'achat et de vente à 14 pips de la demande et de l'offre. Essayez-le.

J'ai essayé... il semble que ceci...

Dossiers :
adsz.png  35 kb
 
systemfault:
J'essaie... il semble que...

D'après ce que je vois, il fait ce qu'il est censé faire.

 
mladen:
Pour autant que je sache, il fait ce qu'il est censé faire.

Oui mladen...

Mais je ne veux pas fermer les ordres sans profit et avec un stoploss de 14 pips.

 
systemfault:
Oui mladen... Mais je ne veux pas fermer les ordres sans profit et avec un stoploss de 14 pips.

Puis ajoutez le take profit et le stop loss aussi

 
mladen:
Ensuite, ajoutez le take profit et le stop loss aussi

J'ai ajouté ce code ;

int CheckForClose()

{

if(getProfit()>=Amount){CloseAll();}

if(LockDown>0)

{

for(int TradeNumber = OrdersTotal() ; TradeNumber >= 0 ; TradeNumber--)

{

if (OrderSelect(TradeNumber, SELECT_BY_POS, MODE_TRADES)&&(LockDown>0))

{ int Pos=OrderType() ;

if((Pos==OP_BUY)&&(Bid-OrderOpenPrice()>Point*MathPow(10,_Digits%2)*LockDown)&&(OrderStopLoss() == 0))

{OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+Point,OrderTakeProfit(),0,CLR_NONE);}

if((Pos==OP_SELL)&&(OrderOpenPrice()-Ask>Point*MathPow(10,_Digits%2)*LockDown)&&(OrderStopLoss() == 0))

{OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-Point,OrderTakeProfit(),0,CLR_NONE);}

}

}

}

}

Par exemple ; EUR/USD prix de l'ordre 1.12345 sl/tp 1.12346

je veux sl/tp 1.12355

Je ne comprends pas ce qui ne va pas.