Indikator TSI Jendela Bergerak Ganda Momentum

Penulis:ChaoZhang, Tanggal: 2024-01-08 11:20:35
Tag:

img

I. Ringkasan Strategi

Strategi ini disebutStrategi Indikator TSI Jendela Bergerak Ganda MomentumIde inti dari strategi ini adalah menggunakan jendela geser EMA ganda untuk meringankan fluktuasi harga, dan kemudian menggabungkan perubahan arah tren untuk membangun indikator momentum yang mencerminkan daya beli dan jual di pasar, yaitu indikator TSI, dan menggunakannya sebagai sinyal perdagangan untuk membuat keputusan beli dan jual.

II. Prinsip Strategi

Strategi ini menggunakan jendela geser ganda dengan rata-rata bergerak eksponensial ganda untuk menghitung perubahan harga. Periode jendela luar lebih lama dan periode jendela dalam lebih pendek.

Pertama, hitung perubahan harga satuan:

pc = change(price)

Kemudian gunakan jendela geser ganda untuk meluruskan dua kali perubahan harga:

double_smoothed_pc = double_smooth(pc, long, short)

Kemudian hitung nilai absolut dari perubahan harga, yang juga dihaluskan dua kali menggunakan jendela geser ganda:

double_smoothed_abs_pc = double_smooth(abs(pc), long, short)

Akhirnya, gunakan perubahan harga rata dibagi dengan perubahan harga absolut rata untuk mendapatkan indikator TSI yang mencerminkan daya beli dan penjualan:

tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)

Dengan menetapkan panjang yang berbeda dari periode jendela panjang dan pendek, kebisingan pasar dalam jangka pendek dapat disaring sampai batas tertentu, sehingga indikator TSI dapat lebih mencerminkan daya beli dan penjualan dalam tren jangka menengah dan jangka panjang.

III. Keuntungan Strategi

  1. Menggunakan jendela geser ganda secara efektif menyaring kebisingan pasar jangka pendek untuk reaksi indikator yang lebih akurat
  2. Perubahan harga juga dihaluskan dua kali, membuat indikator TSI lebih stabil dan dapat diandalkan
  3. Rasio perubahan harga terhadap perubahan harga absolut digunakan, yang secara otomatis standar dan lebih dapat dibandingkan
  4. Mempertimbangkan secara komprehensif arah dan besarnya perubahan harga sebagai indikator kualitas untuk keputusan perdagangan
  5. Menetapkan parameter yang berbeda memungkinkan penyesuaian sensitivitas indikator yang fleksibel

IV. Risiko Strategi

  1. Indikator TSI dapat memberikan sinyal yang salah ketika pasar mengalami fluktuasi jangka panjang
  2. Pengaturan parameter yang tidak benar juga dapat mempengaruhi kualitas indikator dan sinyal
  3. Meskipun ada jendela geser ganda, indikator masih memiliki beberapa sensitivitas terhadap kebisingan pasar jangka pendek
  4. Ketika perbedaan antara periode jendela panjang dan pendek terlalu besar, indikator dan sinyal mungkin tertinggal

Ini dapat dioptimalkan dengan menyesuaikan parameter periode jendela dan memperpendek panjang rata-rata bergerak sinyal dengan tepat.

V. Arahan Optimalisasi

  1. Kombinasi uji dari parameter periode jendela panjang dan pendek yang berbeda untuk menemukan parameter optimal
  2. Coba jenis lain dari rata-rata bergerak, seperti rata-rata bergerak tertimbang linier
  3. Meningkatkan kelancaran indikator dengan membangun jendela geser ganda atau ganda
  4. Menggabungkan indikator tambahan lainnya untuk mengoptimalkan pilihan titik beli/jual
  5. Tetapkan strategi stop loss untuk mengontrol kerugian tunggal secara ketat

VI. Ringkasan

Strategi ini menghitung indikator momentum TSI yang mencerminkan daya beli dan jual berdasarkan perataan ganda perubahan harga. Jendela geser ganda menyaring kebisingan. Perataan ganda variasi perubahan harga juga membuat indikator lebih stabil dan dapat diandalkan. Rasio standar membuatnya dapat dibandingkan. Indikator ini menggabungkan arah dan magnitudo perubahan harga sebagai sumber sinyal berkualitas tinggi. Melalui penyesuaian parameter, sensitivitas indikator dapat dikendalikan secara bebas. Dengan optimasi parameter dan kontrol risiko, ini adalah pilihan strategi perdagangan kuantitatif yang sangat praktis.


/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("True Strength Indicator BTCUSD 2H", shorttitle="TSI BTCUSD 2H",initial_capital=1000, commission_value=0.2, 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="120" )
long = input(title="Long Length",  defval=25)
short = input(title="Short Length",  defval=13)
signal = input(title="Signal Length",  defval=13)

length = input(title="Период",  defval=300)

FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2017, title = "From Year", minval = 2017)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"

price = request.security(syminfo.tickerid,resCustom,close)


double_smooth(src, long, short) =>
    fist_smooth = ema(src, long)
    ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
tsi2=ema(tsi_value, signal)
plot(tsi_value, color=lime,linewidth=2)
plot(tsi2, color=red,linewidth=2)

hline(30, title="Zero")
hline(50, title="Zero",linewidth=2)
hline(70, title="Zero")

buy = crossover(tsi_value, tsi2)
sell = crossunder(tsi_value, tsi2)

if(buy)
    strategy.entry("BUY", strategy.long, when = window())
if(sell)
    strategy.entry("SELL", strategy.short, when = window()) 

//greentsi =tsi_value
//redtsi = tsi2

//bgcolor( greentsi>redtsi and rsiserie > 50 ? lime : na, transp=90)
//bgcolor( greentsi<redtsi and rsiserie < 50 ? 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 ? lime : na, transp=60)
//bgcolor( rsiserie < 30  ? red : na, transp=60)

Lebih banyak