El trailing-stop (o stop de seguimiento) le permite proteger automáticamente los beneficios de sus posiciones. Se ajusta de acuerdo al precio actual del mercado y la cantidad de pips que le dé a seguir. El trailing-stop es una gran herramienta para los traders conservadores y de largo plazo ya que crea fácilmente un ‘airbag’ protector para las operaciones. Hay dos formas básicas para establecer el trailing-stop en su plataforma MetaTrader 4: usar la herramienta incorporada o adjuntar un EA especial que aplicará un único trailing-stop a todas las órdenes. Pero antes de entrar a describir estas formas me gustaría decirle cómo un adecuado trailing-stop debería funcionar:
- Debería entrar en acción sólo cuando la posición este en beneficio (o en break-even).
- Se debería aplicar sólo cuando la diferencia entre el corriente stop-loss y el precio del mercado actual sea mayor que el valor del trailing-stop.
- El trailing-stop nunca debe «disminuir» el nivel de stop-loss.
- Si se utiliza sin stop-loss inicial, el trailing-stop no protege su posición del exceso de pérdidas, sino que sólo proporciona una buena herramienta de seguimiento de beneficios.
Aquí están los detalles sobre estas dos formas:
La forma más fácil y conveniente para establecer el trailing-stop es hacer clic con el botón derecho del ratón en la orden en la ventana del terminal y seleccionar el submenú Trailing Stop. Allí podrá elegir entre algunas de las cantidades predeterminada de puntos o introducir un número personalizado:
Esta forma de configurar el trailing-stop en MT4 es muy conveniente, pero tiene dos desventajas importantes. La primera es que no permite utilizar un trailing-stop inferior a 15 puntos. Esto no es probablemente un problema para los traders de largo plazo, pero es un gran problema para los scalpers y los traders de corto plazo. La segunda desventaja de este método es que no funciona correctamente con los brókeres que ofrecen cotizaciones extensas (5 y 3 dígitos después del punto en vez de 4 y 2 dígitos). El trailing stop confunde los pips en este caso y actúa incorrectamente.
El segundo método consiste en añadir un asesor experto especial en algún gráfico en la plataforma MetaTrader 4 y este seguirá todas las órdenes abiertas tratando de aplicar el valor de trailing stop que se le dio en el parámetro de entrada. Se trata de un asesor experto muy simple que no sobrecarga los recursos del sistema y se puede activar y desactivar en cualquier momento. Aquí está el código:
#property copyright "Copyright © 2009-2024, EarnForex.com" #property link "https://www.earnforex.com/" #property description "Kicks in when position reaches at least TrailingStop pips of profit." input double TrailingStop = 5; input double StopLoss = 0; // Stop-Loss: Set to >= 0 to activate stop-loss. void OnTick() { double PointValue; int OrdersCount = OrdersTotal(); for (int i = OrdersCount - 1; i >= 0; i--) { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { Print("Error selecting order: ", GetLastError()); continue; } if (OrderSymbol() != Symbol()) continue; // Skipping positions in other currency pairs. // Calculate the point value in case there are extra digits in the quotes: if (MarketInfo(OrderSymbol(), MODE_POINT) == 0.00001) PointValue = 0.0001; else if (MarketInfo(OrderSymbol(), MODE_POINT) == 0.001) PointValue = 0.01; else PointValue = MarketInfo(OrderSymbol(), MODE_POINT); // Normalize trailing stop value to the point value: double TSTP = TrailingStop * PointValue; if (OrderType() == OP_BUY) { if (Bid - OrderOpenPrice() > TSTP) { if (OrderStopLoss() < Bid - TSTP) { if (!OrderModify(OrderTicket(), OrderOpenPrice(), Bid - TSTP, OrderTakeProfit(), OrderExpiration(), clrNONE)) { Print("Error setting Buy trailing stop: ", GetLastError()); } } } else if ((StopLoss != 0) && (OrderStopLoss() == 0) && (MathAbs(OrderStopLoss() - (Bid - StopLoss * PointValue)) > _Point / 2)) { if (!OrderModify(OrderTicket(), OrderOpenPrice(), Bid - StopLoss * PointValue, OrderTakeProfit(), OrderExpiration(), clrNONE)) { Print("Error setting Buy stop-loss: ", GetLastError()); } } } else if (OrderType() == OP_SELL) { if (OrderOpenPrice() - Ask > TSTP) { if ((OrderStopLoss() > Ask + TSTP) || (OrderStopLoss() == 0)) { if (!OrderModify(OrderTicket(), OrderOpenPrice(), Ask + TSTP, OrderTakeProfit(), OrderExpiration(), clrNONE)) { Print("Error setting Sell trailing stop: ", GetLastError()); } } } else if ((StopLoss != 0) && (OrderStopLoss() == 0) && (MathAbs(OrderStopLoss() - (Ask + StopLoss * PointValue)) > _Point / 2)) { if (!OrderModify(OrderTicket(), OrderOpenPrice(), Ask + StopLoss * PointValue, OrderTakeProfit(), OrderExpiration(), clrNONE)) { Print("Error setting Sell stop-loss: ", GetLastError()); } } } } } //+------------------------------------------------------------------+
Como puede ver, el código es realmente simple. También puede descargar este EA de trailing-stop y usarlo libremente con sus órdenes.
Si bien no tiene los inconvenientes del primer método de trailing-stop para MetaTrader, por desgracia, también tiene dos importantes desventajas. En primer lugar, funciona para todas las órdenes que están abiertas actualmente, por lo tanto, si quiere conectarlo a una sola orden y dejar la otra sin trailing-stop este método no es para usted (pero, por supuesto, puede cambiar este EA para trabajar con algunas órdenes específicas). En segundo lugar, utiliza el mismo valor de trailing-stop para todas las órdenes.No se puede establecer un trailing-stop de 10 pips para una posición y un trailing-stop de 50 para otra. En el caso de que desee utilizar diferentes valores de stop-loss para diferentes órdenes se tendrá que alterar en gran medida el código de este asesor experto para MT4.