Estrategia de pirámide de negociación de acciones basada en indicadores RSI

El autor:¿ Qué pasa?, Fecha: 2024-01-30 15:26:49
Las etiquetas:

img

Resumen general

Este artículo presenta principalmente una estrategia de pirámide de comercio de acciones diseñada sobre la base del indicador de fuerza relativa (RSI).

Principio de la estrategia

  • Utilice el indicador RSI para juzgar si la acción ha entrado en el área de sobrecompra o sobreventa.
  • Cuando el RSI entre en la zona de sobreventa, comienza a ir largo.
  • Adopte el método de pirámide, con hasta 7 compras adicionales.

Análisis de ventajas

  • El uso del indicador RSI para determinar las áreas de sobrecompra y sobreventa puede capturar mayores oportunidades de reversión de precios.
  • El método piramidal puede obtener rendimientos relativamente mejores cuando el mercado se mueve correctamente.
  • Establecer tomar ganancias y detener pérdidas después de cada compra adicional puede controlar los riesgos.

Análisis de riesgos

  • El efecto del indicador RSI para determinar las áreas de sobrecompra y sobreventa es inestable y pueden producirse señales erróneas.
  • El número de compras adicionales debe fijarse razonablemente, las compras adicionales excesivas aumentarán los riesgos.
  • El establecimiento de los puntos de stop loss debe tener en cuenta la volatilidad, no puede ser demasiado pequeño.

Direcciones de optimización

  • Considere combinar otros indicadores para filtrar las señales del RSI y mejorar la precisión de la determinación de los estados de sobrecompra y sobreventa.
  • Puede ajustar el stop loss flotante para rastrear el precio. Ajustar dinámicamente de acuerdo con la volatilidad y los requisitos de control de riesgos.
  • Considere la posibilidad de utilizar parámetros adaptativos basados en las condiciones del mercado (mercado alcista, mercado bajista, etc.).

Resumen de las actividades

Esta estrategia combina el indicador RSI con la estrategia de pirámide. Al juzgar los estados de sobrecompra y sobreventa, puede obtener más rendimientos a través de compras adicionales. Aunque la precisión del juicio RSI necesita mejorarse, a través de la optimización razonable de parámetros y la combinación con otros indicadores, puede formar una estrategia comercial efectiva. Esta estrategia tiene cierta universalidad y es un método comercial cuantitativo relativamente simple y directo.


/*backtest
start: 2023-12-30 00:00:00
end: 2024-01-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © RafaelZioni

strategy(title='Simple RSI strategy', overlay=false)

SWperiod = 1
look = 0
OverBought = input(80, minval=50)
OverSold = input(25, maxval=50)

bandmx = hline(100)
bandmn = hline(0)

band1 = hline(OverBought)
band0 = hline(OverSold)
//band50 = hline(50, color=black, linewidth=1)
fill(band1, band0, color=color.purple, transp=98)


src = close
len = input(5, minval=1, title="RSI Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)

p = 100

//scale
hh = highest(high, p)
ll = lowest(low, p)
scale = hh - ll

//dynamic OHLC
dyno = (open - ll) / scale * 100
dynl = (low - ll) / scale * 100
dynh = (high - ll) / scale * 100
dync = (close - ll) / scale * 100

//candle color
color_1 = close > open ? 1 : 0

//drawcandle
hline(78.6)
hline(61.8)
hline(50)
hline(38.2)
hline(23.6)
plotcandle(dyno, dynh, dynl, dync, title="Candle", color=color_1 == 1 ? color.green : color.red)
plot(10, color=color.green)
plot(55, color=color.black)
plot(80, color=color.black)
plot(90, color=color.red)

long = rsi <= OverSold ? 5 : na

//Strategy
golong = rsi <= OverSold ? 5 : na

longsignal = golong  
//based on https://www.tradingview.com/script/7NNJ0sXB-Pyramiding-Entries-On-Early-Trends-by-Coinrule/
//set take profit

ProfitTarget_Percent = input(3)
Profit_Ticks = close * (ProfitTarget_Percent / 100) / syminfo.mintick

//set take profit

LossTarget_Percent = input(10)
Loss_Ticks = close * (LossTarget_Percent / 100) / syminfo.mintick


//Order Placing

strategy.entry("Entry 1", strategy.long, when=strategy.opentrades == 0 and longsignal)

strategy.entry("Entry 2", strategy.long, when=strategy.opentrades == 1 and longsignal)

strategy.entry("Entry 3", strategy.long, when=strategy.opentrades == 2 and longsignal)

strategy.entry("Entry 4", strategy.long, when=strategy.opentrades == 3 and longsignal)

strategy.entry("Entry 5", strategy.long, when=strategy.opentrades == 4 and longsignal)

strategy.entry("Entry 6", strategy.long, when=strategy.opentrades == 5 and longsignal)

strategy.entry("Entry 7", strategy.long, when=strategy.opentrades == 6 and longsignal)



if strategy.position_size > 0
    strategy.exit(id="Exit 1", from_entry="Entry 1", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 2", from_entry="Entry 2", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 3", from_entry="Entry 3", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 4", from_entry="Entry 4", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 5", from_entry="Entry 5", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 6", from_entry="Entry 6", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 7", from_entry="Entry 7", profit=Profit_Ticks, loss=Loss_Ticks)


Más.