
이 전략은 브린 띠 지표에 기반한 동적인 돌파 거래 전략을 설계했다. K선 엔티티 필터링과 컬러 필터링의 조건을 결합하여 브린 띠 하단 궤도 인근에서 돌파 엔트리 기회를 찾았다. 엑시트는 엔티티 필터링을 기반으로했다. 이 전략은 자동으로 포지션 수와 위험을 관리했다.
먼저, 부린역의 기점과 하위 궤도를 낮은 지점으로 계산해보자:
src = low
basis = sma(src, length)
dev = mult * stdev(src, length)
lower = basis - dev
여기서 src는 낮은 점, length는 계산 주기,basis는 평균선,dev는 표준 편차,lower은 하향선이다.
일반적으로 mult은 2로 설정되어, 하차는 표준차량이다.
정책은 두 가지 필터링 조건을 추가합니다.
K선 엔티티 필터 개체 크기의 nbody와 그 평균 abody를 이용하여 판단하면, nbody가 abody의 절반보다 크면 거래 신호가 발생한다.
색상 필터 K선 종료 ([[close > open]]) 에 추가 작업을 하지 마십시오. 이것은 hbox 헤드의 가짜 돌파구를 피하기 위한 것입니다.
다음 조건이 충족되면 복수 신호가 발생한다:
low < lower // 价格突破下轨
close < open or usecol == false // 色彩过滤
nbody > abody / 2 or usebod == false // 实体过滤
개체 크기가 다시 평균의 절반보다 크면 평준상태가 발생합니다:
close > open and nbody > abody / 2
전략은 거래 수를 자동으로 계산하여 지수 성장을 달성합니다.
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
연, 달, 날짜 조건으로 가입하고, 지정된 날짜 내에서만 거래하도록 제한합니다.
when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))
브린은 역동적인 지지 영역으로, 시장 추세에 따른 반발 기회를 잡을 수 있습니다.
K선 엔티티와 색상의 판단을 결합하여, 가짜 돌파구를 효과적으로 필터링한다.
포지션은 지수적으로 100%로 증가하고, 자동으로 위험을 관리한다.
날짜 범위를 설정하여 특정 시간대의 시장 변동률으로 인한 위험을 줄입니다.
시장이 긴 황소 시장일 때, 부린 벨트 중철과 상철이 빠르게 올라가고, 무고 시간이 너무 길어질 수 있다.
트렌드 지표 판단과 결합하여 중장선이 황소 시장으로 판단될 때 전략을 일시 중지하여 공백이 너무 길지 않도록 할 수 있다.
하계 궤도 돌파 후 회귀 및 하계 궤도 재실험이 발생할 수 있는 상황.
스톱 라인을 추가하여 지탱 아래의 일정 비율의 스톱 을 추가하거나 실패의 판단 논리를 추가하여 빠른 스톱 을 추가합니다.
재검토 데이터에 따라 합리적인 지원 아래의 중지 손실 위치를 설정하십시오.
엔티티 필터의 abody 사이클을 조정하고, COLOR 필터의 사용 등. 최적의 파라미터 조합을 찾는다.
중·장기선 추세 판단을 높이고, 불시장이라고 판단할 때 전략을 중단한다. 공백 시간을 줄인다.
이 전략은 브린 밴드 지원과 결합하여, 실물 필터, 컬러 필터 및 돌파 거래의 전략 논리를 설계하여 높은 확률의 반발 기회를 찾습니다. 실제 응용에서는, 피드백 결과에 따라 변수를 지속적으로 최적화하고, 스톱로스 및 트렌드 판단 모듈을 추가하여 위험을 제어하여 더 나은 성과를 얻을 수 있습니다.
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Noro's Wizard Strategy v1.0", shorttitle = "Wizard str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)
//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
length = input(25, defval = 25, minval = 1, maxval = 200, title = "BB Period")
usebod = input(false, defval = false, title = "Use Body-Filter")
usecol = input(false, defval = false, title = "Use Color-Filter")
showar = input(false, defval = false, title = "Show Arrows")
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")
//Bollinger
src = low
mult = 2
basis = sma(src, length)
dev = mult * stdev(src, length)
lower = basis - dev
plot(lower, color = lime, linewidth = 3, title="Bottom Line")
//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 2 or usebod == false
//Signals
up1 = low < lower and (close < open or usecol == false) and body
exit = close > open and nbody > abody / 2
//Arrows
needar = up1 and showar
plotarrow(needar ? 1 : na)
//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up1
if strategy.position_size < 0
strategy.close_all()
strategy.entry("Long", strategy.long, lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
strategy.close_all()