Hacer que el stop se vaya ajustando según una media móvil?Hola
Estoy haciendo un EA con el sistema de cruces de medias de Lowry. Lo que me gustaría hacer sería poner un stop que se fuera moviendo según va tomando valores la media de 40 sesiones, ya que al introducir la orden si que puedo poner el stop loss en la media, pero se queda siempre en el mismo valor. Gracias
Re: Hacer que el stop se vaya ajustando según una media móviusa el comando "OrderModify", ahi puedes ir cambiando el SL y TP
Re: Hacer que el stop se vaya ajustando según una media móviMuchas gracias dancotrader
Re: Hacer que el stop se vaya ajustando según una media móviCon OrderModify doy cambiado el stop al valor de la media en el momento de abrir la orden, pero no consigo que cambie el stop al valor de la media en la última barra.
Gracias
Re: Hacer que el stop se vaya ajustando según una media móvibool zonapeligro; // 1 - Alcista
// 0 - Bajista int alerta = 0; // 3 - DF Bajista bool velanueva = False; // Variable que nos detecta la vela extern double stoploss = 200.0; extern double takeprofit = 200.0; extern int periodolargo = 40;//Media larga extern int periodocorto = 20;//Media corta extern int periododisparo = 4;//Media 4 extern int numordenes = 1; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { // Definimos variables locales bool tendenciacorta; //--- nuevabarra (); int totalordenes = OrdersTotal(); // for (int i=0; i <= (totalordenes); i++){ //Seleccionamos la orden del mercado //if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==TRUE){ // Comprobando modificacion // double precioentrada = OrderOpenPrice(); // if (precioentrada < Low[3]&&Low[3]<Low[2]&&Low[2]<Low[1]){ //Modificando // int modificar; //modificar = OrderModify(OrderTicket(),precioentrada,Low[3],OrderTakeProfit(),0,Yellow); // } // } // } if (velanueva == True){ double medialarga = iMA (Symbol(),NULL,periodolargo,0,MODE_SMA,PRICE_CLOSE,0); double mediacorta = iMA (Symbol(),NULL,periodocorto,0,MODE_SMA,PRICE_CLOSE,0); double mediadisparo = iMA (Symbol(),NULL,periododisparo,0,MODE_SMA,PRICE_CLOSE,0); string texto = "Sin determinar"; color visual = Black; if (totalordenes >=numordenes) { alerta = 0; return; } if (mediadisparo < mediacorta){ tendenciacorta = 0; // Media Corta Bajista } else if (mediadisparo > mediacorta){ tendenciacorta = 1; // Media Corta Alcista } if (mediacorta < medialarga){ texto = "Zona de peligro Bajista"; visual = Red; zonapeligro = 0; if (( mediacorta < mediadisparo) && (mediadisparo < medialarga)){ texto = "Posible entrada al mercado, DF Bajista"; alerta = 3; } } else if (mediacorta > medialarga){ texto = "Zona de peligro Alcista"; visual = Green; zonapeligro = 1; if (( tendenciacorta == 0) && ( mediadisparo > medialarga)){ texto = "Posible entrada al mercado, DF Alcista"; alerta = 1; } } //Entrada Bajista if ((alerta == 3) && (tendenciacorta == 0)){ int entradabajista; entradabajista = OrderSend(Symbol(),OP_SELL,1,Bid,3,medialarga + stoploss*Point,0,NULL,0,0,Red); if (OrderSelect (entradabajista, SELECT_BY_TICKET)==TRUE){ double precioentrada = OrderOpenPrice(); //if(precioentrada < Low[iMA (Symbol(),NULL,40,0,MODE_SMA,PRICE_CLOSE,3)]&&Low[iMA (Symbol(),NULL,40,0,MODE_SMA,PRICE_CLOSE,3)]>Low[iMA (Symbol(),NULL,40,0,MODE_SMA,PRICE_CLOSE,2)]&&Low[iMA (Symbol(),NULL,40,0,MODE_SMA,PRICE_CLOSE,2)]>Low[iMA (Symbol(),NULL,40,0,MODE_SMA,PRICE_CLOSE,)]&&Low[iMA (Symbol(),NULL,40,0,MODE_SMA,PRICE_CLOSE,1)]){ int modificar1; modificar1 = OrderModify(entradabajista,precioentrada,iMA (Symbol(),NULL,40,0,MODE_SMA,PRICE_CLOSE,1),0,0,Yellow); } //} } //Fallo FD Bajista //if ((alerta == 3) && (mediadisparo > medialarga) && (medialarga > mediacorta)){ // int fallobajista; //fallobajista = OrderSend(Symbol(),OP_BUY,1,Ask,3,mediacorta - stoploss*Point,0,NULL,0,0,Green); //} //Entrada Alcista //if ((alerta == 1) && ( tendenciacorta == 1)){ // int entradaalcista; //entradaalcista = OrderSend(Symbol(),OP_BUY,1,Ask,3,medialarga - stoploss*Point,0,NULL,0,0,Green); //} // Fallo FD Alcista //if ((alerta == 1) && (mediadisparo < medialarga) && (medialarga < mediacorta)){ //int falloalcista; //falloalcista = OrderSend(Symbol(),OP_SELL,1,Bid,3,mediacorta + stoploss*Point,0,NULL,0,0,Red); //} ObjectDelete ("Tendencia"); ObjectCreate ("Tendencia",OBJ_LABEL,0,0,0); ObjectSet ("Tendencia",OBJPROP_CORNER,1); ObjectSet ("Tendencia",OBJPROP_XDISTANCE,30); ObjectSet ("Tendencia",OBJPROP_YDISTANCE,30); ObjectSetText ("Tendencia",(string)texto,10,"Arial",visual); } } //+------------------------------------------------------------------+ // Funcion encargada de cambiar la variable nuevavela void nuevabarra(){ static datetime nuevotime = 0; //Detectar nuevo tiempo velanueva = False; // 0 - misma vela, 1 - vela nueva if (nuevotime != Time[0]){ nuevotime = Time[0]; velanueva = True; } }
Re: Hacer que el stop se vaya ajustando según una media móviUna pregunta.
Que distancia manejas entre el valor que te da la iMa y el precio actual?, hay brokers que imponen bastantes pips del orden de 10 o mas pips y en pares exoticos incluso mas y por tanto las ordenes que se le envien no las acepta. Por otra parte el codigo que modifica el SL solo se ejecuta una vez, despues de que se ha abierto la orden, no veo mas codigo donde la gestiones a medida que el precio se va moviendo. Esta es la parte que falta por programar. int modificar1; modificar1 = OrderModify(entradabajista,precioentrada,iMA (Symbol(),NULL,40,0,MODE_SMA,PRICE_CLOSE,1),0,0,Yellow); esto es lo que se ejecuta al final del codigo donde se abre la orden y que por lo tanto solo se ejecuta esa unica vez.
Re: Hacer que el stop se vaya ajustando según una media móviY como puedo hacer para que se siga ejecutando?
Gracias
13 mensajes
• Página 1 de 2 • 1, 2
|
|
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados