
이 전략은 브린 밴드 개념에 기반하여 가격 통로의 상하 궤도를 설정하고 이를 통해 트렌드 판단과 거래 신호를 생성한다. 구체적으로, 가격의 평균 절대 오차를 통로 대역량으로 계산하고, 통로 중 궤도를 가격의 간단한 이동 평균으로 계산하고, 상하 궤도와 하하 궤도를 각각 1배 또는 2배의 통로 대역량으로 추가한다. 가격이 상하 궤도를 돌파 할 때 더하고, 하하 궤도를 돌파 할 때 비어있다.
이 전략은 다음과 같은 주요 내용들을 포함하고 있습니다.
가격의 중도선, 즉 가격의 간단한 이동 평균을 계산한다.
가격의 절대적 편차의 간단한 이동 평균을 통로 대역폭으로 계산한다.
중궤도와 대역폭에 따라 상하궤도를 결정한다. 상하궤도는 중궤도에 대역폭을 1배 또는 2배 더하고, 하하궤도는 중궤도에 대역폭을 1배 또는 2배 더한다.
다공 트렌드 판단 지표를 계산한다. 가격이 상반 2보다 높을 때 다공이며, 가격이 하반 2보다 낮을 때 공이다.
거래 신호를 생성한다. 가격이 상단 2로 올라갈 때 더하고, 하단 2로 내려갈 때 공백한다.
스톱 라인을 설정하십시오. 다중 스톱 라인은 하단 레일 1이며, 빈 스톱 라인은 상단 레일 1입니다.
자산 관리 요구 사항에 따라 포지션을 계산하십시오.
이 전략은 이동 평균 판단 트렌드, 부린 밴드 판단 오버 바이 오버 셀드, 돌파구 반전하는 아이디어를 결합한다. 두 개의 트랙 차이로 추세가 강하고 약한 것을 판단하면서 부린 밴드 회귀 중축의 기능을 발휘하며 전체적으로 안정적인 거래 시스템을 형성한다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
트렌드의 강점을 더 잘 판단할 수 있는 이중 레일 시스템을 사용한다.
브린은 강력한 회귀 기능을 가지고 있으며, 가짜 돌파구를 효과적으로 방지할 수 있다.
이중 경로 차이는 부린带回归中轴과 협력하여 보다 안정적인 거래 신호를 형성한다.
명확한 Exit Logic을 통해 위험을 통제할 수 있습니다.
포지션 설정은 자금 관리 요구 사항에 부합하여 슈퍼 레버리지를 방지한다.
전략은 명확하고, 이해하기 쉽고, 최적화하기 쉽습니다.
다양한 시장에 맞는 최적화 가능한 유연한 설정 파라미터
이 전략에는 몇 가지 위험도 있습니다.
부린 벨트 매개 변수 설정이 잘못되면 방벽 효과로 인해 가격을 효과적으로 추적할 수 없습니다.
이 두 개의 궤도의 차이는 트렌드 오판을 완전히 피할 수 없습니다.
하지만, 이 신호는 시장이 흔들리는 동안 더 많은 무효 신호를 생성할 수 있습니다.
허위 침입으로 인한 피해가 발생한다.
특정 시간 지연이 존재하고, 주기 전환점을 놓칠 수 있다.
이 경우, 이자율은 스톱포인트 제한을 받으며, 무한대로 추세를 추적할 수 없습니다.
대응 위험 관리 조치:
브린띠가 다른 주기들에 적응할 수 있도록 최적화 파라미터를 사용한다.
다른 지표들과 함께 확인해봐요.
포지션을 낮추고, 단편적 손실을 통제한다.
스톱로스를 최적화하여 수익률을 보장합니다.
적절히 줄여서 지연을 줄여주세요.
바람이 아오르면 아오르면 아오르면 아오르면
이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.
브린띠 변수를 최적화하여 가격을 더 잘 추적할 수 있다. 적응 변수를 도입할 수 있다.
EMA, DWMA 등과 같은 다른 이동 평균을 시도하십시오.
트렌드 필터링을 추가하고, 흔들리는 시장의 잘못된 거래를 피하십시오. MACD 등을 고려할 수 있습니다.
더 많은 트렌드 수익을 얻기 위해 적극적인 출전을 추가하십시오. 미세한 중지, 이동 중지, 출전 지표 등을 고려할 수 있습니다.
여러 시간 주기를 도입하여 조합하고, 다른 시기는 다른 시장 상황에 적합하다.
거래량 돌파구와 같은 추가 조건 논리를 추가하여 가짜 돌파구를 피하십시오.
이 경우, 부린 띠를 반전해서, 선로를 팔고, 선로를 살 수 있습니다.
파라미터 최적화 테스트를 수행하여 최적의 파라미터 조합을 찾습니다.
이 전략은 전체적인 아이디어는 명확하고, 강한 안정성을 가지고 있다. 또한, 개선할 여지가 있으며, 변수 최적화, 논리 최적화, 위험 관리 등의 측면에서 더욱 개선될 수 있으며, 매우 실용적인 양자 거래 전략이 될 수 있다. 이 전략은 양자 거래의 입문 전략에 대한 좋은 아이디어 참조를 제공한다.
/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © noro
//@version=4
strategy(title = "Noro's Bands Strategy", shorttitle = "Bands", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_value = 0.1)
//Sattings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
len = input(20, defval = 20, minval = 1, maxval = 1000, title = "Length")
src = input(ohlc4, title = "Source")
showbb = input(true, title = "Show Bands")
showof = input(true, title = "Show Offset")
showbg = input(false, title = "Show 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")
//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2
//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2
//Trend
trend = 0
trend := high > hd2 ? 1 : low < ld2 ? -1 : trend[1]
bgcol = showbg == false ? na : trend == 1 ? color.lime : color.red
bgcolor(bgcol, transp = 70)
//Lines
colo = showbb == false ? na : color.black
offset = showof ? 1 : 0
plot(hd2, color = colo, linewidth = 1, transp = 0, offset = offset, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, offset = offset, title = "High band 1")
plot(center, color = colo, linewidth = 1, transp = 0, offset = offset, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, offset = offset, title = "Low band 1")
plot(ld2, color = colo, linewidth = 1, transp = 0, offset = offset, title = "Low band 2")
//Trading
size = strategy.position_size
needstop = needlong == false or needshort == false
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if distsma > 0
strategy.entry("Long", strategy.long, lot, stop = hd2, when = truetime and needlong)
strategy.entry("Short", strategy.short, lot, stop = ld2, when = truetime and needshort)
sl = size > 0 ? ld2 : size < 0 ? hd2 : na
if size > 0 and needstop
strategy.exit("Stop Long", "Long", stop = sl)
if size < 0 and needstop
strategy.exit("Stop Short", "Short", stop = sl)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()
strategy.cancel("Long")
strategy.cancel("Short")