Gracias por el artículo,
Pero me gustaria que modificaras esto para evitar errores de truncamiento con numeros fp:
pos_profit_pt= int ((tick.bid - pos_open) / Point ()); // calcula el beneficio de la posición en puntos
Para:
pos_profit_pt= (int) MathRound((tick.bid - pos_open) / Point ()); // calcula el beneficio de la posición en puntos
Pero todo está explicado de principio a fin... Es posible conectar otros indicadores para arrastre, como MA por ejemplo.
Artyom Trishkin #:
De nada. Pronto publicaremos un artículo sobre las clases de arrastre, como conclusión lógica de este tema.
Se utilizarán, digamos, de forma más correcta y, en mi opinión, más conveniente.
gracias - he llevado los ejemplos a mis robots:
//--- si no es una nueva barra - salir del manejador if(!IsNewBar()) return; и //--- establecer el número mágico en el objeto de clase de comercio ExtTrade.SetExpertMagicNumber(InpMagic);
Yo mismo estoy estudiando ese tema....
//+------------------------------------------------------------------+ //| Gestión de Posiciones Abiertas: Trailing Stop //+------------------------------------------------------------------+ void ManageOpenPositions(string Sym, int mn) { if(TrailingStop > 0) for(int i = 0; i < PositionsTotal(); i++) { if(PositionGetSymbol(i)==Sym) // Seleccionar y comprobar si la posición está en el símbolo actual if(PositionGetString(POSITION_SYMBOL) == Sym) if(PositionGetInteger(POSITION_MAGIC)==mn || mn == -1) { ulong ticket = (ulong)PositionGetInteger(POSITION_TICKET); // Obtener el ticket de posición ...
También voy a mirar a su variante propuesta en el trabajo:
//+------------------------------------------------------------------+ //| Función StopLoss trailing por valor de precio StopLoss | //+------------------------------------------------------------------+ void TrailingStopByValue(const double value_sl, const long magic=-1, const int trailing_step_pt=0, const int trailing_start_pt=0) { //--- estructura de precios MqlTick tick={}; //--- en el ciclo por número total de posiciones abiertas int total=PositionsTotal(); for(int i=total-1; i>=0; i--) { //--- obtener el siguiente ticket de posición ulong pos_ticket=PositionGetTicket(i); if(pos_ticket==0) continue; //--- obtener símbolo y posición magik string pos_symbol = PositionGetString(POSITION_SYMBOL); long pos_magic = PositionGetInteger(POSITION_MAGIC); //--- omitir posiciones que no coincidan con los filtros de símbolos y magick if((magic!=-1 && pos_magic!=magic) || pos_symbol!=Symbol()) continue; //--- si no se han obtenido los precios - seguir adelante if(!SymbolInfoTick(Symbol(), tick)) continue; ...
¿Puede alguien explicar en detalle, o publicar un código listo (o archivo)? de tal EA:
que hace esto Tral.
SIN ROBOT!
sl en constante movimiento en TODAS las posiciones abiertas MANUALMENTE.
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Artículo publicado Cómo añadir Trailing Stop según el indicador Parabolic SAR:
Al crear una estrategia comercial, debemos probar una amplia variedad de stops de protección. Y aquí surge la idea del ajuste dinámico del nivel de Stop Loss siguiendo el precio. El mejor candidato en este punto es el indicador Parabolic SAR, resulta difícil pensar en algo más simple y claro.
Un trailing stop es un desplazamiento automático de una posición de Stop Loss por detrás del precio, lo cual permite mantener el stop de protección a cierta distancia del precio en todo momento. Este enfoque permite al tráder proteger parte del beneficio acumulado sin salir de la posición antes de tiempo. Cada vez que el precio de mercado se aleja del precio de apertura de una posición, el trailing stop «tira» automáticamente el Stop Loss hacia arriba, manteniendo la distancia especificada entre este y el precio actual. Sin embargo, si el precio se acerca al precio de apertura, el Stop Loss se mantendrá en el mismo nivel. Esto ofrece protección contra las pérdidas derivadas de posibles fluctuaciones del mercado.
No obstante, si usted necesita una versión más especial de un trailing stop, siempre se puede desarrollar una función en MQL5 para ampliar las capacidades de la herramienta estándar.
Existe una función-programa a la que se le transmite el precio requerido para fijar el nivel de Stop Loss. El programa comprueba algunos factores de prohibición, como el StopLevel (la distancia más cercana a la que no se pueden colocar stops) o el FreezeLevel (la distancia de congelación dentro de la cual no se puede modificar una posición u orden pendiente). Es decir, si el precio se acerca más al nivel stop de la posición que al FreezeLevel, esperaremos que se active una orden stop y se prohíba su modificación. Los trailings tienen algunos ajustes de parámetros más individuales que también se comprueban antes de mover el nivel de Stop Loss al precio especificado, como el símbolo y número mágico de la posición. Todos estos criterios se comprueban justo antes de que la posición del Stop Loss se desplace al nivel especificado.
Y este «puntero» de los niveles necesarios para el Stop Loss es tan bueno como debería ser el indicador Parabolic SAR.
Autor: Artyom Trishkin