Indikator STI Jendela Bergerak Berganda

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

img

I. Ringkasan Strategi

Strategi ini dinamakanStrategi Indikator STI Jendela Bergerak Berganda MomentumIdea teras strategi ini adalah untuk menggunakan jendela gelongsor EMA berganda untuk merata turun naik harga, dan kemudian menggabungkan perubahan arah trend untuk membina penunjuk momentum yang mencerminkan daya beli dan jual di pasaran, iaitu penunjuk TSI, dan menggunakannya sebagai isyarat perdagangan untuk membuat keputusan beli dan jual.

II. Prinsip Strategi

Strategi ini menggunakan dua tingkap bergeser rata-rata bergerak eksponensial ganda untuk mengira perubahan harga. Tempoh tingkap luar lebih lama dan tempoh tingkap dalaman lebih pendek. Dengan pelinciran berganda, sebahagian daripada rawak dalam data harga dikeluarkan.

Mula-mula mengira perubahan unit dalam harga:

pc = change(price)

Kemudian gunakan tingkap bergeser berganda untuk menggandakan perubahan harga:

double_smoothed_pc = double_smooth(pc, long, short)

Kemudian mengira nilai mutlak perubahan harga, yang juga dihaluskan dua kali menggunakan tingkap bergeser berganda:

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

Akhirnya, gunakan perubahan harga yang dihaluskan dibahagikan dengan perubahan harga mutlak yang dihaluskan untuk mendapatkan penunjuk TSI yang mencerminkan kuasa beli dan jual:

tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)

Dengan menetapkan panjang yang berbeza untuk tempoh tetingkap yang panjang dan pendek, kebisingan pasaran dalam jangka pendek boleh disaring sehingga tahap tertentu, supaya penunjuk TSI dapat mencerminkan lebih baik daya beli dan jual dalam trend jangka sederhana dan panjang. Apabila penunjuk TSI melintasi di atas purata bergerak, isyarat beli dihasilkan; Apabila penunjuk TSI jatuh di bawah purata bergerak, isyarat jual dihasilkan.

III. Kelebihan Strategi

  1. Menggunakan tingkap bergeser berganda berkesan menapis bunyi pasaran jangka pendek untuk tindak balas penunjuk yang lebih tepat
  2. Perubahan harga juga dihaluskan dua kali, menjadikan penunjuk TSI lebih stabil dan boleh dipercayai
  3. Nisbah perubahan harga terhadap perubahan harga mutlak digunakan, yang secara automatik standard dan lebih boleh dibandingkan
  4. Mengkaji secara komprehensif arah dan besar perubahan harga sebagai penunjuk kualiti untuk keputusan perdagangan
  5. Menetapkan parameter yang berbeza membolehkan penyesuaian sensitiviti penunjuk yang fleksibel

IV. Risiko Strategi

  1. Penunjuk STI boleh memberikan isyarat yang salah apabila pasaran mempunyai turun naik jangka panjang
  2. Tetapan parameter yang tidak betul juga boleh mempengaruhi kualiti penunjuk dan isyarat
  3. Walaupun terdapat tingkap bergeser berganda, penunjuk masih mempunyai beberapa sensitiviti terhadap bunyi pasaran jangka pendek
  4. Apabila perbezaan antara tempoh tetingkap yang panjang dan pendek terlalu besar, penunjuk dan isyarat mungkin tertinggal

Ia boleh dioptimumkan dengan menyesuaikan parameter tempoh tetingkap dan dengan tepat memendekkan panjang purata bergerak isyarat.

V. Arahan pengoptimuman

  1. Kombinasi ujian parameter tempoh tetingkap panjang dan pendek yang berbeza untuk mencari parameter optimum
  2. Cuba jenis purata bergerak lain, seperti purata bergerak bertimbang linear
  3. Meningkatkan kelancaran penunjuk dengan membina tingkap bergeser tiga atau berganda
  4. Gabungkan penunjuk tambahan lain untuk mengoptimumkan pemilihan titik beli / jual
  5. Tetapkan strategi stop loss untuk mengawal kerugian tunggal dengan ketat

VI. Ringkasan

Strategi ini mengira penunjuk momentum TSI yang mencerminkan kuasa beli dan jual berdasarkan kelancaran perubahan harga dua kali. Tingkap bergeser berganda menapis bunyi bising. Kelancaran perubahan harga dua kali juga menjadikan penunjuk lebih stabil dan boleh dipercayai. Nisbah standard menjadikannya dapat dibandingkan. Penunjuk menggabungkan arah dan magnitud perubahan harga sebagai sumber isyarat berkualiti tinggi. Melalui penyesuaian parameter, kepekaan penunjuk boleh dikawal secara bebas. Dengan pengoptimuman parameter dan kawalan risiko, ia adalah pilihan strategi perdagangan kuantitatif yang 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)

Lebih lanjut