
Strategi ini diberi namaStrategi Indeks TSI untuk Jendela Ganti DayaIde inti dari strategi ini adalah untuk menggunakan jendela geser ganda EMA untuk melonggarkan perubahan harga, kemudian menggabungkan perubahan arah tren, untuk membangun indikator dinamika yang mencerminkan kekuatan jual beli di pasar, yaitu indikator TSI, dan menggunakannya sebagai sinyal perdagangan untuk membuat keputusan jual beli.
Strategi ini menggunakan dua jendela geser dengan dua indeks bergerak rata-rata untuk menghitung perubahan harga. Periode jendela luar lebih panjang, periode jendela dalam lebih pendek.
Pertama, perhitungkan perubahan satuan harga:
pc = change(price)
Kemudian, dengan menggunakan jendela geser ganda untuk meluruskan perubahan harga:
double_smoothed_pc = double_smooth(pc, long, short)
Perhitungan kembali nilai mutlak dari perubahan harga, juga menggunakan jendela geser ganda untuk smoothing ganda:
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
Akhirnya, dengan menggunakan perubahan harga setelah smoothing dibagi dengan nilai mutlak perubahan harga setelah smoothing, diperoleh indikator TSI yang mencerminkan kekuatan jual beli:
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
Dengan mengatur periode jendela yang panjang dan pendek dengan panjang yang berbeda, Anda dapat memfilter kebisingan pasar jangka pendek hingga tingkat tertentu, sehingga indikator TSI lebih baik mencerminkan kekuatan jual beli dalam tren jangka menengah dan panjang. Sebuah sinyal beli dihasilkan saat melewati rata-rata bergerak di atas indikator TSI; Sebuah sinyal jual dihasilkan saat melewati rata-rata bergerak di bawah indikator TSI.
Hal ini dapat dioptimalkan dengan menyesuaikan parameter periode jendela dan mempersingkat panjang rata-rata sinyal sesuai; ketika pasar bergoyang, perdagangan dapat dihentikan untuk mengendalikan risiko.
Strategi ini didasarkan pada perubahan harga ganda smoothing perhitungan TSI dinamika indikator yang mencerminkan kekuatan jual beli, dua jendela geser filter kebisingan, perubahan perubahan harga juga melakukan smoothing ganda, indikator lebih stabil dan dapat diandalkan; Menggunakan rasio standar, memiliki komparabilitas; Indikator arah dan intensitas perubahan harga komposit, sebagai sinyal berkualitas tinggi; Dengan parameter yang dapat dikontrol secara bebas sensitivitas indikator. Dalam hal pengoptimalan parameter dan risiko ke kontrol, sangat praktis untuk memilih strategi perdagangan kuantitatif.
/*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)