Estrategia de negociación combinada de múltiples indicadores ADX, RSI y SMA


Fecha de creación: 2023-09-14 16:19:46 Última modificación: 2023-09-14 16:19:46
Copiar: 3 Número de Visitas: 1004
1
Seguir
1617
Seguidores

Principio de estrategia

La estrategia utiliza un conjunto de indicadores técnicos para identificar la dirección de la tendencia y las zonas de sobreventa y sobrecompra para generar señales de negociación.

Los principales indicadores incluyen:

  1. Indice de dirección promedio (ADX): determina la fuerza de la tendencia

  2. Indicador relativamente débil (RSI): cómo juzgar el exceso de compra y venta

  3. El promedio de pinceladas (SMA): para evaluar tendencias a corto plazo

  4. Indicador SAR de extrema velocidad: cómo evaluar las tendencias a corto y largo plazo

  5. Una brecha en el canal: una entrada a través de la tendencia

La lógica específica de la transacción:

  1. El ADX considera que la tendencia existe y es lo suficientemente fuerte

  2. El SAR considera que las tendencias a corto y largo plazo son coherentes

  3. El RSI identifica las zonas de sobrecompra y sobreventa

  4. Entrar cuando el precio rompe la línea media SMA

  5. Entrar cuando el precio rompe el canal

La verificación mutua de varios indicadores mejora la precisión de los juicios, y las combinaciones de diferentes estrategias forman un sistema de comercio sistemático.

Ventajas estratégicas

  • Combinación de múltiples indicadores para mejorar la calidad de la señal

  • La entrada en la universidad es sistemática, con diferentes combinaciones de estrategias.

  • El ADX identifica tendencias, el RSI juzga sobrecompras y sobreventas

  • SAR captura tendencias, SMA y canal hacen incursión

Riesgo estratégico

  • La configuración de múltiples parámetros requiere optimización de pruebas repetidas

  • Baja frecuencia de las condiciones combinadas

  • Los indicadores son difíciles de manejar cuando generan señales de conflicto.

Resumir

La estrategia aprovecha al máximo las ventajas de los diferentes indicadores para construir un sistema de negociación sólido. Sin embargo, se deben establecer parámetros de optimización para garantizar una frecuencia de negociación razonable. En general, la estrategia combina la identificación de tendencias fuertes con una entrada eficiente.

Código Fuente de la Estrategia
/*backtest
start: 2023-09-12 00:00:00
end: 2023-09-13 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// strategy("Combined Strategy", overlay=true, default_qty_value=100, initial_capital=1000, margin_long=0.1)

adxlen = input(7, title="ADX Smoothing")
dilen = input(7, title="DI Length")
dirmov(len) =>
    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)
    truerange = ta.rma(ta.tr, len)
    plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
    minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
    [plus, minus]

adx(dilen, adxlen) =>
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)

// The same on Pine Script™
pine_supertrend(factor, atrPeriod) =>
    src = hl2
    atr = ta.atr(atrPeriod)
    upperBand = src + factor * atr
    lowerBand = src - factor * atr
    prevLowerBand = nz(lowerBand[1])
    prevUpperBand = nz(upperBand[1])

    lowerBand := lowerBand > prevLowerBand or close[1] < prevLowerBand ? lowerBand : prevLowerBand
    upperBand := upperBand < prevUpperBand or close[1] > prevUpperBand ? upperBand : prevUpperBand
    int direction = na
    float superTrend = na
    prevSuperTrend = superTrend[1]
    if na(atr[1]) and ta.rsi(close, 21) < 66 and ta.rsi(close,3) > 80 and ta.rsi(close, 28) > 49 and sig > 20
        direction := 1
    else if prevSuperTrend == prevUpperBand
        direction := close > upperBand ? -1 : 1
    else
        direction := close < lowerBand ? 1 : -1
    superTrend := direction == -1 ? lowerBand : upperBand
    [superTrend, direction]

[pineSupertrend, pineDirection] = pine_supertrend(3, 10)
upTrend = pineDirection < 0
downTrend = pineDirection > 0

// Define the 20-period SMA
sma20 = ta.sma(close, 20)

a = ta.rsi(close,14)
OB = input(70)
OS = input(30)
os = a > OB
ob = a < OS

if upTrend and close > pineSupertrend and close > sma20 and os
    strategy.entry("Buy", strategy.long)

if ta.crossunder(close, sma20) or ob
    strategy.close_all()

//define when to breakout of channel 
//("ChannelBreakOutStrategy", overlay=true)
length = input.int(title="Length", minval=1, maxval=1000, defval=5)
upBound = ta.highest(high, length)
downBound = ta.lowest(low, length)
if (not na(close[length]))
	strategy.entry("ChBrkLE", strategy.long, stop=upBound + syminfo.mintick, comment="ChBrkLE")
strategy.entry("ChBrkSE", strategy.short, stop=downBound - syminfo.mintick, comment="ChBrkSE")