por piscinausu » 02 Sep 2016, 19:14
muchas gracias por vuestro tiempo, he copiado los datos que me has aportado en la metratader, modificar asesor experto, y no funciona, no se si he echo lo correcto, o hay que hacerlo de manera diferente,por otra parte ¿ es posible que el generador de forexeadvisor no contemple esta opción tan sencilla como que una operación se cierre al finalizar la vela que esta operando? muchas gracias
-
piscinausu
-
- Mensajes: 14
- Registrado: 12 Jul 2013, 19:14
- Karma: 0
por BartRoberts » 02 Sep 2016, 19:30
abre el editor de mt4, haz como si fueras a hacer un nuevo ea desde el principio, borra todo y agregas el codigo que te dieron
I'm the operator with my pocket indicator
-
BartRoberts
-
- Mensajes: 1229
- Registrado: 07 Oct 2012, 08:06
- Ubicación: Tortuga
- Karma: 27
por Xakalin » 03 Sep 2016, 00:54
perdona piscinasu, daba 2 errores en un fallo de los if, como te comenté no tenía editor ni compilador para ver si funcionaba... prueba con este! - Código: Seleccionar todo
extern int MagicNumber=10018; extern double Lots =0.1; extern double StopLoss=0; extern double TakeProfit=0; extern int TrailingStop=0; extern int Slippage=3; double newBar; //+------------------------------------------------------------------+ // expert start function //+------------------------------------------------------------------+ int start() { double MyPoint=Point; if(Digits==3 || Digits==5) MyPoint=Point*10;
double TheStopLoss=0; double TheTakeProfit=0; if( TotalOrdersCount()==0 ) { int result=0; if((Low[0]<iMA(NULL,0,2,0,MODE_EMA,PRICE_LOW,0))&&(High[0]<iMA(NULL,0,2,0,MODE_EMA,PRICE_HIGH,0))) // Here is your open buy rule { result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"EA Generator http://www.ForexEAdvisor.com",MagicNumber,0,Blue); if(result>0) { TheStopLoss=0; TheTakeProfit=0; if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint; if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint; OrderSelect(result,SELECT_BY_TICKET); OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green); } return(0); } if((High[0]>iMA(NULL,0,2,0,MODE_EMA,PRICE_HIGH,0))&&(Low[0]>iMA(NULL,0,2,0,MODE_EMA,PRICE_LOW,0))) // Here is your open Sell rule { result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"EA Generator http://www.ForexEAdvisor.com",MagicNumber,0,Red); if(result>0) { TheStopLoss=0; TheTakeProfit=0; if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint; if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint; OrderSelect(result,SELECT_BY_TICKET); OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green); } return(0); } }
for(int cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber ) { if(OrderType()==OP_BUY) { if((High[0]>iMA(NULL,0,2,0,MODE_EMA,PRICE_HIGH,0))) //here is your close buy rule { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red); }else if (NewBar()){ OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red); } if(TrailingStop>0) { if(Bid-OrderOpenPrice()>MyPoint*TrailingStop) { if(OrderStopLoss()<Bid-MyPoint*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green); return(0); } } } } else { if((Low[0]<iMA(NULL,0,2,0,MODE_EMA,PRICE_LOW,0))) // here is your close sell rule { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red); }else if (NewBar()){ OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Red); } if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop)) { if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red); return(0); } } } } } } return(0); }
int TotalOrdersCount() { int result=0; for(int i=0;i<OrdersTotal();i++) { OrderSelect(i,SELECT_BY_POS ,MODE_TRADES); if (OrderMagicNumber()==MagicNumber) result++;
} return (result); }
bool NewBar() { if (Time[0] != newBar){ newBar = Time[0]; return true; } return false; }
un saludo!
-
Xakalin
-
- Mensajes: 291
- Registrado: 05 Jul 2016, 17:57
- Karma: 4
por piscinausu » 06 Sep 2016, 18:06
muchas gracias a todos funciona perfecto, no entiendo el porque el generador de ea de forexeadvisor no tiene ninguna opción que te permita cerrar cualquier operación abierta al cierre de la vela, si el condicionate de cierre no se cumple, alguien sabe de algún otro generador de ea que lo permita? gracias
-
piscinausu
-
- Mensajes: 14
- Registrado: 12 Jul 2013, 19:14
- Karma: 0
|
|