Comment coder ? - page 248

 
 

Aide - Comment modifier un EA pour laisser les transactions existantes ouvertes ?

J'ai besoin d'une solution assez simple, si quelqu'un peut m'aider.

J'ai un EA qui est maintenant rentable mais qui ouvre et ferme une transaction en même temps, de sorte qu'une seule transaction est active à la fois.

Je veux maintenant l'exécuter sur un compte existant qui a quelques transactions déjà ouvertes, je veux laisser ces transactions en cours, mais l'EA continue d'ouvrir et de fermer sa propre transaction, et lorsque l'une des transactions existantes devient rentable, elle la ferme.

Cette demande annexe de fermeture des transactions existantes en cas de profit peut être ignorée si cela permet de rester simple, je peux les fermer manuellement si nécessaire.

Voici ce que mon EA utilise pour l'instant

if(val1 > val2) {trade_text = "BUY trade open";trend_text = "UP";BV=1;break;}

si(val1 < val2) {trade_text = " SELL trade open";trend_text = "DOWN";SV=1;break;}}

// expert money management

if(MM){if(Risk100){Comment("Valeur de risque non valide.");return(0);}

else{MML=MathFloor((AccountFreeMargin()*AccountLeverage()*Risk*Point*100)/(Ask*MarketInfo(Symbol(),MODE_LOTSIZE)*MarketInfo(Symbol(),MODE_MINLOT)))*MarketInfo(Symbol(),MODE_MINLOT);}}

if(MM==false){MML=Lots;}

// positions init expertes

int cnt=0,OP=0,OS=0,OB=0,CS=0,CB=0;OP=0;for(cnt=0;cnt<OrdersTotal();cnt++){OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) ;

if((OrderType()==OP_SELL||OrderType()==OP_BUY)&&OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)||Magic==0))OP=OP+1;}

if(OP>=1){OS=0; OB=0;}OB=0;OS=0;CB=0;CS=0;

// conditions expertes pour ouvrir la position

if(SV>0){OS=1;OB=0;}if(BV>0){OB=1;OS=0;}

// conditions expertes pour fermer une position

if((SV>0)||(RealSL_Enabled&&(OrderOpenPrice()-Bid)/Point>=RealSL)||(RealTP_Enabled&&(Ask-OrderOpenPrice())/Point>=RealTP)){CB=1;}

if((BV>0)||(RealSL_Enabled&&(Ask-OrderOpenPrice())/Point>=RealSL)||(RealTP_Enabled&&(OrderOpenPrice()-Bid)/Point>=RealTP)){CS=1;}

for(cnt=0;cnt<OrdersTotal();cnt++){OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) ;

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

{if(CB==1){OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Aqua);temp = Bid;return(0);}}

if(OrderType()==OP_SELL&&OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)||Magic==0)){

if(CS==1){OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Gold);temp = Bid;return(0);}}}double SLI=0,TPI=0;int TK=0 ;

// valeur de la position ouverte de l'expert

if((AddP()&&Add_Positions&&OP<=MaxOrders)||(OP==0&&!Add_Positions)){

if(OS==1){if(TP==0)TPI=0;else TPI=Bid-TP*Point;if(SL==0)SLI=0;else SLI=Bid+SL*Point;OS=0;return(0);}

if(OB==1){if(TP==0)TPI=0;else TPI=Ask+TP*Point;if(SL==0)SLI=0;else SLI=Ask-SL*Point;{TK=OrderSend(Symbol(),OP_BUY,MML,Ask,Slip,SLI,TPI,OrSt,Magic,0,Blue);OB=0;return(0);}}

for(j=0;j<OrdersTotal();j++){if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)){if(OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)||Magic==0)){TrP();}}}return(0);}

// nombre expert d'ordres

int CntO(int Type,int Magic){int _CntO;_CntO=0 ;

for(int j=0;j<OrdersTotal();j++){OrderSelect(j,SELECT_BY_POS,MODE_TRADES);if(OrderSymbol()==Symbol()){si((OrderType()==Type&&(OrderMagicNumber()==Magic)||Magic==0))_CntO++;}}return(_CntO);}

//rendement d'expert

