
Strategi ini dinamakanStrategi Indeks TSIIdea teras strategi ini adalah untuk menggunakan pergerakan harga yang merata dalam tetingkap geser EMA ganda, dan kemudian menggabungkan perubahan arah trend, untuk membina penunjuk momentum yang mencerminkan kekuatan jual beli di pasaran, iaitu penunjuk TSI, dan menggunakannya sebagai isyarat perdagangan untuk membuat keputusan membeli dan menjual.
Strategi ini menggunakan dua tetingkap meluncur dua rata-rata bergerak indeks untuk mengira perubahan harga. Jendela luar adalah lebih lama, dan jendela dalam adalah lebih pendek.
Pertama, perhitungkan perubahan harga dalam satuan:
pc = change(price)
Kemudian gunakan tetingkap geser ganda untuk meluruskan pergerakan harga:
double_smoothed_pc = double_smooth(pc, long, short)
Hitung semula nilai mutlak perubahan harga, dengan menggunakan tetingkap gelongsor ganda untuk meluruskan:
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
Akhir sekali, perubahan harga selepas pelepasan yang digunakan dibahagikan dengan nilai mutlak perubahan harga selepas pelepasan, untuk mendapatkan TSI yang mencerminkan kekuatan jual beli:
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
Dengan menetapkan tempoh tingkap yang panjang dan pendek, bunyi pasaran jangka pendek dapat disaring ke tahap tertentu, menjadikan TSI lebih baik mencerminkan kekuatan jual beli dalam trend jangka panjang. TSI menghasilkan isyarat beli ketika melintasi purata bergeraknya di atas TSI dan menghasilkan isyarat jual ketika melintasi purata bergeraknya di bawah TSI.
Anda boleh mengoptimumkannya dengan menyesuaikan parameter tempoh tetingkap, memendekkan panjang purata isyarat dengan sewajarnya; anda boleh menghentikan perdagangan untuk mengawal risiko apabila pasaran bergolak.
Strategi ini berdasarkan perubahan harga berganda melonggarkan pengiraan TSI dinamika yang mencerminkan kekuatan jual beli, dua penapis tetingkap penapis bunyi, perubahan perubahan harga juga berganda melonggarkan, penunjuk lebih stabil dan boleh dipercayai; menggunakan nisbah standard, mempunyai perbandingan; arah dan kekuatan perubahan harga komposit penunjuk, sebagai isyarat berkualiti tinggi; sensitiviti penunjuk boleh dikawal secara bebas melalui penyesuaian parameter. Dalam kes pengoptimuman parameter dan kawalan risiko, pilihan strategi perdagangan kuantitatif sangat praktikal.
/*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)