Come codificare? - pagina 248

 
 

Aiuto - come modificare un EA per lasciare aperte le compravendite esistenti

Ho bisogno di una soluzione abbastanza semplice, se qualcuno può aiutarmi

Ho un EA che ora è redditizio, ma apre un trade e chiude un trade allo stesso tempo, in modo che solo 1 trade sia attivo in qualsiasi momento.

Ora voglio eseguirlo su un conto esistente che ha alcuni trade già aperti, voglio lasciare quei trade in esecuzione, ma far sì che l'EA continui ad aprire e chiudere il proprio trade, come problema collaterale, quando uno dei trade esistenti diventa redditizio, lo chiude.

Questa richiesta collaterale di chiudere i trade esistenti in profitto può essere ignorata se questo lo mantiene semplice, posso chiuderli manualmente se necessario.

Ecco cosa usa il mio EA al momento

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

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

// gestione esperta del denaro

if(MM){if(Risk100){Comment("Valore di rischio non valido.");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=Lotti;}

// esperto init posizioni

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;

// condizioni esperte per aprire la posizione

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

// condizioni dell'esperto per chiudere la posizione

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;

// valore della posizione aperta dell'esperto

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);}

// numero esperto di ordini

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()){if((OrderType()==Type&&(OrderMagicNumber()==Magic)||Magic==0))_CntO++;}}return(_CntO);}

//esperto di pareggio

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);}}}

// trailing stop esperto

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);}

//esperto aggiunge posizioni funzione

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);}

 

/*

// condizioni esperte per chiudere la posizione

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;

*/

aggiungere solo /*all'inizio delle condizioni dell'esperto per chiudere la posizione

e */ alla fine

msn aboukalil ( at) hotmail.fr

 

Grazie aboukalil per la risposta veloce, ma non capisco bene, se modifico questo, non avrò nessun comando di chiusura, lascerà i miei trade esistenti, ma il mio EA non chiuderà mai il proprio trade per aprirlo nella direzione opposta?

Puoi aiutarmi un po' su questo

 

Salve a tutti.....

Curioso di sapere se qualcuno conosce o possiede un indicatore generico che permetta di chiamare qualsiasi indicatore a linea a buffer singolo nell'iCustoms di quello generico in modo che quando l'indicatore generico è collegato a un grafico, verrà visualizzato come indicatore a barra istogramma a due colori il cui cambiamento di colore è basato sulla pendenza dell'indy iCustomed?

Qualsiasi assistenza è apprezzata.

 

Signore e signori,

Come posso trasformare un indicatore in un file csv? Grazie.

 
biddick:
Signore e signori, come posso trasformare un indicatore in un file csv? Grazie.

Vuoi dire come salvare in un file CSV?

Controlla questo:

Strumenti - Lettore .csv

 
 

per favore aiutatemi a modificare questo piccolo script

Ciao,

Qualcuno potrebbe aiutarmi a modificare questo piccolo script di inserimento ordini

in modo che la dimensione del lotto scambiato sia una funzione di una % di rischio della dimensione del conto

So che questa linea di codice dovrebbe essere inserita da qualche parte ma non ho idea di come programmarla

double Risk = RiskPercent / 100;

if (UseMoneyMgmt)

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

molte grazie in anticipo

File:
 

ordine pendente

ciao!

come faccio a gestire gli ordini pendenti? (con mt4 api)

quando il mio programma ha ricevuto un TT_ORDER_PENDING_OPEN (tipo di trade)

ed è stato ricevuto un PUMP_UPDATE_ACTIVATION nella notifica di pompaggio