Esta estrategia identifica las tendencias del mercado de bitcoin mediante el cálculo del índice de verdadera fortaleza (TSI) y entra en posiciones largas / cortas filtradas por el indicador RSI para implementar el comercio algorítmico de bitcoin.
El núcleo de esta estrategia es el índice de fuerza verdadera (ITS). TSI mide la magnitud absoluta y la dirección de los cambios de precios al suavizar el doble del cambio de precio porcentual, identificando así la fuerza absoluta de los movimientos de precios hacia arriba y hacia abajo.
Cuando TSI cruza su línea de señal tsi2, se genera una señal larga. Cuando TSI cruza por debajo de tsi2, se genera una señal corta. Además, la estrategia filtra las señales TSI con RSI, tomando solo señales largas cuando RSI es superior a 50 y señales cortas cuando RSI es inferior a 50, para evitar algunas señales falsas.
Las ventajas de esta estrategia incluyen:
Los riesgos de esta estrategia incluyen:
La emisión y el efecto de filtro de retraso pueden reducirse relajando las reglas de filtro del RSI y acortando los períodos de EMA.
La estrategia se puede optimizar en los siguientes aspectos:
Optimizar los parámetros TSI y RSI para encontrar la mejor combinación.
Introducir más indicadores técnicos para construir un modelo multifactorial.
Optimice las reglas de entrada para evitar el largo en tendencia bajista y el corto en tendencia alcista.
Optimice las estrategias de stop loss como las de stop loss de seguimiento, stop loss basado en el tiempo, breakout stop loss, etc.
Optimice las reglas de salida para evitar salidas prematuras o tardías. Los indicadores de volatilidad pueden ayudar a determinar los puntos de salida adecuados.
Optimice los productos comerciales, las sesiones comerciales para centrarse en los más efectivos.
Esta estrategia identifica las tendencias a corto plazo de bitcoin con True Strength Index y filtra las señales con RSI para el comercio algorítmico de bitcoin. Tiene la ventaja de capturar sensiblemente las tendencias y filtrar el ruido, pero también tiene algunos problemas rezagados y riesgos comerciales. Las optimizaciones multifacéticas pueden mejorar aún más el rendimiento de la estrategia para desarrollar un asesor experto en comercio de bitcoin confiable.
/*backtest start: 2022-09-30 00:00:00 end: 2023-10-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // strategy("True Strength Indicator BTCUSD 15p", shorttitle="TSI BTCUSD 15p",initial_capital=1000, commission_value=0.15, commission_type =strategy.commission.percent, default_qty_value=100 , overlay = false, pyramiding=10, default_qty_type=strategy.percent_of_equity) //BASED ON True Strength Indicator MTF resCustom = input(title="Timeframe", defval="15" ) long = input(title="Long Length", defval=25) short = input(title="Short Length", defval=13) signal = input(title="Signal Length", defval=13) price = request.security(syminfo.tickerid,resCustom,close) double_smooth(src, long, short) => fist_smooth = ta.ema(src, long) ta.ema(fist_smooth, short) pc = ta.change(price) double_smoothed_pc = double_smooth(pc, long, short) double_smoothed_abs_pc = double_smooth(math.abs(pc), long, short) tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc) tsi2=ta.ema(tsi_value, signal) plot(tsi_value, color=color.lime,linewidth=2) plot(tsi2, color=color.red,linewidth=2) rsiserie = ta.rsi(price,7) cciserie = ta.cci(price,14) stochserie = ta.stoch(price,14,3,3) plot(rsiserie,color=color.purple) hline(30, title="Zero") hline(50, title="Zero",linestyle=hline.style_solid, linewidth=2) hline(70, title="Zero") buy = ta.crossover(tsi_value, tsi2) //and rsiserie[1]<25 //and cciserie<-100 and stochserie<20 sell = ta.crossunder(tsi_value, tsi2) //and rsiserie[1]>85 //and cciserie>100 and stochserie>80 alertcondition(buy, title='TSI system', message='Buy signal at!' ) alertcondition(sell, title='TSI system', message='Sell signal at!' ) strategy.entry("BUY", strategy.long, 1, when = buy) strategy.entry("SELL", strategy.short, 1, when = sell ) greentsi =tsi_value redtsi = tsi2 bgcolor( greentsi>redtsi and rsiserie > 50 ? color.lime : na, transp=90) bgcolor( greentsi<redtsi and rsiserie < 50 ? color.red : na, transp=90) yellow1= redtsi > greentsi and rsiserie > 50 yellow2 = redtsi < greentsi and rsiserie < 50 bgcolor( yellow1 ? yellow : na, transp=80) bgcolor( yellow2 ? yellow : na, transp=50) bgcolor( yellow1 and yellow1[1] ? yellow : na, transp=70) bgcolor( yellow2 and yellow2[2] ? yellow : na, transp=70) bgcolor( rsiserie > 70 ? color.lime : na, transp=60) bgcolor( rsiserie < 30 ? color.red : na, transp=60)