En la carga de los recursos... Cargando...

Estrategia de tendencia de los indicadores de rentabilidad

El autor:¿ Qué pasa?, Fecha: 2024-06-14 15:28:38
Las etiquetas:Indicador de riesgoLa SMAEl EMA

img

Resumen general

Esta estrategia se basa en el indicador del índice de fuerza relativa (RSI). Determina las señales de compra y venta al juzgar si el valor del RSI excede los umbrales superiores e inferiores preestablecidos. Además, la estrategia establece límites de stop-loss y duración de la posición para controlar el riesgo.

Principio de la estrategia

  1. Calcular el valor del indicador RSI.
  2. Cuando el valor del RSI esté por debajo del umbral de compra preestablecido, generar una señal de compra; cuando el valor del RSI esté por encima del umbral de venta preestablecido, generar una señal de venta.
  3. Basándose en la señal de compra, calcular la cantidad de compra al precio de cierre actual y realizar una orden de compra.
  4. Si se establece un porcentaje de stop-loss, calcular el precio de stop-loss y realizar una orden de stop-loss.
  5. Cierre todas las posiciones basadas en la señal de venta o la condición de stop-loss.
  6. Si se fija una duración máxima de la posición, cerrar todas las posiciones después de que la duración de la posición exceda la máxima, independientemente de las ganancias o pérdidas.

Ventajas estratégicas

  1. El indicador RSI es un indicador de análisis técnico ampliamente utilizado que puede capturar eficazmente las señales de sobrecompra y sobreventa en el mercado.
  2. La estrategia incorpora límites de stop-loss y de duración de la posición, lo que ayuda a controlar el riesgo.
  3. La lógica de la estrategia es clara y fácil de entender e implementar.
  4. Al ajustar los parámetros y los umbrales del RSI, la estrategia puede adaptarse a diferentes entornos de mercado.

Riesgos estratégicos

  1. En algunos casos, el indicador RSI puede generar señales falsas, lo que conduce a pérdidas en la estrategia.
  2. La estrategia no tiene en cuenta los factores fundamentales del instrumento de negociación y se basa únicamente en indicadores técnicos, que pueden enfrentar riesgos derivados de acontecimientos inesperados en el mercado.
  3. Es posible que los porcentajes fijos de stop-loss no se adapten 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 conducir a un mal rendimiento de la estrategia.

Direcciones para la optimización de la estrategia

  1. Introducir otros indicadores técnicos, como las medias móviles, para mejorar la fiabilidad de la estrategia.
  2. Optimizar la estrategia de stop-loss, como el uso de stop-loss de seguimiento o stop-loss dinámico basado en la volatilidad.
  3. Ajustar dinámicamente los parámetros y los umbrales del RSI de acuerdo con las condiciones del mercado.
  4. Combinar el análisis de los aspectos fundamentales del instrumento de negociación para mejorar la capacidad de control de riesgos de la estrategia.
  5. Realizar pruebas de retroceso y optimización de parámetros en la estrategia para encontrar la combinación óptima de parámetros.

Resumen de las actividades

Esta estrategia utiliza el indicador RSI para capturar las señales de sobrecompra y sobreventa en el mercado, al tiempo que introduce límites de pérdida y duración de posición para controlar el riesgo. La lógica de la estrategia es simple y directa, 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 parámetros. Por lo tanto, es necesario combinar otros métodos de análisis y medidas de gestión de riesgos para mejorar la robustez y rentabilidad 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)

Relacionados

Más.