void TrP(){double pb,pa,pp;pp=MarketInfo(OrderSymbol(),MODE_POINT);if(OrderType()==OP_BUY){pb=MarketInfo(OrderSymbol(),MODE_BID) ;

if(BE>0){if((pb-OrderOpenPrice())>BE*pp){if((OrderStopLoss()-OrderOpenPrice())<0){ModSL(OrderOpenPrice()+0*pp);}}}

// stop suiveur expert

if(TS>0){if((pb-OrderOpenPrice())>TS*pp){if(OrderStopLoss()<pb-(TS+TS_Step-1)*pp){ModSL(pb-TS*pp);return;}}}}

if(OrderType()==OP_SELL){pa=MarketInfo(OrderSymbol(),MODE_ASK);if(BE>0){if((OrderOpenPrice()-pa)>BE*pp){if((OrderOpenPrice()-OrderStopLoss())<0){ModSL(OrderOpenPrice()-0*pp);}}}

if(TS>0){if(OrderOpenPrice()-pa>TS*pp){if(OrderStopLoss()>pa+(TS+TS_Step-1)*pp||OrderStopLoss()==0){ModSL(pa+TS*pp);return;}}}}}

//expert stoploss

void ModSL(double ldSL){bool fm;fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldSL,OrderTakeProfit(),0,CLR_NONE);}

//fonction d'ajout de positions d'experts

bool AddP(){int _num=0 ; int _ot=0 ;

for (int j=0;j<OrdersTotal();j++){if(OrderSelect(j,SELECT_BY_POS)==true && OrderSymbol()==Symbol()&&OrderType()<3&&((OrderMagicNumber()==Magic)||Magic==0)){

_num++;if(OrderOpenTime()>_ot) _ot=OrderOpenTime();}}if(_num==0) return(true);if(_num>0 && ((Time[0]-_ot))>0) return(true);else return(false);}

 

/*

// conditions expertes pour fermer la position

if((SV>0)||(RealSL_Enabled&&(OrderOpenPrice()-Bid)/Point>=RealSL)||(RealTP_Enabled&&(Ask-OrderOpenPrice())/Point>=RealTP)){CB=1;}

if((BV>0)||(RealSL_Enabled&&(Ask-OrderOpenPrice())/Point>=RealSL)||(RealTP_Enabled&&(OrderOpenPrice()-Bid)/Point>=RealTP)){CS=1;}

for(cnt=0;cnt<OrdersTotal();cnt++){OrderSelect(cnt ,SELECT_BY_POS,MODE_TRADES) ;

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

{if(CB==1){OrderClose(OrderTicket(),OrderLots(),Bi d,Slip,Aqua);temp = Bid;return(0);}}

if(OrderType()==OP_SELL&&OrderSymbol()==Symbol()&& ((OrderMagicNumber()==Magic)||Magic==0)){

if(CS==1){OrderClose(OrderTicket(),OrderLots(),Ask ,Slip,Gold);temp = Bid;return(0);}}}double SLI=0,TPI=0;int TK=0 ;

*/

ajouter seulement /*au début des conditions expertes pour fermer la position

et */ à la fin

msn aboukalil ( at ) hotmail.fr

 

Merci aboukalil pour la réponse rapide, mais je ne comprends pas bien, si j'édite cela, est-ce que je n'aurai pas de commande de fermeture, cela laissera mes trades existants, mais mon EA ne fermera jamais son propre trade pour ouvrir dans la direction opposée ?

Pouvez-vous m'aider un peu sur ce point ?

 

Salut à tous.....

Je suis curieux de savoir si quelqu'un connaît ou possède un indicateur générique qui permet d'appeler n'importe quel indicateur tampon unique basé sur une ligne dans les iCustoms du générique, de sorte que lorsque l'indicateur générique est attaché à un graphique, il s'affiche comme un indicateur à barres d'histogramme à double couleur dont le changement de couleur est basé sur la pente de l'indy iCustomed ?

Toute aide est la bienvenue.

 

Mesdames et messieurs,

Comment puis-je transformer un indicateur en fichier csv ? Merci.

 
biddick:
Mesdames et messieurs, comment puis-je transformer un indicateur en fichier CSV ? Merci.

Voulez-vous dire comment enregistrer dans un fichier CSV ?

Vérifiez ceci :

Outils - Lecteur .csv

 
 

Aidez-nous à modifier ce petit script

Bonjour,

Quelqu'un pourrait-il m'aider à modifier ce petit script d'entrée d'ordre ?

afin que la taille du lot négocié soit fonction d'un % risqué de la taille du compte.

Je sais que cette ligne de code devrait être insérée quelque part mais je n'ai aucune idée de comment la programmer.

double Risk = RiskPercent / 100 ;

if (UseMoneyMgmt)

Lots=NormalizeDouble(AccountBalance()*Risk/stoploss/(MarketInfo(Symbol(),MODE_TICKVALUE)),2) ;

Merci beaucoup par avance

Dossiers :
 

commande en cours

Bonjour !

comment puis-je gérer les ordres en attente ? (avec l'api mt4)

quand mon programme a reçu un TT_ORDER_PENDING_OPEN (type de trade)

et qu'il a reçu un PUMP_UPDATE_ACTIVATION en notification de pompage