Diese Strategie identifiziert Bitcoin-Markttrends, indem sie den True Strength Index (TSI) berechnet und durch den RSI-Indikator gefilterte Long/Short-Positionen eingeht, um den algorithmischen Handel mit Bitcoin umzusetzen.
Der Kern dieser Strategie ist der True Strength Index (TSI). TSI misst die absolute Größe und Richtung der Preisänderungen, indem die prozentuale Preisänderung doppelt glättet wird, wodurch die absolute Stärke der Preisbewegungen nach oben und unten ermittelt wird.
Wenn TSI über seine Signallinie tsi2 überquert, wird ein langes Signal erzeugt. Wenn TSI unter tsi2 überquert, wird ein kurzes Signal erzeugt. Darüber hinaus filtert die Strategie TSI-Signale mit RSI - nur lange Signale, wenn der RSI über 50 ist, und kurze Signale, wenn der RSI unter 50 ist, um einige falsche Signale zu vermeiden.
Zu den Vorteilen dieser Strategie gehören:
Zu den Risiken dieser Strategie gehören:
Die Verzögerungsemission und der Filtereffekt können durch Lockerung der RSI-Filterregeln und Verkürzung der EMA-Perioden verringert werden.
Die Strategie kann in folgenden Aspekten optimiert werden:
Optimierung der TSI- und RSI-Parameter, um die beste Kombination zu finden, Abstimmung der langen/kurzen EMA-Perioden, RSI-Parameter usw.
Einführung weiterer technischer Indikatoren, um ein Multifaktormodell zu erstellen.
Optimieren Sie die Einstiegsregeln, um einen langen Abwärtstrend und einen kurzen Aufwärtstrend zu vermeiden.
Optimieren Sie Stop-Loss-Strategien wie Trailing-Stop-Loss, zeitbasierter Stop-Loss, Breakout-Stop-Loss usw.
Optimieren Sie die Ausstiegsregeln, um vorzeitige oder verspätete Ausstiege zu vermeiden.
Optimieren Sie Handelsprodukte, Handelssitzungen, um sich auf die effektivsten zu konzentrieren.
Diese Strategie identifiziert Bitcoin-Kurzzeittrends mit dem True Strength Index und filtert Signale mit RSI für den algorithmischen Bitcoin-Handel. Sie hat den Vorteil, Trends sensibel zu erfassen und Lärm zu filtern, hat aber auch einige nachlassende Probleme und Handelsrisiken. Mehrfache Optimierungen können die Strategieleistung weiter verbessern, um einen zuverlässigen Bitcoin-Handels-Expertenberater zu entwickeln.
/*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)