Aprovechar la estrategia de tendencia

El autor:¿ Qué pasa?, Fecha: 2023-09-26 11:22:04
Las etiquetas:

Resumen general

La estrategia Take Profit on Trend tiene como objetivo detectar tendencias a largo plazo y retrocesos a corto plazo, tomando posiciones largas durante las tendencias alcistas generales mientras se capturan caídas a corto plazo, con niveles razonables de stop loss y take profit establecidos para seguir la tendencia y obtener ganancias de manera oportuna.

Estrategia lógica

La estrategia utiliza principalmente EMA y RSI para determinar tendencias a largo y corto plazo. Específicamente, utiliza EMA de 50 días y EMA de 200 días para juzgar las tendencias a largo plazo, y RSI para medir la fuerza de la tendencia. Cuando el largo plazo está en una tendencia alcista (EMA de 200 días en aumento) y fuerte (RSI por encima de 50), y el corto plazo ve un retroceso (los últimos 2 velas cerran más bajas), se toma una posición larga.

Después de entrar en una posición, la estrategia establece condiciones de stop loss y take profit. Cuando el precio sube más de 2x unidades BHD por encima del precio de entrada, se obtienen ganancias. Cuando el precio cae más de 3x unidades BHD por debajo del precio de entrada, la posición se detiene. La unidad BHD se calcula en función de la amplitud de las últimas 200 velas.

De este modo, la estrategia tiene plenamente en cuenta las características de tendencia a largo y corto plazo, aumentando las ganancias mientras se controlan los riesgos, siguiendo la tendencia mientras se obtienen ganancias oportunas.

Análisis de ventajas

La estrategia tiene las siguientes ventajas:

  1. Considera las tendencias a largo y corto plazo, combinadas con indicadores de fortaleza, evita las entradas ciegas en mercados variados.

  2. Las entradas siguen la dirección de la tendencia, mayor tasa de ganancia.

  3. Los puntos de toma de ganancias y stop loss permiten tomar ganancias y controlar el riesgo a tiempo.

  4. TP y SL son dinámicos basados en la volatilidad, relativamente razonables.

  5. Las pruebas de retroceso muestran buenos rendimientos y estabilidad a través de símbolos y plazos.

  6. Lógica simple y clara, fácil de entender e implementar para todos los niveles de habilidad.

Análisis de riesgos

La estrategia también tiene algunos riesgos:

  1. Un error de juicio a corto/largo plazo que conduce a direcciones de entrada equivocadas.

  2. Las caídas de mercado similares a los acantilados pueden penetrar las paradas.

  3. Los parámetros mal configurados afectan negativamente el rendimiento.

  4. El TP está demasiado ajustado, puede salir prematuramente.

  5. Backtest ≠ rendimiento en vivo, se necesita una optimización continua.

Soluciones:

  1. Optimizar los parámetros, ajustar los períodos de admisión, añadir indicadores de validación cruzada.

  2. Paradas más amplias, dimensionamiento de la posición, otros controles de riesgo.

  3. Extensa prueba posterior para evaluar los parámetros.

  4. Optimización dinámica de la TP en función de las condiciones del mercado.

  5. Pruebas en curso, optimización, ajuste en vivo.

Direcciones de optimización

La estrategia se puede optimizar aún más mediante:

  1. Ajuste de parámetros, períodos de MA, períodos de unidades BHD, etc.

  2. Añadir indicadores, MACD, KD, etc. para una mejor precisión a corto plazo.

  3. Optimización del TP/SL, tamaño dinámico basado en la volatilidad, etc.

  4. Añadir el tamaño de la posición basado en la fuerza de la tendencia.

  5. Probando robustez en más símbolos y marcos de tiempo.

  6. Añadir filtros como precio de cierre > abierto para evitar trampas.

  7. Incorporar aprendizaje automático para más automatización e inteligencia.

Estos pueden mejorar la tasa de ganancia, el rendimiento, la estabilidad, la adaptabilidad, etc.

Conclusión

En general, la estrategia Take Profit on Trend tiene las ventajas de considerar tendencias largas / cortas, siguiendo tendencias, TP / SL claro. Es un enfoque de seguimiento de tendencias estable y eficiente. Pero existen riesgos, que requieren optimización continua y ajuste en vivo. La lógica es clara y fácil de implementar. Vale la pena estudiar y aplicar para los operadores. Con una optimización adicional, puede convertirse en una estrategia cuantitativa robusta.


/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © BHD_Trade_Bot

// @version=5
strategy(
 shorttitle            = 'Take Profit On Trend',
 title                 = 'Take Profit On Trend (by BHD_Trade_Bot)',
 overlay               = true,
 calc_on_every_tick    = true,
 calc_on_order_fills   = true,
 use_bar_magnifier     = true,
 initial_capital       = 1000,
 default_qty_type      = strategy.percent_of_equity,
 default_qty_value     = 100,
 commission_type       = strategy.commission.percent,
 commission_value      = 0.1)



// Backtest Time Period
start_year   = input(title='Start year'   ,defval=2021)
start_month  = input(title='Start month'  ,defval=1)
start_day    = input(title='Start day'    ,defval=1)
start_time = timestamp(start_year, start_month, start_day, 00, 00)

end_year     = input(title='end year'     ,defval=2050)
end_month    = input(title='end month'    ,defval=1)
end_day      = input(title='end day'      ,defval=1)
end_time = timestamp(end_year, end_month, end_day, 23, 59)

is_back_test_time() => true



// EMA
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)

// RSI
rsi200 = ta.rsi(close, 200)

// EMA_CD
emacd = ema50 - ema200
emacd_signal = ta.ema(emacd, 50)
hist = emacd - emacd_signal

// BHD Unit
bhd_unit = ta.rma(high - low, 200) * 2
bhd_upper = ema200 + bhd_unit
bhd_lower = ema200 - bhd_unit



// All n candles is going down
all_body_decrease(n) =>
    isValid = true
    for i = 0 to (n - 1)
        if (close[i] > close[i + 1])
            isValid := false
            break
    isValid



// ENTRY CONDITIONS

// Long-term uptrend
entry_condition1 = rsi200 > 51 and hist > 0

// Short-term downtrend
entry_condition2 = all_body_decrease(2)

ENTRY_CONDITIONS = entry_condition1 and entry_condition2

if ENTRY_CONDITIONS and is_back_test_time()
    strategy.entry('entry', strategy.long)


// CLOSE CONDITIONS

// Price increase 2 BHD unit
take_profit = close > strategy.position_avg_price + bhd_unit * 2

// Price decrease 3 BHD unit
stop_loss = close < strategy.position_avg_price - bhd_unit * 3

CLOSE_CONDITIONS = take_profit or stop_loss

if CLOSE_CONDITIONS
    strategy.close('entry')



// Draw
plot(ema50, color=color.orange, linewidth=2)
plot(ema200, color=color.purple, linewidth=2)
bhd_upper_line = plot(bhd_upper, color=color.teal)
bhd_lower_line = plot(bhd_lower, color=color.teal)
fill(bhd_upper_line, bhd_lower_line, color=color.new(color.teal, 90))


Más.