Esta estrategia determina la dirección de la tendencia en función de las velas diarias y utiliza los nuevos puntos altos o bajos formados por las velas de 15 minutos como precio de stop loss o precio de stop loss, para ajustar dinámicamente el stop loss y obtener más ganancias.
Compara el precio de cierre de las velas diarias con el precio más alto y más bajo de la velas diarias anteriores para determinar la dirección de la tendencia. Si el precio de cierre es más alto que el precio más alto del día anterior, se define como una tendencia alcista. Si el precio de cierre es más bajo que el precio más bajo del día anterior, se define como una tendencia bajista.
Cuando esté en una tendencia alcista, vaya largo cuando el precio de cierre de la vela de 15 minutos sea mayor que el precio más alto de la vela de 15 minutos anterior. Cuando esté en una tendencia bajista, vaya corto cuando el precio de cierre de la vela de 15 minutos sea inferior al precio más bajo de la vela de 15 minutos anterior.
Establezca el precio más bajo del candelero de 15 minutos anterior como el precio de stop loss después de ir largo.
Cuando el candelabro de 15 minutos vuelva a alcanzar un nuevo máximo o mínimo, ajuste el precio de la parada de pérdida en consecuencia. Ajuste al nuevo mínimo después de ir largo. Ajuste al nuevo máximo después de ir corto. Esto realiza una parada de pérdida dinámica.
La mayor ventaja de esta estrategia es que puede ajustar dinámicamente el precio de stop loss. al tiempo que garantiza el control del riesgo, maximiza la obtención de ganancias y reduce la probabilidad de que se produzca un stop loss.
Las ventajas incluyen:
Los juicios basados en la operación de tendencia pueden determinar oportunamente las tendencias del mercado y elegir la dirección comercial correcta.
Las operaciones de 15 minutos permiten entradas y salidas frecuentes para aprovechar más oportunidades.
El ajuste dinámico del stop loss basado en nuevos máximos o mínimos reduce los riesgos de que se produzca un stop loss.
El posicionamiento razonable del stop loss evita en gran medida pérdidas innecesarias.
El principal riesgo de esta estrategia proviene de errores en los juicios de tendencia.
Un juicio incorrecto de la tendencia diaria puede conducir a una dirección comercial incorrecta.
Los precios pueden fluctuar violentamente a corto plazo, aumentando la probabilidad de que se produzca un stop loss de 15 minutos.
La identificación incorrecta de los puntos de inversión de tendencia puede dar lugar a pérdidas.
Soluciones correspondientes:
Añadir indicadores de otros marcos de tiempo para juicios exhaustivos para evitar la dependencia de un solo marco de tiempo.
Evaluar la volatilidad del mercado y relajar adecuadamente el intervalo de stop loss durante la alta volatilidad.
Añadir un mecanismo de identificación del punto de inversión de tendencia para cerrar posiciones a tiempo antes de las inversiones.
Todavía hay espacio para una mayor optimización:
Añadir otros indicadores de marco de tiempo para optimizar la captura de tendencias.
Prueba diferentes ajustes de la proporción de pérdida de parada para encontrar los parámetros óptimos.
Añadir indicadores de volumen para evitar errores de divergencia de volumen.
Añadir mecanismos de inversión de tendencia para optimizar los puntos de salida.
Evaluar la ampliación de los intervalos de precios de parada de seguimiento para reducir aún más los riesgos de que se produzcan pérdidas de parada.
El rendimiento general de esta estrategia es bueno. La lógica es clara y fácil de entender. Tiene ventajas como el ajuste dinámico de stop loss, el comercio frecuente y el comercio a lo largo de las tendencias. Puede controlar eficazmente los riesgos y bloquear las ganancias, y vale la pena probar y optimizar más. Pero todavía hay margen de mejora. Se recomienda mejorar desde aspectos como el juicio integral desde múltiples ángulos, la optimización de parámetros, la adición de mecanismos de identificación de inversión de tendencias, etc., para fortalecer aún más la estabilidad y la rentabilidad de la estrategia.
/*backtest start: 2023-12-13 00:00:00 end: 2023-12-15 02:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Anand's Strategy", overlay=true) // Get the high and low of the previous day's candle prev_high = request.security(syminfo.tickerid, "D", high[2]) prev_low = request.security(syminfo.tickerid, "D", low[2]) // var float prev_high = na // var float prev_low = na prev_close = request.security(syminfo.tickerid, "D", close[1]) getDayIndexedHighLow(_bar) => _indexed_high = request.security(syminfo.tickerid, "D", high[_bar]) _indexed_low = request.security(syminfo.tickerid, "D", low[_bar]) [_indexed_high, _indexed_low] var index = 2 while index >= 0 [indexed_high_D, indexed_low_D] = getDayIndexedHighLow(index) if prev_close > indexed_high_D or prev_close < indexed_low_D prev_high := indexed_high_D prev_low := indexed_low_D break // Decrease the index to move to the previous 15-minute candle index := index - 1 // Determine the trade direction based on the candle criterion trade_direction = prev_close > prev_high ? 1 : (prev_close < prev_low ? -1 : 0) // Get the current close from 15-minute timeframe current_close = request.security(syminfo.tickerid, "15", close[1]) prev_high_15m = request.security(syminfo.tickerid, "15", high[2]) prev_low_15m = request.security(syminfo.tickerid, "15", low[2]) // var float prev_high_15m = na // var float prev_low_15m = na getIndexedHighLow(_bar) => _indexed_high = request.security(syminfo.tickerid, "15", high[_bar]) _indexed_low = request.security(syminfo.tickerid, "15", low[_bar]) [_indexed_high, _indexed_low] // Loop through previous 15-minute candles until the condition is met var i = 2 while i >= 2 [indexed_high_15m, indexed_low_15m] = getIndexedHighLow(i) if current_close > indexed_high_15m or current_close < indexed_low_15m prev_high_15m := indexed_high_15m prev_low_15m := indexed_low_15m break // Decrease the index to move to the previous 15-minute candle i := i - 1 buy_condition = trade_direction == 1 and current_close > prev_high_15m stop_loss_buy = prev_low_15m // Sell Trade Criteria in Negative Trend sell_condition = trade_direction == -1 and current_close < prev_low_15m stop_loss_sell = prev_high_15m // Trailing Stop Loss for Buy Trade // Custom Trailing Stop Function for Buy Trade var float trail_stop_buy = na trailing_buy_condition = buy_condition and current_close > trail_stop_buy if trailing_buy_condition trail_stop_buy := current_close // Custom Trailing Stop Function for Sell Trade var float trail_stop_sell = na trailing_sell_condition = sell_condition and current_close < trail_stop_sell if trailing_sell_condition trail_stop_sell := current_close // Take Buy Trade with Stop Loss if (buy_condition) strategy.entry("Buy", strategy.long) strategy.exit("Buy Stop Loss", "Buy", stop=stop_loss_buy) // Take Sell Trade with Stop Loss if (sell_condition) strategy.entry("Sell", strategy.short) strategy.exit("Sell Stop Loss", "Sell", stop=stop_loss_sell) // Set the background color based on the trade direction bgcolor(trade_direction == 1 ? color.new(color.green, 90) : trade_direction == -1 ? color.new(color.red, 90) : na)