Strategi perdagangan kuantitatif berdasarkan indikator momentum kompresi LazyBear


Tanggal Pembuatan: 2024-02-05 14:48:01 Akhirnya memodifikasi: 2024-02-05 14:48:01
menyalin: 0 Jumlah klik: 1698
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif berdasarkan indikator momentum kompresi LazyBear

Ringkasan

Strategi ini didasarkan pada indikator momentum kompresi LazyBear, dengan penambahan filter momentum, perubahan sumber data, dan penambahan sistem manajemen risiko, periode waktu yang dapat ditelusuri kembali, yang dirancang untuk menangkap ledakan harga setelah kompresi yang berfluktuasi.

Prinsip Strategi

Strategi ini menggunakan indikator Brin Belt dan indikator Keltner Channel untuk menghitung saluran harga, yang dianggap sebagai sinyal peningkatan volatilitas ketika harga menembus saluran. Ini dikombinasikan dengan indikator kompresi LazyBear, yang menggunakan metode regresi linier untuk menentukan arah pergerakan harga.

Strategi ini menambahkan filter momentum, yang hanya akan mengirimkan sinyal perdagangan ketika nilai absolut momentum melebihi nilai terendah. Ketika kompresi volatilitas (pengetatan dalam saluran) dan filter momentum melewati, strategi menilai arah tren, melakukan over atau kosong.

Analisis Keunggulan

Strategi ini mengintegrasikan berbagai penilaian indikator, lebih komprehensif; Menggabungkan mekanisme manajemen risiko, dapat membatasi kerugian tunggal; Dapat mengetahui arah tren harga setelah kompresi volatilitas; Parameter dapat disesuaikan, beradaptasi kuat.

Analisis risiko

Risiko utama adalah: False breakout menyebabkan kesalahan penilaian; parameter yang tidak tepat, gagal untuk berbalik pada waktunya; Stop loss diperluas oleh breakout menyebabkan kerugian. Anda dapat mengoptimalkan parameter, menyesuaikan parameter manajemen risiko, memilih varietas yang tepat dan waktu perdagangan untuk mengurangi risiko ini.

Arah optimasi

Anda dapat mempertimbangkan untuk memfilter sinyal dengan indikator lain, seperti volume perdagangan; menyesuaikan nilai terendah volume dinamis dengan lebih tepat; mengatur stop loss untuk mengurangi risiko; menguji lebih banyak varietas data. Pengoptimalan ini dapat membuat strategi lebih stabil dan lebih umum.

Meringkaskan

Strategi ini lebih komprehensif menilai tren harga dan volatilitas, tingkat integrasi yang tinggi, langkah-langkah pengendalian risiko yang lebih baik, dapat dilakukan perbaikan lebih lanjut sesuai dengan arah optimasi, dan memiliki kemampuan adaptasi yang kuat terhadap ledakan harga setelah menangkap kompresi volatilitas.

Kode Sumber Strategi
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4
// Strategy based on LazyBear Squeeze Momentum Indicator
// © Bitduke
// All scripts: https://www.tradingview.com/u/Bitduke/#published-scripts

strategy(shorttitle="SMS", title="Squeeze Momentum Strategy", overlay=false )

length = input(12, title="BB Length")
mult = input(2.0, title="BB MultFactor")
lengthKC = input(16, title="KC Length")
mult_kc = input(1.5, title="KC MultFactor")


//FILTERS
useMomAverage = input(false, title="Filter for Momenutum value", type=input.bool)
MomentumMin = input(20, title="Min for momentum")

// Calculate BB
src = ohlc4

ma_1 = sma(src, length)
ma_2 = sma(src, lengthKC)
range_ma = sma(high - low, lengthKC)

dev = mult * stdev(src, length)

upper_bb = ma_1 + dev
lower_bb = ma_1 - dev

upper_kc = ma_2 + range_ma * mult_kc
lower_kc = ma_2 - range_ma * mult_kc

sqz_on = lower_bb > lower_kc and upper_bb < upper_kc
sqz_off = lower_bb < lower_kc and upper_bb > upper_kc
no_sqz = sqz_on == false and sqz_off == false

val = linreg(src - avg(avg(highest(hl2, lengthKC), lowest(low, lengthKC)), sma(hl2, lengthKC)), lengthKC, 0)

bcolor = iff(val > 0, iff(val > nz(val[1]), color.lime, color.green), iff(val < nz(val[1]), color.red, color.maroon))
scolor = no_sqz ? color.blue : sqz_on ? color.black : color.aqua
plot(val, color=bcolor, style=plot.style_histogram, linewidth=4)
plot(0, color=scolor, style=plot.style_cross, linewidth=2)

//LOGIC
//momentum filter
filterMom = useMomAverage ? abs(val) > MomentumMin / 100000 ? true : false : true

//standard condition
longCondition = scolor[1] != color.aqua and scolor == color.aqua and bcolor == color.lime and filterMom
exitLongCondition = bcolor == color.green
shortCondition = scolor[1] != color.aqua and scolor == color.aqua and bcolor == color.red and filterMom
exitShortCondition = bcolor == color.maroon

// Risk Management Sysyem
stop_loss = input(defval = 600, title="Stop Loss", minval = 0)
take_profit = input(defval = 1000, title="Take Profit", minval = 0)
trailing_stop = input(defval = 20, title="Trailing Stop", minval = 0)
// If the zero value is set for stop loss, take profit or trailing stop, then the function is disabled
s_loss = stop_loss >= 1 ? stop_loss : na
tk_profit = take_profit >= 1 ? take_profit : na
tr_stop = trailing_stop >= 1 ? trailing_stop : na


//STRATEGY
strategy.entry("SQ_Long", strategy.long, when=longCondition)
strategy.exit("Exit Long", from_entry = "SQ_Long", profit = take_profit, trail_points = trailing_stop, loss = s_loss)
strategy.close("SQ_Long", exitLongCondition)

strategy.entry("SQ_Short", strategy.short, when=shortCondition)
strategy.exit("Exit Short", from_entry = "SQ_Short", profit = take_profit, trail_points = trailing_stop, loss = s_loss )
strategy.close("SQ_Short", when=exitShortCondition)