Strategi Martingale Momentum Rata-rata Pergerakan Ganda


Tanggal Pembuatan: 2023-12-25 17:01:28 Akhirnya memodifikasi: 2023-12-25 17:01:28
menyalin: 0 Jumlah klik: 564
1
fokus pada
1623
Pengikut

Strategi Martingale Momentum Rata-rata Pergerakan Ganda

Ringkasan

Strategi ini menggabungkan tiga indikator teknis yang berbeda, menghasilkan sinyal perdagangan dengan sistem garis ganda, dan menggunakan warna dan entitas garis K sebagai syarat penyaringan tambahan, sehingga membangun strategi perdagangan garis pendek yang lebih stabil dan efektif.

Prinsip Strategi

Seluruh strategi menggunakan kombinasi Brin Belt dan KC Channel untuk mengidentifikasi fase kompresi dan ekspansi pasar. Secara khusus, Brin Belt dianggap sebagai kompresi ketika berada di dalam KC Channel dan ekspansi ketika Brin Belt menembus KC Channel. Kompresi mewakili kemungkinan peningkatan fluktuasi dan pembalikan tren, yang menggunakan regresi linier sebagai indikator sinyal perdagangan utama.

Jika histogram regresi linier adalah positif (indicating uptrend), dan bar adalah garis K merah (indicating negative), dan entitas garis K lebih besar dari entitas rata-rata dari 30 garis K terakhir, sinyal kombinasi seperti itu lebih banyak; sebaliknya jika histogram regresi linier adalah negatif, bar adalah garis K hijau, dan entitas juga lebih besar, maka kosong.

Strategi ini juga memberikan latar belakang kompresi dan ekspansi yang dapat dilihat untuk membantu menilai tahap pasar.

Analisis Keunggulan Strategi

  • Menggunakan kombinasi dari beberapa indikator untuk memfilter sinyal palsu secara efektif
  • Kompresi merupakan titik balik yang memungkinkan untuk meningkatkan efektivitas strategi.
  • Filter entitas dapat menghindari kebocoran palsu dari gelombang kecil
  • Mudah untuk mendapatkan hasil yang lebih baik melalui optimasi parameter

Analisis Risiko Strategi

  • Regresi linier mudah memberi sinyal yang salah dan dapat menyebabkan kerugian
  • Blink dan KC channel menilai kompresi tidak bekerja dengan baik
  • Kondisi penyaringan terlalu ketat, mungkin akan kehilangan titik masuk yang lebih baik
  • Pengunduran diri mungkin lebih besar dan membutuhkan tingkat toleransi.

Risiko dapat dikurangi dengan menyesuaikan parameter indikator, mengoptimalkan kondisi penyaringan, dan sebagainya.

Arah optimasi strategi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Mencoba kombinasi parameter dan panjang yang berbeda untuk mencari parameter yang optimal
  2. Meningkatkan atau mengurangi kondisi filtrasi untuk menemukan tingkat filtrasi yang optimal
  3. Menggunakan metode pembelajaran mesin untuk mencari parameter optimal secara otomatis
  4. Hasil pengujian pada varietas tertentu, penyesuaian parameter berdasarkan varietas yang berbeda
  5. Meningkatkan strategi stop loss untuk mengendalikan kerugian tunggal

Meringkaskan

Strategi ini mengintegrasikan beberapa indikator, meningkatkan kondisi filter sambil mengidentifikasi peluang kompresi, untuk membentuk strategi garis pendek yang lebih kuat dan efisien. Efek yang lebih baik dapat diperoleh dengan mengoptimalkan parameter dan kondisi filter. Dan kerangka strategi ini fleksibel dan mudah disesuaikan untuk digunakan di berbagai varietas, layak untuk diuji dan dioptimalkan lebih lanjut.

Kode Sumber Strategi
/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2017

//@version=2
strategy(shorttitle = "Squeeze str 1.0", title="Noro's Squeeze Momentum Strategy v1.0", 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")
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
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(1900, defval = 1900, 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)

//EMA Body
body = abs(close - open)
emabody = ema(body, 30) / 3

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = trend == 1 and (bar == -1 or usecolor == false) and (body > emabody or usebody == false)
dn = trend == -1 and (bar == 1 or usecolor == false) and (body > emabody or usebody == false)

if up
    strategy.entry("Long", strategy.long)

if dn
    strategy.entry("Short", strategy.short)