Estrategia de tendencia basada en el DMI y el RSI

El autor:¿ Qué pasa?, Fecha: 2024-01-25 15:56:41
Las etiquetas:

img

  1. Utilice el indicador DMI para juzgar la dirección de la tendencia
    • DMI consta de tres líneas: +DI indica tendencia alcista, -DI indica tendencia bajista, ADX juzga la fuerza de la tendencia
    • Cuando +DI>-DI, es una tendencia alcista, ir largo; cuando -DI>+DI, es una tendencia bajista, ir corto
  2. Utilice el indicador RSI para juzgar las sobrecompras y sobreventas
    • RSI compara la ganancia y pérdida promedio durante un período para determinar sobrecompra o sobreventa
    • RSI por debajo de 30 es sobreventa, por encima de 70 es sobrecompra
  3. La combinación del DMI para determinar la dirección de la tendencia y el RSI para sobrecomprados/sobrevendidos puede captar mejor el ritmo del mercado
    • Cuando el DMI muestra tendencia bajista y el RSI sobrecomprado, buen momento para el corto
  4. Establecer el stop loss móvil para bloquear las ganancias

##Análisis de ventajas Se trata de una tendencia relativamente madura y constante que sigue una estrategia con los siguientes puntos fuertes:

  1. La combinación de tendencia y sobrecompra/sobreventa evita la negociación frecuente en el mercado de rango
  2. Indicadores populares DMI y RSI con fácil ajuste de parámetros y verificación práctica exhaustiva
  3. Las pérdidas de parada de seguimiento bloquean los beneficios y evitan las pérdidas de parada hasta cierto punto.
  4. Reglas claras y fáciles de aplicar

##Análisis de riesgos También hay algunos riesgos a tener en cuenta:

  1. DMI y RSI pueden generar fácilmente señales falsas, causando pérdidas innecesarias
  2. La configuración inadecuada de la parada de pérdidas traseras puede detener la pérdida demasiado temprano o demasiado
  3. No puede filtrar eficazmente los mercados de la sierra, propenso a quedar atrapado
  4. El seguimiento de la tendencia no puede salir rápidamente cuando la tendencia se invierte

  1. Añadir filtro de volatilidad para evitar el mercado agitado
  2. Combinar patrones de candeleros para evitar la ruptura falsa
  3. Establecer el stop loss adecuado cerca del soporte/resistencia clave para limitar las pérdidas
  4. Optimización dinámica de los parámetros DMI y RSI


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 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/
// © YingYangJPN

//@version=5
strategy("DMI and RSI Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// DMI indikatörünü tanımlayalım
lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50)
len = input.int(14, minval=1, title="DI Length")
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / trur)
minus = fixnan(100 * ta.rma(minusDM, len) / trur)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
trailing_stop_loss_factor = input.float(0.50, "Trailing Stop Loss Factor", step = 0.01)

// RSI indikatörünü tanımlayalım
rsiLength = input.int(14, minval=1, title="RSI Length")
rsiSource = input(close, title="RSI Source")
rsiOverbought = input.int(70, title="RSI Overbought Level")
rsiOversold = input.int(30, title="RSI Oversold Level")
rsiValue = ta.rsi(rsiSource, rsiLength)

// Uzun pozisyon açma koşullarını tanımlayalım
longCondition1 = rsiValue < rsiOversold // RSI oversold seviyesinin altındaysa
longCondition2 = adx > 20 // ADX 20'den büyükse
longCondition3 = minus > plus

// Kısa pozisyon açma koşullarını tanımlayalım
shortCondition1 = rsiValue > rsiOverbought // RSI overbought seviyesinin üstündeyse
shortCondition2 = adx > 20 // ADX 20'den büyükse
shortCondition3 = plus > minus

// Uzun pozisyon açalım
if longCondition1 and longCondition2 and longCondition3
    strategy.entry("Long", strategy.long)
    

// Kısa pozisyon açalım
if shortCondition1 and shortCondition2 and shortCondition3
    strategy.entry("Short", strategy.short)
    
// Trailing Stop Loss
longTrailingStopLoss = strategy.position_avg_price * (1 - trailing_stop_loss_factor / 100)
shortTrailingStopLoss = strategy.position_avg_price * (1 + trailing_stop_loss_factor / 100)
if strategy.position_size > 0 
    strategy.exit("Exit Long", "Long", stop  = longTrailingStopLoss)
if strategy.position_size < 0 
    strategy.exit("Exit Short", "Short", stop = shortTrailingStopLoss)

// DMI ve RSI indikatörlerini grafiğe çizelim
plot(adx, color=#F50057, title="ADX")
plot(plus, color=#2962FF, title="+DI")
plot(minus, color=#FF6D00, title="-DI")
plot(rsiValue, color=#9C27B0, title="RSI")
hline(rsiOverbought, title="RSI Overbought Level", color=#E91E63, linestyle=hline.style_dashed)
hline(rsiOversold, title="RSI Oversold Level", color=#4CAF50, linestyle=hline.style_dashed)



Más.