forexeadvisor cierre velasbuenos días, como mis conocimientos de pogramacion son muy limitados, asi que he tenido que recurrir a forexeadvidor para crear una ea, y lo domino bastante bien, pero en este punto no he podido lograrlo, me explico tengo una operación abierta con un condicionante de cierre , hasta aquí todo bien , pero intento colocarle otro condicinate , que es que si el primer condicionante no se cumple la operación se cierre al finalizar la vela que esta operando en este momento, no se si alguien domina el tema y me puede ayudar
muchas gracias de antemano
Re: forexeadvisor cierre velasQuizás sería mejor en el hilo de metatrader, si pasas el código, o solo esa parte en particular se puede mirar.
Re: forexeadvisor cierre velasLo muevo aquí, más apropiado.
Piscinausu, ¿puedes subir algo de código para que podamos verlo entre todos? Gracias. Saludos, FXWizard
Re: forexeadvisor cierre velasGracias por el interés .Como he comentado mis conocimientos de pogramar son nulos , os paso este código sencillo generado con forexeadvisor, a ver si es posible que la operación de compra o venta se cierre al finalizar la vela, si no se cumple el condicionante.
muchas gracias xtern int MagicNumber=10018; extern double Lots =0.1; extern double StopLoss=0; extern double TakeProfit=0; extern int TrailingStop=0; extern int Slippage=3; //+------------------------------------------------------------------+ // 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); } 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); } 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); }
Re: forexeadvisor cierre velasEs decir, quieres que si no cierra por el if((High[0]>iMa...., cierre al final de la vela actual?
Enviado desde mi iPhone con Tapatalk
Re: forexeadvisor cierre velasExacto, asi es muchas gracias
Re: forexeadvisor cierre velasxtern 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; } Te explico lo que he hecho, porque no se si es lo que pides, he creado al final una funcion para ver si es una nueva vela, el comienzo de una, indica el cierre de la anterior, por lo que si es una nueva barra, se ha cerrado la anterior. lo he puesto en los dos condicionantes del order close, if High y en el if Low, si no quieres alguno de ellos borra lo que está en negrita =) espero que te valga, y si no comenta un poco más o se lo dejo a otra persona! un saludo! EDIT: no tengo para compilar y probar, espero que funcione sin errores :/
Re: forexeadvisor cierre velasEso iba a hacer yo jeje
Enviado desde mi iPhone con Tapatalk
12 mensajes
• Página 1 de 2 • 1, 2
|
|
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados