Strategi Mencari Momentum


Tarikh penciptaan: 2024-01-25 12:34:59 Akhirnya diubah suai: 2024-01-25 12:34:59
Salin: 1 Bilangan klik: 559
1
fokus pada
1617
Pengikut

Strategi Mencari Momentum

Gambaran keseluruhan

Strategi ini menilai penekanan dan pelepasan pasaran melalui pelbagai petunjuk seperti Brin Belt, KC Channel dan Warna Garis Garis, dan digabungkan dengan arah garis rata untuk menentukan trend penubuhan, dan beroperasi apabila arah trend bertukar.

Prinsip Strategi

  1. Hitung purata bergerak sederhana pada harga penutupan N hari di dalam zon Brin, M kali gelombang sebenar pada hari-hari N pada saluran medium + KC di atas zon Brin, dan M kali gelombang sebenar pada hari-hari N di saluran medium-KC di bawah zon Brin.

  2. Hitungkan KC Channel. Di tengah-tengah KC Channel adalah purata bergerak sederhana untuk harga penutupan N hari, di atas adalah M kali ganda untuk di tengah-tengah + N hari gelombang sebenar, di bawah adalah M kali ganda untuk di tengah-tengah - N hari gelombang sebenar.

  3. Periksa pemampatan dan pelepasan. Dikompresi apabila jalur atas Burin berada di bawah jalur atas KC dan jalur bawah Burin berada di atas jalur bawah KC. Dilepaskan apabila jalur atas Burin berada di atas jalur atas KC dan jalur bawah Burin berada di bawah jalur bawah KC.

  4. Mengambil nilai purata harga penutupan pada hari N - harga tertinggi dan harga terendah pada hari N sebagai input, pengiraan regresi linear pada hari N, nilai yang lebih besar daripada 0 menunjukkan trend kenaikan penubuhan, dan yang lebih kecil daripada 0 menunjukkan trend penurunan penubuhan.

  5. Isyarat dagangan: apabila penubuhan naik, garis pendek dan pelepasan sebagai sinyal banyak; apabila penubuhan turun, garis pendek dan pemampatan sebagai sinyal kosong.

Kelebihan Strategik

  1. Keputusan pelbagai petunjuk, meningkatkan ketepatan isyarat. Bergabung dengan pita Brin, saluran KC dan kabel untuk menilai pergerakan pasaran, mengelakkan isyarat palsu.

  2. Pertimbangan trend penubuhan, perdagangan mengikut trend. Menggunakan penilaian penubuhan untuk trend utama, mengelakkan operasi berlawanan arah.

  3. Penutupan automatik, mengawal risiko. Apabila harga menyentuh garis penutupan, penutupan kedudukan yang sama secara automatik.

Risiko Strategik

  1. Parameter jalur Brin dan KC yang tidak betul boleh menyebabkan kesalahan pengesanan pemampatan dan pelepasan.

  2. “Penggunaan sistem ini adalah salah satu cara yang paling berkesan untuk menjana pendapatan”, kata beliau.

  3. Kejadian yang tidak dijangka menyebabkan kerugian yang besar dan tidak dapat dihentikan, dan terdapat risiko kerugian yang besar.

Kaedah pengoptimuman: menyesuaikan parameter jalur Brin dan KC, menggunakan penilaian tambahan seperti ADX; mengemas kini kitaran garis rata-rata penubuhan tepat pada masanya, mengurangkan ketinggalan; memasukkan zon penampan apabila menetapkan garis hentian.

Arah pengoptimuman strategi

  1. Gabungan dengan lebih banyak petunjuk teknikal, meningkatkan ketepatan isyarat gudang. Contohnya KDJ, MACD dan sebagainya.

  2. Mengoptimumkan parameter kitaran pada garis rata-rata penubuhan, menjadikannya lebih mudah untuk menangkap trend baru.

  3. Menambah petunjuk jumlah urus niaga untuk mengelakkan penembusan palsu, seperti indikator arus tenaga, pengumpulan / pengedaran, dan sebagainya.

  4. Pertimbangan jangka masa yang berlainan, membezakan antara isyarat garis panjang dan garis pendek.

  5. Parameter pengoptimuman AI, penjumlahan yang dicari dan kombinasi parameter terbaik yang dicari.

ringkaskan

Strategi utama adalah: menggunakan Brinband untuk menentukan pemampatan dan pelepasan pasaran; membantu menggunakan trend penubuhan untuk menentukan arah trend utama; pada titik peralihan pelepasan pemampatan untuk melakukan operasi ke arah penubuhan balik. Kelebihan strategi adalah isyarat yang tepat, berhenti rugi, mengelakkan isyarat palsu. Strategi boleh dioptimumkan: kombinasi pelbagai indikator, pengoptimuman parameter penilaian trend, penambahan penunjuk tenaga kuantitatif, penilaian pelbagai tempoh masa, AI mencari kelebihan, dan sebagainya.

Kod sumber strategi
/*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()