Strategi tren berdasarkan penembusan saluran


Tanggal Pembuatan: 2023-09-15 12:02:10 Akhirnya memodifikasi: 2023-09-15 12:02:10
menyalin: 0 Jumlah klik: 739
1
fokus pada
1617
Pengikut

Artikel ini akan membahas strategi kuantitatif untuk melakukan perdagangan tren dengan memanfaatkan terobosan saluran. Strategi ini mengidentifikasi arah tren melalui saluran EMA, dan melakukan operasi reversal dengan putaran putaran putaran Brin.

  1. Prinsip Strategi

Strategi ini mencakup beberapa elemen utama:

  1. Mengatur EMA garis tengah dan memperluas saluran atas dan bawah sesuai dengan proporsi;

  2. Ketika harga menembus saluran atas, lakukan lebih banyak pelacakan; ketika harga menembus saluran bawah, lakukan pelacakan kosong;

  3. Ketika Brin bergetar, pertimbangkan untuk membalikkan tren dan lakukan operasi kebalikan.

  4. Atur stop loss untuk membatasi risiko kerugian.

  5. Parameter saluran dapat disesuaikan untuk menemukan kombinasi parameter terbaik.

Strategi ini menilai arah tren utama melalui saluran EMA, dan menggunakan Brin untuk mengidentifikasi peluang untuk membalikkan dan membentuk sistem tren yang lengkap.

Kedua, keunggulan strategi

Keuntungan terbesar dari strategi ini adalah bahwa indikator digunakan secara rasional, EMA menilai arus utama, dan Brin-band menangkap reversal.

Keuntungan lainnya adalah bahwa pengaturan Stop Loss bekerja secara langsung dan dapat mengendalikan risiko.

Akhirnya, parameter dapat disesuaikan dan dioptimalkan untuk varietas yang berbeda.

Ketiga, potensi risiko

Namun, ada beberapa masalah dengan strategi ini:

Pertama, ada keterlambatan pada EMA dan BRI.

Kedua, pertimbangan risiko kegagalan operasi reversal.

Terakhir, optimasi parameter membutuhkan banyak pekerjaan untuk menghindari overoptimisasi.

Empat isi, ringkasan

Artikel ini membahas strategi untuk melakukan perdagangan tren menggunakan EMA channel breakout. Strategi ini dapat mengidentifikasi tren utama dan melakukan operasi terbalik pada titik balik. Strategi ini dapat memperoleh keuntungan yang stabil melalui optimasi parameter, tetapi juga perlu untuk mencegah kesulitan optimasi dan keterlambatan indikator.

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

//@version=4
strategy(title="[mdeacey] EMA Percentage Channel + Bollinger Band Trending Strategy", shorttitle="[mdeacey] EMA% Channel + BB Trend Strategy", overlay=true)

//EMA 200

len = input(title="EMA Length", type=input.integer, defval=100)
srce = input(title="EMA Source", type=input.source, defval=close)

ema1= ema(srce,len)

percent = input(title="Inside Channel (%)", type=input.float, defval= 1) 
valuee = (percent*ema1)/100
upperbande = ema1 + valuee
lowerbande = ema1 - valuee
///2
percent2 = input(title="Outside Channel (%)", type=input.float, defval= 2) 
valuee2 = (percent2*ema1)/100
upperbande2 = ema1 + valuee2
lowerbande2 = ema1 - valuee2

plot(upperbande, title='Inside Channel Upperband', color=color.black, linewidth=1, style=plot.style_line )
plot(lowerbande, title='Inside Channel Lowerband', color=color.black, linewidth=1, style=plot.style_line )
plot(upperbande2, title='Outside Channel Upperband', color=color.black, linewidth=1, style=plot.style_line )
plot(lowerbande2, title='Outside Channel Lowerband', color=color.black, linewidth=1, style=plot.style_line )

length = input(20, minval=2)
src = input(close, title="Close price")
mult = input(2.0, title="Multiplier", minval=0.001, maxval=50)

MA2 = sma(src, length)
dev = mult * stdev(src, length)
upper = MA2 + dev
lower = MA2 - dev

signalColor = crossunder(close, upper) ? color.red : crossover(close, lower) ? color.green : color.white

barcolor(color=signalColor)
nopo= strategy.position_size==0

upperBand = plot(upper, title='Upper Bollinger Band', color=color.gray, linewidth=1)
lowerBand = plot(lower, title='Lower Bollinger Band', color=color.gray, linewidth=1)
fill(upperBand, lowerBand, title='Bollinger Band', color=color.black)
strategy.entry("Long",true,when = crossover(close,lower)  and close <lowerbande and close>lowerbande2)
strategy.close("Long",when = crossunder(close,lowerbande2))//crossunder(close,lowerbande) or crossunder(close,lowerbande2))

strategy.entry("Short",false,when = crossunder(close,upper)  and close >upperbande and close<upperbande2)
strategy.close("Short",when = crossover(close,upperbande2) )//crossover(close,upperbande) or crossover(close,upperbande2) )

//Inputs
atrPeriod = input(defval=14, title="ATR Period",group='ATR Stoploss', type=input.integer) // Adjust this to change the ATR calculation length
multiplierPeriod = input(defval=1.75, title="ATR Multiplier",group='ATR Stoploss',  type=input.float)// Adjust this to change the distance between your candles and the line

//ATR Calculation
pine_rma(x, y) =>
    alpha = y
    sum = 0.0
    sum := (x + (alpha - 1) * nz(sum[1])) / alpha

true_range() =>
    max(high - low, max(abs(high - close[1]), abs(low - close[1])))

//Long SL
plot(low - pine_rma(true_range() * multiplierPeriod, atrPeriod), "Long Stop", color=color.red, offset = 1)
// Short SL
plot(high +pine_rma(true_range() * multiplierPeriod, atrPeriod), "Short Stop", color=color.red, offset = 1)
strategy.exit("Exit","Long",limit=upper ,stop = low - pine_rma(true_range() * multiplierPeriod, atrPeriod)  )
strategy.exit("Exit","Short",limit=lower ,stop =high +pine_rma(true_range() * multiplierPeriod, atrPeriod)  )

/////////////////////new strategy
strategy.entry("Long",true,stop =upperbande  ,when = close <upperbande and  close[1] <upperbande and nopo )
strategy.close("Long",when = crossunder(close,upper) )//  and close <upperbande and close>lowerbande)

strategy.entry("Short",false,stop =lowerbande  ,when = close >lowerbande and close[1] >lowerbande and nopo )
strategy.close("Short",when = crossover(close, lower) )

strategy.exit("Exit","Long",stop = low - pine_rma(true_range() * multiplierPeriod, atrPeriod)  )
strategy.exit("Exit","Short",stop =high +pine_rma(true_range() * multiplierPeriod, atrPeriod)  )