Estrategia de tendencia RSI

RSI SMA EMA
Fecha de creación: 2024-06-14 15:28:38 Última modificación: 2024-06-14 15:28:38
Copiar: 0 Número de Visitas: 562
1
Seguir
1617
Seguidores

Estrategia de tendencia RSI

Descripción general

La estrategia se basa en el índice de fuerza relativa (RSI) para determinar las señales de compra y venta al juzgar si el índice RSI supera o no los límites de subida y bajada predeterminados. La estrategia también establece límites de tiempo de detención y pérdida para controlar el riesgo.

Principio de estrategia

  1. Calcular el valor del RSI.
  2. Cuando el RSI está por debajo del umbral de compra predeterminado, se genera una señal de compra; cuando el RSI está por encima del umbral de venta predeterminado, se genera una señal de venta.
  3. De acuerdo con la señal de compra, se calcula la cantidad de compra al precio de cierre actual y se ordena la compra.
  4. Si se establece una proporción de stop loss, se calcula el precio de stop loss y se hace una orden de stop loss.
  5. Pérdida total de posiciones en función de las condiciones de venta o de stop loss.
  6. Si se establece el tiempo máximo de mantenimiento de la posición, después de que el tiempo de mantenimiento exceda el tiempo máximo de mantenimiento de la posición, se liquidan todas las posiciones, independientemente de las ganancias o pérdidas.

Ventajas estratégicas

  1. El indicador RSI es un indicador de análisis técnico muy utilizado, capaz de capturar eficazmente las señales de sobreventa y sobreventa en el mercado.
  2. La estrategia introdujo un límite de tiempo para detener y mantener posiciones, lo que ayuda a controlar el riesgo.
  3. La lógica de la estrategia es clara, fácil de entender e implementar.
  4. Se puede adaptar a diferentes entornos de mercado ajustando los parámetros y los umbrales del RSI.

Riesgo estratégico

  1. El indicador RSI puede emitir una señal errónea en ciertas situaciones, lo que lleva a una pérdida de la estrategia.
  2. La estrategia no tiene en cuenta los factores fundamentales de las variedades de comercio y se basa únicamente en indicadores técnicos, lo que puede suponer un riesgo de eventos inesperados en el mercado.
  3. El porcentaje de pérdidas fijas puede no adaptarse a los cambios en la volatilidad del mercado.
  4. El rendimiento de la estrategia puede verse afectado por la configuración de parámetros, y los parámetros inadecuados pueden causar un mal rendimiento de la estrategia.

Dirección de optimización de la estrategia

  1. Introducir otros indicadores técnicos, como las medias móviles, para mejorar la fiabilidad de la estrategia.
  2. Optimización de las estrategias de stop loss, como el uso de stop loss móvil o stop loss dinámico basado en la volatilidad.
  3. Los parámetros y los umbrales del RSI se ajustan dinámicamente según las condiciones del mercado.
  4. Combina el análisis de los fundamentos de las variedades de comercio para mejorar la capacidad de control de riesgo de la estrategia.
  5. Las estrategias son evaluadas y optimizadas para encontrar la combinación óptima de parámetros.

Resumir

La estrategia utiliza el indicador RSI para capturar las señales de sobrecompra y sobreventa en el mercado, al tiempo que introduce límites de tiempo de detención y pérdida para controlar el riesgo. La lógica de la estrategia es simple, fácil de implementar y optimizar. Sin embargo, el rendimiento de la estrategia puede verse afectado por la volatilidad del mercado y la configuración de los parámetros, por lo que se necesita una combinación de otros métodos de análisis y medios de gestión de riesgos para mejorar la solidez y la rentabilidad de la estrategia.

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

//@version=5
strategy("Simple RSI Strategy", overlay=true,  initial_capital=20, commission_value=0.1, commission_type=strategy.commission.percent)

// Define the hardcoded date (Year, Month, Day, Hour, Minute)
var hardcodedYear = 2024
var hardcodedMonth = 6
var hardcodedDay = 10

// Convert the hardcoded date to a timestamp
var start_date = timestamp(hardcodedYear, hardcodedMonth, hardcodedDay)

// settings
order_size_usdt = input.float(20, title="Order Size (USDT)")
rsiLength = input.int(9, title="RSI Length")
rsiBuyThreshold = input.int(30, title="RSI Buy Threshold")
rsiSellThreshold = input.int(70, title="RSI Sell Threshold")
rsibuystrat = input.int(1, title="buy strat 1=achieved,2=recross")
rsisellstrat = input.int(1, title="sell strat 1=achieved,2=recross")
stoploss = input.int(1, title="Stop loss percent")
max_duration = input(24, title="Max Position Duration (hours)")*60

// emaPeriod = input.int(50, title="EMA Period")
// smaPeriod = input.int(200, title="SMA Period")

rsi = ta.rsi(close, rsiLength) 
// ma_rsi = ta.sma(rsi, rsiLength)
// ema = ta.ema(close,emaPeriod)
// sma = ta.sma(close,smaPeriod)
// plot(sma, color=color.red, title="exp Moving Average")
// plot(smal, color=color.blue, title="Simple Moving Average")

longCondition = ((ta.crossunder(rsi, rsiBuyThreshold) and rsibuystrat==1) or (ta.crossover(rsi, rsiBuyThreshold) and rsibuystrat==2) ) and strategy.position_size == 0
shortCondition = ( (ta.crossover(rsi, rsiSellThreshold) and rsisellstrat==1) or (ta.crossunder(rsi, rsiSellThreshold) and rsisellstrat==2) ) and strategy.position_size > 0 

// Execute Buy and Sell orders
if (longCondition)
	positionSize = order_size_usdt / close
	strategy.entry("Long", strategy.long,qty=positionSize)
	if (stoploss>0)
		stopLossPrice = close * (1 - stoploss/100 )
		strategy.exit("Stop Loss", from_entry="Long", stop=stopLossPrice)
	
if (shortCondition )//or stopCondition)
	strategy.close("Long")

//add condition open time
if (strategy.position_size > 0 and max_duration >0)
	var float entry_time = na
	if (strategy.opentrades > 0)
		entry_time := nz(strategy.opentrades.entry_time(0), na)
	else
		entry_time := na

	current_time = time
	var float duration_minutes = -1
	if (not na(entry_time))
		duration_minutes := (current_time - entry_time) / 60000

	
	// Close positions after a certain duration (e.g., 60 minutes)
	// if ( duration_minutes > max_duration and close>=strategy.opentrades.entry_price(0))
	if ( duration_minutes > max_duration )
		label.new(bar_index, high, text="Duration: " + str.tostring(duration_minutes/60) + " hrs", color=color.blue, textcolor=color.white, style=label.style_label_down, size=size.small)
		strategy.close("Long")


// Plot Buy and Sell signals
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
//plotshape(series=stopCondition, title="stop Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Plot RSI
// hline(rsiBuyThreshold, "RSI Buy Threshold", color=color.green)
// hline(rsiSellThreshold, "RSI Sell Threshold", color=color.red)