Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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.
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
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