
Strategi ini digunakan untuk menentukan arah tren pasar dengan menghitung indeks moving average (EMA) dari dua periode yang berbeda. Dengan asumsi bahwa arah tren telah ditentukan, kombinasi dengan adaptasi diri untuk menemukan peluang overbought dan oversold yang dibawa oleh Brin, memungkinkan untuk melakukan perdagangan yang mengikuti tren.
Perhitungan 200 siklus dan 30 siklus EMA, 200 EMA lebih besar dari 30 EMA dinilai sebagai tren garis panjang ke atas, jika tidak dinilai sebagai tren garis panjang ke bawah.
Setelah menentukan arah tren, perhitungkan garis dasar, garis atas, dan garis bawah dari pita Brin. Garis dasar menggunakan periode yang dapat dikonfigurasi (seperti 8 siklus), dan lebar pita menggunakan periode yang sama dengan harga tertinggi dan terendah yang sangat berbeda (seperti 1.3 dan 1.1).
Pada garis panjang ke atas, ketika harga turun dari bawah ke atas, dinilai sebagai titik beli; pada garis panjang ke bawah, ketika harga naik dari atas ke bawah, dinilai sebagai titik jual.
Untuk memfilter kebocoran palsu, periksa apakah tingkat perubahan garis K di depan kurang dari nilai yang dapat dikonfigurasi (misalnya 3%), dan periksa apakah jarak antara jalur atas dan bawah Brin lebih besar dari jarak yang dapat dikonfigurasi (misalnya 2,2%).
Setelah membuka posisi, Anda dapat mengatur stop loss (misalnya 3%) dan stop loss (misalnya 10%), untuk mengunci keuntungan.
Dua EMA menilai tren utama, menghindari posisi yang tidak teratur ketika tren utama tidak jelas.
Adaptive Brinks mengatur titik buka posisi, dan secara otomatis menyesuaikan parameter bandwidth sesuai dengan tren, untuk mengunci tren lebih lanjut.
Kecepatan dan bandwidth minimum mekanisme pemeriksaan efektif memfilter penembusan palsu.
Pengaturan stop loss yang masuk akal dan risiko penguncian keuntungan yang terkendali.
EMA ganda tidak dapat menentukan titik balik dengan tepat, dan mungkin kehilangan peluang untuk mengubah tren.
Parameter Brin-band yang tidak tepat dapat menyebabkan sinyal palsu.
Stop loss yang tetap sulit untuk beradaptasi dengan pergerakan pasar.
Mengidentifikasi titik-titik pergeseran tren utama dalam kombinasi dengan indikator lain untuk menilai tren.
Menggunakan metode penyesuaian dinamis parameter Brin.
Setting Conditional Single Stop Stop Loss, menyesuaikan garis stop loss sesuai dengan kondisi tertentu.
Strategi ini menggunakan metode yang terintegrasi untuk mengamati tren utama dan menemukan peluang Bollinger Bands dengan metode EMA ganda. Keunggulan strategi ini adalah pengaturan yang masuk akal untuk membuka posisi dan menghentikan kondisi yang dapat mengunci keuntungan tren secara efektif. Namun, ada juga risiko tertentu, seperti ketidakmampuan untuk menilai titik balik dan parameter Bollinger Bands yang tidak tepat.
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//////////////////////////////////////////////////////////////////////
// Component Code Start
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2039, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop
strategy("Custom Band Strategy", overlay=true)
source = close //종가 기준
//추세 조건 설정
emaLong = ema(source, input(200, minval=0))
emaShort = ema(source, input(30, minval=0))
trend = if emaShort>=emaLong
1
else
-1
plot(emaLong, color=red, transp=0)
plot(emaShort, color=blue, transp=0)
//BB 계산(default 14/3.2)
length = input(8, minval=1)
basis = sma(source, length)
plot(basis, color=green, transp=0)
max=highest(abs(source-basis), length)
factor1 = input(1.3, minval=0.5)
factor2 = input(1.1, minval=0.5)
upper = if trend==1
basis + max*factor1
else
basis + max*factor2
lower = if trend==-1
basis - max*factor1
else
basis - max*factor2
plot1 = plot(upper)
plot2 = plot(lower)
fill(plot1, plot2, transp=80, color=green)
//밴드 이탈 후 재진입 조건 설정
cross_over = (low<=lower and close>=lower) or crossover(close,lower)
cross_under = (high>=upper and close<=upper) or crossunder(close,upper)
//변동율 계산
maxCandle=highest(abs(open-close), length)
roc = abs(open-close)/open*100
changerate = input(3, minval=0.0)
//수익률 계산
value = abs(strategy.position_size)*strategy.position_avg_price
roe = strategy.openprofit/value * 100
expRoeL = (upper-lower)/lower*100
expRoeS = (upper-lower)/upper*100
exp = input(2.2, minval=0.0)
target = input(10, minval=0.0)
stop = input(-3, minval=-10.0)
strategy.close_all(when=roc>=changerate and testPeriod())
strategy.close_all(when=roe>=target and testPeriod())
strategy.close_all(when=roe<=stop and testPeriod())
plotchar(crossover(close,lower) and crossunder(close,upper),color=blue, transp=0, text="cross")
plotchar(roc>=changerate,color=red, transp=0, text="roc")
plotchar(roe>=target,color=blue, transp=0, text="target")
plotchar(roe<=stop,color=green, transp=0, text="stop")
minroe = input(2, minval=0.0)
strategy.close_all(when=cross_under and roe>minroe and testPeriod())
strategy.entry("BBandLE", strategy.long, stop=source, oca_name="BollingerBands", comment="BBandLE", when=(cross_over) and trend==1 and roc<changerate and expRoeL>exp and source>emaLong and strategy.position_size==0 and testPeriod()) //trend==1 and
//else
strategy.close_all(when=cross_over and roe>minroe and testPeriod())
strategy.entry("BBandSE", strategy.short, stop=source, oca_name="BollingerBands", comment="BBandSE", when=(cross_under) and trend==-1 and roc<changerate and expRoeS>exp and source<emaLong and strategy.position_size==0 and testPeriod()) //trend==-1 and