
Esta estrategia se basa en la línea de sol para determinar la dirección de la tendencia, y luego utiliza los nuevos puntos altos o bajos que se forman en la línea K de 15 minutos como un punto de parada o un punto de parada de seguimiento, para lograr una estrategia de ajuste dinámico de los puntos de parada para bloquear más ganancias.
Utiliza la línea K para comparar el precio de cierre del día con el precio más alto y el precio más bajo del día anterior para determinar la dirección de la tendencia. Si el precio de cierre es superior al precio más alto del día anterior, se define como una tendencia alcista; si el precio de cierre es inferior al precio más bajo del día anterior, se define como una tendencia descendente.
En una tendencia alcista, haga más cuando el precio de cierre de la línea K de 15 minutos sea superior al precio máximo de la línea K de 15 minutos anterior; en una tendencia bajista, haga menos cuando el precio de cierre de la línea K de 15 minutos sea inferior al precio mínimo de la línea K de 15 minutos anterior.
Después de hacer un alza, el precio más bajo de la línea K de 15 minutos anterior se utiliza como punto de parada. Después de hacer un alza, el precio más alto de la línea K de 15 minutos anterior se utiliza como punto de parada.
Cuando la línea K de 15 minutos vuelva a crear un nuevo punto alto o bajo, ajuste el punto de parada. Ajuste el punto de parada al nuevo punto bajo cuando haga más, ajuste el punto de parada al nuevo punto alto cuando haga vacío, realice el punto de parada de seguimiento dinámico.
La mayor ventaja de esta estrategia es que se puede ajustar dinámicamente el nivel de stop loss, al tiempo que se garantiza el control del riesgo, se bloquean los beneficios al máximo y se reduce la probabilidad de que el stop loss sea impactado.
Las ventajas concretas son:
Basado en el cálculo de tendencias, es capaz de juzgar el movimiento del mercado a tiempo y elegir la dirección correcta de la negociación.
En el nivel de 15 minutos, los jugadores pueden entrar y salir con más frecuencia, capturando más oportunidades.
Ajuste dinámico de la estrategia de stop loss para reducir el riesgo de que el stop loss sea golpeado según los nuevos altos o bajos.
La configuración de la posición de parada de pérdidas es razonable y evita al máximo las pérdidas innecesarias.
El principal riesgo de esta estrategia proviene de errores en el juicio de tendencias. Los puntos de riesgo específicos son los siguientes:
Los errores en el cálculo de las tendencias pueden conducir a una mala orientación de las operaciones.
Si la situación fluctúa fuertemente en un corto período de tiempo, hay una alta probabilidad de que el límite de pérdidas de 15 minutos sea superado.
La identificación incorrecta de los puntos de inflexión de la tendencia puede causar pérdidas.
La solución es la siguiente:
Añadir otros indicadores de ciclo de tiempo para un juicio integral, para evitar errores con un solo ciclo.
Evaluar la volatilidad del mercado y, cuando la volatilidad sea mayor, permitir la apertura adecuada del margen de pérdidas.
Aumentar el mecanismo de determinación de puntos de inflexión de tendencias y liquidar las posiciones a tiempo antes de la inversión.
La estrategia aún tiene espacio para ser mejorada:
Aumentar el conocimiento de otros indicadores de ciclo y optimizar las tendencias.
Prueba de diferentes parámetros de pérdidas para seleccionar el parámetro óptimo.
Aumentar los indicadores de energía y evitar que la energía se desvíe de las transacciones erróneas.
El cambio de tendencia en el mercado de divisas es el resultado de un cambio de tendencia en el mercado de divisas.
Evaluación de incrementar el intervalo de Trailing Stop para reducir aún más la probabilidad de que el stop loss sea impactado.
Esta estrategia funciona bien en general, la idea es clara y fácil de entender, tiene ventajas como el ajuste dinámico de detener el daño, el comercio frecuente y el avance, puede controlar eficazmente el riesgo y bloquear las ganancias, vale la pena probar y optimizar su aplicación. Pero también hay cierto espacio de mejora, se recomienda comenzar desde múltiples ángulos de juicio integral, configuración de parámetros de optimización, aumento de los juicios de giro de tendencia, etc., para mejorar aún más la estabilidad y la tasa de rendimiento 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)