Strategi Dagangan Jangka Pendek Bitcoin Berdasarkan Indeks Kekuatan Benar

Penulis:ChaoZhang, Tarikh: 2023-10-07 15:12:08
Tag:

Ringkasan

Strategi ini mengenal pasti trend pasaran bitcoin dengan mengira Indeks Kekuatan Benar (TSI) dan memasuki kedudukan panjang / pendek yang disaring oleh penunjuk RSI untuk melaksanakan perdagangan algoritma bitcoin.

Logika Strategi

Inti strategi ini adalah Indeks Kekuatan Benar (TSI). TSI mengukur besar mutlak dan arah perubahan harga dengan menggandakan perubahan harga peratusan, dengan itu mengenal pasti kekuatan mutlak pergerakan harga ke atas dan ke bawah.

  1. Mengira perubahan harga peratusan Pc
  2. Double smooth Pc menggunakan EMA jangka panjang dan EMA jangka pendek untuk menjana double_smoothed_pc
  3. Double smooth nilai mutlak Pc untuk menjana double_smoothed_abs_pc
  4. Nilai TSI sama dengan double_smoothed_pc dibahagikan dengan double_smoothed_abs_pc didarabkan dengan 100

Apabila TSI melintasi garis isyaratnya tsi2, isyarat panjang dihasilkan. Apabila TSI melintasi di bawah tsi2, isyarat pendek dihasilkan. Di samping itu, strategi menapis isyarat TSI dengan RSI - hanya mengambil isyarat panjang apabila RSI melebihi 50 dan isyarat pendek apabila RSI di bawah 50, untuk mengelakkan beberapa isyarat palsu.

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. TSI boleh mengesan kekuatan mutlak dan arah pergerakan harga, dan sensitif dalam menangkap trend.
  2. EMA berganda meratakan kadar perubahan harga dan tahan terhadap bunyi bising pasaran dan lonjakan.
  3. Penapis RSI juga mengelakkan perdagangan yang salah kerana bunyi bising.
  4. Perdagangan jangka pendek membolehkan untuk merebut peluang sementara di pasaran.
  5. Strategi ini mempunyai ruang penyesuaian parameter yang besar untuk pengoptimuman, seperti tempoh EMA, parameter RSI dll.

Analisis Risiko

Risiko strategi ini termasuk:

  1. Sebagai penunjuk trend, TSI mempunyai isu yang tertinggal dan mungkin terlepas titik pembalikan harga.
  2. Keadaan penapis RSI terlalu ketat dan mungkin kehilangan beberapa peluang perdagangan.
  3. Penapis EMA berganda juga boleh menapis beberapa isyarat yang sah.
  4. Kekerapan perdagangan jangka pendek yang tinggi membawa kepada kos perdagangan yang lebih tinggi dan risiko tergelincir.

Emisyen yang tertinggal dan kesan penapis boleh dikurangkan dengan melonggarkan peraturan penapis RSI dan memendekkan tempoh EMA. Strategi stop loss yang betul harus digunakan untuk mengawal risiko setiap perdagangan dengan ketat.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Mengoptimumkan parameter TSI dan RSI untuk mencari kombinasi terbaik.

  2. Memperkenalkan lebih banyak penunjuk teknikal untuk membina model pelbagai faktor. MA, KD dan lain-lain boleh ditambahkan untuk memanfaatkan setiap penunjuk.

  3. Mengoptimumkan peraturan kemasukan untuk mengelakkan panjang dalam trend menurun dan pendek dalam trend menaik.

  4. Mengoptimumkan strategi stop loss seperti trailing stop loss, stop loss berasaskan masa, stop loss breakout dan lain-lain.

  5. Mengoptimumkan peraturan keluar untuk mengelakkan keluar awal atau lewat. Penunjuk turun naik boleh membantu menentukan titik keluar yang betul.

  6. Mengoptimumkan produk perdagangan, sesi perdagangan untuk memberi tumpuan kepada yang paling berkesan.

Kesimpulan

Strategi ini mengenal pasti trend jangka pendek bitcoin dengan Indeks Kekuatan Benar dan menapis isyarat dengan RSI untuk perdagangan bitcoin algoritmik. Ia mempunyai kelebihan untuk menangkap trend dengan sensitif dan menapis bunyi bising, tetapi juga mempunyai beberapa masalah yang tertinggal dan risiko perdagangan. Pengoptimuman pelbagai aspek dapat meningkatkan prestasi strategi untuk membangunkan penasihat pakar perdagangan bitcoin yang boleh dipercayai.


/*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)


Lebih lanjut