
다중 필터링 선택 브린 띠 거래 전략은 브린 띠 지표, 평균선 지표, RSI 지표 및 K 선 그래프 특성을 결합하여 다중 조건 필터링을 수행하여 조건이 충족되면 거래 신호를 발산하는 양적 거래 전략입니다. 이것은 전형적인 트렌드 추적 전략으로 중장선의 가격 추세 변동을 포착하여 수익을 얻습니다.
이 전략은 주로 브린 밴드, 평균선 및 RSI 세 가지 지표를 사용합니다. 그 중 브린 밴드 중간선은 가격의 n 일 간단한 이동 평균선이며, 상단선과 하단선은 각각 중간선 + 2 배 표준 차이와 중간선 -2 배 표준 차이입니다. RSI 지표는 일정 기간 동안의 상승과 하락을 기반으로 계산 된 범위의 0 ~ 100 사이의 값입니다.
이 전략은 다음의 세 가지 주요 조건에 의해 거래 신호를 생성합니다.
(1) 브린이 하향으로 돌파&K선 엔티티가 역거부한다. 종전 가격에서 하향으로 돌파되고 K선 엔티티의 색이 현재 트렌드 방향과 반대되는 경우 더 많이 한다.
(2) 브린이 궤도에 오르면 & K선 엔티티가 반박한다. 종전 가격 아래로 궤도에 오르면, K선 엔티티의 색이 현재 트렌드 방향과 반대되는 경우, 공백한다.
(3) K선 개체 회전 △ K선 개체 색 회전과 포지션 지향이 일치하면 평점 △
이 외에도, 이 정책은 입시를 엄격히 통제하기 위해 일선 필터, K선 엔티티 필터, RSI 필터 등의 보조 조건을 설정한다.
브린 대역을 조정하고, 엄격하게 스톱로스를 제어함으로써 위험을 줄일 수 있다.
이 전략은 전체적으로 전형적인 중장선 트렌드 추적 전략이다. 다중 조건 필터링, 입출장 시기를 엄격하게 제어하고, 트렌드 거래 방식을 채택함으로써 불필요한 거래를 줄일 수 있으며, 시장의 중장선 트렌드를 포착할 수 있다. 이 전략의 최적화 공간은 매우 넓으며, 매개 변수를 조정하고, 더 많은 보조 도구를 추가하는 등의 수단으로 전략의 안정성과 수익성을 더욱 향상시킬 수 있다.
/*backtest
start: 2023-12-17 00:00:00
end: 2024-01-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=3
strategy("Noro's Bollinger Strategy v1.4", shorttitle = "Bollinger str 1.4", overlay = true )
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(1, defval = 1, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")
usebf = input(true, defval = true, title = "Use body-filter")
usecf = input(true, defval = true, title = "Use color-filter")
userf = input(true, defval = true, title = "Use RSI-filter")
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")
showbands = input(true, defval = true, title = "Show Bollinger Bands")
//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
//Lines
col = showbands ? black : na
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)
//Body filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 2 or usebf == false
//Color filter
bar = close > open ? 1 : close < open ? -1 : 0
gb = bar == 1 or usecf == false
rb = bar == -1 or usecf == false
//RSI Filter
fastup = rma(max(change(close), 0), 7)
fastdown = rma(-min(change(close), 0), 7)
rsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
ursi = rsi > 70 or userf == false
drsi = rsi < 30 or userf == false
//Signals
up = close <= lower and rb and body and drsi and (close < strategy.position_avg_price or strategy.position_size == 0)
dn = close >= upper and gb and body and ursi and (close > strategy.position_avg_price or strategy.position_size == 0)
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body
//Trading
if up
strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
if dn
strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
if exit
strategy.close_all()