Die Ressourcen sind geladen. Beförderung...

Kurzfristige Bitcoin-Handelsstrategie basierend auf dem True Strength Index

Schriftsteller:ChaoZhang, Datum: 2023-10-07 15:12:08
Tags:

Übersicht

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.

Strategie Logik

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.

  1. Berechnen Sie die prozentuale Preisänderung Pc
  2. Double smoothed Pc mit langfristiger EMA und kurzfristiger EMA, um double_smoothed_pc zu generieren
  3. Doppelglättet den absoluten Wert von Pc, um double_smoothed_abs_pc zu erzeugen
  4. Der TSI-Wert entspricht double_smoothed_pc geteilt durch double_smoothed_abs_pc multipliziert mit 100

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.

Analyse der Vorteile

Zu den Vorteilen dieser Strategie gehören:

  1. TSI kann die absolute Stärke und Richtung von Kursbewegungen erkennen und ist empfindlich bei der Erfassung von Trends.
  2. Die doppelte EMA erleichtert die Kursänderung und ist gegen Marktlärm und Spitzenbeständigkeit geeignet.
  3. Der RSI-Filter verhindert ferner falsche Trades aufgrund von Lärm.
  4. Der kurzfristige Handel ermöglicht es, vorübergehende Marktchancen zu nutzen.
  5. Die Strategie verfügt über einen großen Parameter-Tuning-Raum für die Optimierung, wie EMA-Perioden, RSI-Parameter usw.

Risikoanalyse

Zu den Risiken dieser Strategie gehören:

  1. Als Trendindikator hat die TSI eine verzögerte Ausgabe und kann die Preisumkehrpunkte verfehlen.
  2. Die RSI-Filterbedingungen sind zu streng und können einige Handelschancen verpassen.
  3. Der doppelte EMA-Filter kann auch einige gültige Signale ausfiltern.
  4. Eine hohe Häufigkeit des kurzfristigen Handels führt zu höheren Handelskosten und Risiken von Verschiebungen.

Die Verzögerungsemission und der Filtereffekt können durch Lockerung der RSI-Filterregeln und Verkürzung der EMA-Perioden verringert werden.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimierung der TSI- und RSI-Parameter, um die beste Kombination zu finden, Abstimmung der langen/kurzen EMA-Perioden, RSI-Parameter usw.

  2. Einführung weiterer technischer Indikatoren, um ein Multifaktormodell zu erstellen.

  3. Optimieren Sie die Einstiegsregeln, um einen langen Abwärtstrend und einen kurzen Aufwärtstrend zu vermeiden.

  4. Optimieren Sie Stop-Loss-Strategien wie Trailing-Stop-Loss, zeitbasierter Stop-Loss, Breakout-Stop-Loss usw.

  5. Optimieren Sie die Ausstiegsregeln, um vorzeitige oder verspätete Ausstiege zu vermeiden.

  6. Optimieren Sie Handelsprodukte, Handelssitzungen, um sich auf die effektivsten zu konzentrieren.

Schlussfolgerung

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)


Mehr