Esta estrategia construye señales comerciales basadas en el indicador de impulso RSI y el precio
La estrategia utiliza 3 condiciones para generar señales comerciales:
El cumplimiento de cualquiera de las 2 de las 3 condiciones anteriores genera una señal de compra; si no se cumple ninguna, se genera una señal de venta.
La estrategia también prevé un modo de "compra siempre" para probar el rendimiento del sistema en relación con el mercado en general.
En resumen, esta estrategia pertenece a una estrategia de negociación de frecuencia media que tiene como objetivo capturar las tendencias de precios a medio plazo evitando las fluctuaciones del mercado a corto plazo. Sus ventajas y puntos de riesgo son bastante obvios.
/*backtest start: 2022-12-05 00:00:00 end: 2023-12-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("I11L Unitrend",overlay=false, initial_capital=1000000,default_qty_value=1000000,default_qty_type=strategy.cash,commission_type=strategy.commission.percent,commission_value=0.00) tradingMode = input.string("Unitrend", "Trading Mode", ["Unitrend", "Always Buy"], tooltip="Choose the Trading Mode by trying Both in your Backtesting. I use it if one is far better then the other one.") compoundingMode = input.bool(false) leverage = input.float(1.0,step=0.1) SL_Factor = 1 - input.float(1,"Risk Capital per Trade unleveraged (%)", minval=0.1, maxval=100, step=0.1) / 100 TPFactor = input.float(2, step=0.1) var disableAdditionalBuysThisDay = false var lastTrade = time if(time > lastTrade + 1000 * 60 * 60 * 8 or tradingMode == "Always Buy") disableAdditionalBuysThisDay := false if(strategy.position_size != strategy.position_size[1]) lastTrade := time disableAdditionalBuysThisDay := true //Trade Logic SCORE = 0 //rsi momentum RSIFast = ta.ema(ta.rsi(close,50),24) RSISlow = ta.sma(ta.rsi(close,50),24) RSIMomentum = RSIFast / RSISlow goodRSIMomentum = RSIMomentum > 1 SCORE := goodRSIMomentum ? SCORE + 1 : SCORE //rsi trend RSITrend = RSISlow / 45 goodRSI = RSITrend > 1 SCORE := goodRSI ? SCORE + 1 : SCORE //price trend normalTrend = ta.ema(close,50) / ta.sma(close,50) goodTrend = normalTrend > 1 SCORE := goodTrend ? SCORE + 1 : SCORE isBuy = SCORE > 1 or tradingMode == "Always Buy" isSell = false //SCORE == 0 //plot(SCORE, color=isBuy ? color.green : #ffffff88) //reduced some of the values just for illustrative purposes, you can buy after the signal if the trendlines seem to grow plot(1, color=isBuy ? #77ff7733 : SCORE == 2 ? #ffff0033 : SCORE == 1 ? #ff888833 : #ff000033,linewidth=10) plot(1 - (1 - RSIMomentum) * 6,color=#00F569) plot(1 - (1 - RSITrend) * 0.25,color=#00DB9B) plot(1 - (1 - normalTrend) * 20,color=#00F5EE) strategy.initial_capital = 50000 if(isBuy and not(disableAdditionalBuysThisDay)) if(compoundingMode) strategy.entry("Long", strategy.long, (strategy.equity / close) * leverage) else strategy.entry("Long", strategy.long, (strategy.initial_capital / close) * leverage) if(strategy.position_size != 0) strategy.exit("TP/SL Long", "Long", stop=strategy.position_avg_price * (1 - (1 - SL_Factor)), limit=strategy.position_avg_price * (1 + (1 - SL_Factor) * TPFactor))