Esta estrategia utiliza el canal ATR y la teoría de la ruptura para seguir las tendencias al entrar cuando se rompe el canal. Pertenece a las estrategias de seguimiento de tendencias. La estrategia es simple y fácil de entender, utilizando canales promedio móvil e indicadores ATR para determinar la dirección de la tendencia y emitir señales comerciales en puntos clave.
Esta estrategia construye bandas superiores e inferiores con precios altos, bajos, cerrados e indicador ATR para formar un canal ATR. El ancho del canal está determinado por el tamaño del parámetro ATR. Cuando el precio atraviesa el canal, se juzga como el comienzo de una tendencia, en los puntos en los que se ingresan posiciones largas o cortas. La estrategia tiene dos niveles de señales comerciales. Cuando el precio atraviesa un ancho ATR, se considera una tendencia emergente, lo que desencadena el primer nivel de puntos de compra / venta. Cuando el precio atraviesa dos anchos ATR, se considera una tendencia acelerada, lo que desencadena el segundo nivel de puntos de compra / venta.
Las principales ventajas de esta estrategia son las siguientes:
Los principales riesgos de esta estrategia son:
Las direcciones de optimización para esta estrategia incluyen:
El marco general de esta estrategia es claro y utilizable como prueba de concepto. Pero hay lagunas en el comercio en vivo que permiten optimizaciones sustanciales. Si los controles de riesgo y las frecuencias de negociación se pueden mejorar aún más, las perspectivas de aplicación serían buenas.
/*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)