¿Cómo codificar? - página 248

 
 

Ayuda - cómo modificar un EA para dejar abiertas las operaciones existentes

Necesito una solución bastante simple si alguien puede ayudar

Tengo un EA que ahora es rentable, pero abre una operación y cierra una operación al mismo tiempo, por lo que sólo 1 operación está activa en cualquier momento.

Ahora quiero ejecutarlo en una cuenta existente que tiene algunas operaciones ya abiertas, quiero dejar esas operaciones en funcionamiento, pero que el EA continúe abriendo y cerrando su propia operación, como una cuestión secundaria, cuando cualquiera de las operaciones existentes se vuelve rentable, entonces las cierra.

Esta solicitud lateral de cerrar las operaciones existentes en beneficio puede ser ignorada si eso lo mantiene simple, puedo cerrarlas manualmente si es necesario.

Esto es lo que mi EA utiliza en este 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;}}

// gestión experta del dinero

if(MM){if(Risk100){Comentario("Valor de riesgo no válido.");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=Lotes;}

// experto init posiciones

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;

// condiciones de experto para abrir la posición

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

// condiciones del experto para cerrar la posición

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

{si(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;

// valor de la posición abierta del experto

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

// número de órdenes experto

int CntO(int Tipo,int Magia){int _CntO;_CntO=0;

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

//punto de equilibrio experto

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 experto

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

//experto stoploss

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

//función de añadir posiciones

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

 

/*

// condiciones de experto para cerrar la posición

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

{si(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;

*/

sólo añade /*al principio de las condiciones de experto para cerrar la posición

y */ al final

msn aboukalil ( at) hotmail.fr

 

Gracias aboukalil por la rápida respuesta, pero no entiendo muy bien, si edito eso, ¿no tendré ningún comando de cierre, dejará mis operaciones existentes, pero mi EA nunca cerrará su propia operación para abrir en la dirección opuesta?

¿Puedes ayudarme un poco en esto?

 

Hola a todos.....

Curioso en cuanto a si alguien sabe o posee un indicador genérico que le permite a uno llamar a cualquier línea basada en un solo indicador de búfer en el iCustoms de uno genérico para que cuando el indicador genérico se adjunta a un gráfico, se mostrará como indicador de barra de histograma de dos colores cuyo cambio de color se basa en la pendiente de la iCustomed indy?

Se agradece cualquier tipo de ayuda.

 

Señoras y señores,

¿Cómo puedo convertir un indicador en un archivo csv? Gracias.

 
biddick:
Señoras y señores, ¿cómo puedo convertir un indicador en un archivo csv?

¿Se refiere a cómo guardar en un archivo CSV?

Comprueba esto:

Herramientas - Lector de .csv

 
 

por favor, ayuda a modificar este pequeño script

Hola,

Alguien podría ayudar a modificar este pequeño script de entrada de órdenes

para que el tamaño del lote negociado sea una función de un % de riesgo del tamaño de la cuenta

Sé que esta línea de código debe ser insertada en algún lugar, pero no tengo idea de cómo programarla

double Risk = RiskPercent / 100;

if (UseMoneyMgmt)

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

muchas gracias de antemano

Archivos adjuntos:
 

pedido pendiente

¡hola!

¿cómo puedo gestionar las órdenes pendientes? (con mt4 api)

cuando mi programa recibió una TT_ORDER_PENDING_OPEN (tipo de operación)

y se recibió un PUMP_UPDATE_ACTIVATION en la notificación de bombeo