Strategi ini mengidentifikasi tren pasar bitcoin dengan menghitung Indeks Kekuatan Sejati (TSI) dan memasukkan posisi panjang / pendek yang disaring oleh indikator RSI untuk menerapkan perdagangan algoritmik bitcoin.
Inti dari strategi ini adalah Indeks Kekuatan Sejati (TSI). TSI mengukur besar mutlak dan arah perubahan harga dengan meratakan dua kali persentase perubahan harga, sehingga mengidentifikasi kekuatan mutlak pergerakan harga naik dan turun.
Ketika TSI melintasi garis sinyalnya tsi2, sinyal panjang dihasilkan. Ketika TSI melintasi di bawah tsi2, sinyal pendek dihasilkan. Selain itu, strategi ini memfilter sinyal TSI dengan RSI - hanya mengambil sinyal panjang ketika RSI di atas 50 dan sinyal pendek ketika RSI di bawah 50, untuk menghindari beberapa sinyal palsu.
Keuntungan dari strategi ini meliputi:
Risiko dari strategi ini meliputi:
Emission yang tertinggal dan efek filter dapat dikurangi dengan melonggarkan aturan filter RSI dan memperpendek periode EMA. Strategi stop loss yang tepat harus digunakan untuk mengendalikan risiko per perdagangan secara ketat.
Strategi dapat dioptimalkan dalam aspek berikut:
Mengoptimalkan parameter TSI dan RSI untuk menemukan kombinasi terbaik.
Memperkenalkan lebih banyak indikator teknis untuk membangun model multifaktor. MA, KD dll dapat ditambahkan untuk memanfaatkan setiap indikator.
Optimalkan aturan masuk untuk menghindari panjang dalam tren menurun dan pendek dalam tren naik.
Mengoptimalkan strategi stop loss seperti trailing stop loss, stop loss berbasis waktu, stop loss breakout dll.
Mengoptimalkan aturan keluar untuk menghindari keluar prematur atau terlambat.
Mengoptimalkan produk perdagangan, sesi perdagangan untuk fokus pada yang paling efektif.
Strategi ini mengidentifikasi tren jangka pendek bitcoin dengan True Strength Index dan menyaring sinyal dengan RSI untuk perdagangan bitcoin algoritmik. Ini memiliki keuntungan menangkap tren secara sensitif dan menyaring kebisingan, tetapi juga memiliki beberapa masalah yang tertinggal dan risiko perdagangan. Optimasi multi-faceted dapat lebih meningkatkan kinerja strategi untuk mengembangkan penasihat ahli perdagangan bitcoin yang dapat diandalkan.
/*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)