
Strategi ini menilai kompresi dan pelepasan pasar melalui beberapa indikator seperti Brin Belt, KC Channel, dan Warna Garis Garis, dan digabungkan dengan arah garis rata untuk menentukan tren pendirian, dan beroperasi pada saat berbalik arah tren.
Hitung Brin Belt. Brin Belt adalah rata-rata bergerak sederhana dari N hari harga close out, M kali dari N hari real amplitude dari upstream channel + KC, dan M kali dari N hari real amplitude dari downstream channel-KC.
Perhitungan KC channel. The KC channel adalah rata-rata bergerak sederhana dari N-day closing price di tengah orbit, M-fold dari real amplitude di tengah orbit + N-day di atas orbit, dan M-fold dari real amplitude di tengah orbit-N-day di bawah orbit.
Perhitungan kompresi dan pelepasan. Kompresi dilakukan ketika jalur atas Brin berada di bawah jalur atas KC dan jalur bawah Brin berada di atas jalur bawah KC. Pelepasan dilakukan ketika jalur atas Brin berada di atas jalur atas KC dan jalur bawah Brin berada di bawah jalur bawah KC.
Perhitungan tren establishment. Menggunakan nilai rata-rata dari harga close-out pada hari N - harga tertinggi dan terendah pada hari N sebagai input, perhitungan regresi linier pada hari N dengan nilai lebih besar dari 0 menunjukkan tren kenaikan establishment, dan lebih kecil dari 0 menunjukkan tren penurunan establishment.
Sinyal perdagangan: ketika pendirian naik, garis pendek dan pelepasan adalah sinyal multitasking; ketika pendirian turun, garis pendek dan kompresi adalah sinyal blanko.
Perhitungan indikator ganda, meningkatkan akurasi sinyal. Perhitungan pergerakan pasar, menghindari sinyal palsu, dikombinasikan dengan pita Brin, saluran KC dan kabel kabel.
Pertimbangan tren establishment, perdagangan berdasarkan tren. Gunakan penilaian establishment untuk menentukan tren utama, hindari operasi berlawanan.
Stop loss otomatis, pengendalian risiko. Stop loss otomatis ketika harga menyentuh garis stop loss.
Parameter jalur Brin dan KC tidak disetel dengan benar, yang dapat menyebabkan kesalahan penilaian kompresi dan pelepasan.
Establishment mungkin terlambat menilai tren, mungkin melewatkan titik balik tren.
Kejadian yang tidak terduga menyebabkan kerugian yang besar, tidak dapat dihentikan, dan ada risiko kerugian yang lebih besar.
Metode optimasi: menyesuaikan parameter jalur Brin dan KC, menggunakan penilaian tambahan indikator seperti ADX; memperbarui siklus rata-rata pendirian secara tepat waktu, mengurangi keterlambatan; menambahkan zona penyangga saat mengatur garis stop loss.
Tergabung dengan lebih banyak indikator teknis, meningkatkan akurasi sinyal gudang. Misalnya KDJ, MACD dll.
Mengoptimalkan parameter periodik pada garis rata-rata pendirian untuk menangkap tren baru.
Tambahkan indikator volume transaksi untuk menghindari terobosan palsu. Misalnya indikator arus energi, Akumulasi/Distribusi, dll.
Pertimbangkan siklus waktu yang berbeda, bedakan antara sinyal panjang dan pendek. Hindari terpotong.
Parameter optimasi AI, searched enumeration dan searched optimal combination. Reduced overmatch.
Strategi utama adalah: menggunakan Brin band untuk menentukan kompresi dan pelepasan pasar; membantu menggunakan tren pendirian untuk menentukan arah tren utama; di titik balik pelepasan kompresi untuk melakukan operasi ke arah anti-penetapan. Keunggulan strategi adalah sinyal yang akurat, ada stop loss, menghindari sinyal palsu. Strategi dapat dioptimalkan: kombinasi multi indikator, pengoptimalan parameter penilaian tren, penambahan indikator energi kuantitatif, penilaian periode waktu multi, AI mencari keunggulan, dll.
/*backtest
start: 2024-01-17 00:00:00
end: 2024-01-24 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2017
//@version=2
strategy(shorttitle = "Squeeze str 1.1", title="Noro's Squeeze Momentum Strategy v1.1", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
lev = input(1, defval = 1, minval = 1, maxval = 100, title = "leverage")
length = input(20, title="BB Length")
mult = input(2.0,title="BB MultFactor")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = true
mode2 = input(true, defval = true, title = "Mode 2")
usecolor = input(true, defval = true, title = "Use color of candle")
usebody = input(true, defval = true, title = "Use EMA Body")
needbg = input(false, defval = false, title = "Show trend background")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
// Calculate BB
source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev
// Calculate KC
ma = sma(source, lengthKC)
range = useTrueRange ? tr : (high - low)
rangema = sma(range, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC
sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz = (sqzOn == false) and (sqzOff == false)
val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)), lengthKC,0)
bcolor = iff( val > 0, iff( val > nz(val[1]), lime, green), iff( val < nz(val[1]), red, maroon))
scolor = noSqz ? blue : sqzOn ? black : gray
trend = val > 0 ? 1 : val < 0 ? -1 : 0
//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)
//Body
body = abs(close - open)
abody = sma(body, 10) / 3
//Indicator
bcol = iff( val > 0, iff( val > nz(val[1]), lime, green), iff( val < nz(val[1]), red, maroon))
scol = noSqz ? blue : sqzOn ? black : gray
plot(val, color=bcol, style=histogram, linewidth=4)
plot(0, color=scol, style=cross, linewidth=2)
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up1 = trend == 1 and (bar == -1 or usecolor == false) and (body > abody or usebody == false) and mode2 == false
dn1 = trend == -1 and (bar == 1 or usecolor == false) and (body > abody or usebody == false) and mode2 == false
up2 = trend == 1 and val < val[1] and mode2
dn2 = trend == -1 and val > val[1] and mode2
exit = (strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price) and mode2
//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * lev : lot[1]
if up1 or up2
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if dn1 or dn2
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
if exit
strategy.close_all()