Estrategia de entrada con tendencia de ruptura basada en el canal ATR


Fecha de creación: 2024-01-03 11:53:52 Última modificación: 2024-01-03 11:53:52
Copiar: 1 Número de Visitas: 722
1
Seguir
1621
Seguidores

Estrategia de entrada con tendencia de ruptura basada en el canal ATR

Descripción general

La estrategia utiliza el canal ATR y la teoría de la brecha para entrar en la tendencia cuando se rompe el canal, y es una estrategia de seguimiento de tendencias. La estrategia es simple y fácil de entender, utiliza el canal equilátero y el indicador ATR para determinar la dirección de la tendencia y emite una señal de negociación en los puntos clave.

Principio de estrategia

La estrategia utiliza los indicadores de alto, bajo, cierre y ATR para construir subidas y bajadas, formando un canal ATR. El ancho del canal depende del tamaño de los parámetros ATR. Cuando el precio rompe el canal, se considera que comienza la tendencia, en ese momento entra en la dirección de hacer más o hacer menos. La estrategia se divide en dos señales de negociación.

Análisis de las ventajas

Las principales ventajas de esta estrategia son:

  1. El uso del indicador ATR para construir canales, teniendo en cuenta la volatilidad del mercado, es mejor que la simple media.
  2. Los puntos de venta y venta están configurados en dos filas, y el riesgo es controlado.
  3. La teoría de la brecha en las tendencias de juicio, la ubicación precisa de los puntos clave.
  4. El código es sencillo y fácil de entender.

Análisis de riesgos

Los principales riesgos de esta estrategia son los siguientes:

  1. En un solo indicador, la probabilidad de fracaso de la estrategia es alta cuando el ATR falla.
  2. No hay límites de pérdidas y gestión de posiciones, y el control de riesgos es insuficiente.
  3. La utilidad está pendiente de verificación y puede no funcionar bien en condiciones reales.
  4. Los parámetros inadecuados pueden causar el cruce o el exceso de operaciones.

Dirección de optimización

La estrategia se puede optimizar de la siguiente manera:

  1. Se añaden filtros y confirmaciones de varios indicadores para evitar errores.
  2. El proyecto incluye un módulo de stop loss y un control de riesgo.
  3. Aumentar el control de posiciones y la gestión de posiciones.
  4. Aumentar la optimización de los parámetros, ajustando los parámetros para diferentes variedades.
  5. Reducir la frecuencia de las operaciones y el tamaño de las posiciones, teniendo en cuenta las condiciones del mercado real.

Resumir

El marco general de la estrategia es claro y se puede entender como una estrategia de verificación de concepto. Sin embargo, la distancia al mercado real aún tiene una cierta brecha y hay un gran espacio para la optimización. Si se puede mejorar aún más el control del viento y el control de la frecuencia de transacción, la estrategia tiene mejores perspectivas de aplicación.

Código Fuente de la Estrategia
/*backtest
start: 2023-12-03 00:00:00
end: 2024-01-02 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Myhaj_Lito

//@version=5
strategy("Renko Trend Strategy",shorttitle = "RENKO-Trend str.",overlay = true)
TF = input.timeframe(title='TimeFrame', defval="60")
ATRlength = input.int(title="ATR length", defval=60, minval=2, maxval=1000)

HIGH = request.security(syminfo.tickerid, TF, high)
LOW = request.security(syminfo.tickerid, TF, low)
CLOSE = request.security(syminfo.tickerid, TF, close)
ATR = request.security(syminfo.tickerid, TF, ta.atr(ATRlength))


RENKOUP = float(na)
RENKODN = float(na)
H = float(na)
COLOR = color(na)
BUY = int(na)
SELL = int(na)
UP = bool(na)
DN = bool(na)
CHANGE = bool(na)

RENKOUP := na(RENKOUP[1]) ? (HIGH + LOW) / 2 + ATR / 2 : RENKOUP[1]
RENKODN := na(RENKOUP[1]) ? (HIGH + LOW) / 2 - ATR / 2 : RENKODN[1]
H := na(RENKOUP[1]) or na(RENKODN[1]) ? RENKOUP - RENKODN : RENKOUP[1] - RENKODN[1]
COLOR := na(COLOR[1]) ? color.white : COLOR[1]
BUY := na(BUY[1]) ? 0 : BUY[1]
SELL := na(SELL[1]) ? 0 : SELL[1]
UP := false
DN := false
CHANGE := false

// calculating 
if not CHANGE and close >= RENKOUP[1] + H * 2
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1] + ATR * 2
    RENKODN := RENKOUP[1] + ATR
    COLOR := color.rgb(0, 255, 170,60)
    SELL := 0
    BUY += 2
    BUY


if not CHANGE and close >= RENKOUP[1] + H
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1] + ATR
    RENKODN := RENKOUP[1]
    COLOR := color.rgb(0, 230, 38,60)
    SELL := 0
    BUY += 1
    BUY

if not CHANGE and close <= RENKODN[1] - H * 2
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1] - ATR * 2
    RENKOUP := RENKODN[1] - ATR
    COLOR := color.rgb(255, 92, 43,60)
    BUY := 0
    SELL += 2
    SELL
if not CHANGE and close <= RENKODN[1] - H
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1] - ATR
    RENKOUP := RENKODN[1]
    COLOR := color.rgb(245, 69, 69,60)
    BUY := 0
    SELL += 1
    SELL
//// STRATEGY 
if(UP)
    strategy.entry("Long",strategy.long)
if(DN)
    strategy.entry("Short",strategy.short)


// ploting 

bgcolor(COLOR)