더블 B 지능형 추적 전략


생성 날짜: 2024-01-18 15:41:20 마지막으로 수정됨: 2024-01-18 15:41:20
복사: 2 클릭수: 539
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

더블 B 지능형 추적 전략

이 전략은 부린띠 지표를 사용하여 거래하는 전략이다. 이 전략은 부린띠 지표를 사용하여 가격의 급격한 변동이 있는 때를 식별하고 그에 따라 구매 또는 판매 결정을 내리는 것을 목표로 한다.

전략 원칙

이 전략은 부린띠의 상궤도, 중궤도, 하궤도선을 계산하여 현재 가격이 변동 영역에 있는지 판단하여 상궤도 또는 평궤도 시점을 판단한다. 가격이 상궤도에 가까워지면 다중극단 지역으로 간주하고, 전략은 평궤도를 판매한다. 가격이 하궤도에 가까워지면 공백 극단 지역으로 간주하고, 전략은 상궤도를 선택한다.

또한, 전략은 트렌드 반전 인자를 도입하여 반전 신호가 발생하면 대응 구매 또는 판매 결정을 유발합니다. 구체적으로, 전략 논리는 다음과 같습니다.

  1. 브린 띠의 상단, 중단, 하단 레일을 계산한다
  2. 반전 신호와 궤도를 돌파한가를 판단하기
    1. 트렌드 신호로 중간 궤도를 뚫고
    2. 상행 또는 하행 근처에서 역전 신호로
  3. 구매, 판매 또는 청산 명령

이 전략의 기본 거래 논리는 다음과 같습니다. 이 전략은 부린 밴드의 특성을 활용하여 추세와 반전 인자를 결합하여 변동이 심해지면 반전 지점을 잡으려고합니다.

전략적 이점

일반적인 이동 평균 전략에 비해 이 전략은 다음과 같은 장점이 있습니다.

  1. 더 민감하게 반응하여 가격의 급격한 변동에 대응할 수 있습니다.
  2. 추세와 역전 요소를 결합하여 조기 역전으로 인한 손실을 방지합니다.
  3. 필터 효과로 비변동 지역에서 무용지물이 되는 것을 방지합니다.
  4. 주요 트렌드 방향을 판단하여 거래 횟수를 줄이는 중간 경로
  5. 리버스 필터링 조건을 추가하여 잘못된 판단의 가능성을 낮췄습니다.

전체적으로 볼 때, 이 전략은 부린대와 가격의 판단을 잘 결합하여 합리적인 전환점에 거래하여 수익 수준을 보장하고 위험을 통제합니다.

위험과 최적화

그러나 이 전략에는 다음과 같은 위험도 있습니다.

  1. 부린 띠 파라미터가 잘못 설정되어 가격 변동을 제대로 파악할 수 없습니다.
  2. 역전 신호 판단이 정확하지 않거나, 역전이 누락되었거나, 역전 판단이 잘못되었습니다.
  3. 트렌드가 명확하지 않은 경우, 중도 신호는 좋지 않습니다.

이에 따라, 미래에는 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 다양한 품종의 변수에 따라 브린띠 변수를 최적화
  2. 기계학습 모델의 역전률을 높이는 것
  3. 트렌드가 불분명하다면 다른 지표로 전환하세요.
  4. 거래 신호를 필터링하기 위해 더 많은 가격 형태를 결합합니다.

요약하다

이 전략은 전반적으로 전형적인 브린 띠 거래 전략 템플릿이다. 그것은 브린 띠를 사용하여 쉽게 생성되는 더 많은 비효율 거래의 단점을 회피하고, 트렌드 반전 판단을 도입하여 효과적인 필터링 신호를 얻을 수 있으며, 이론적으로 더 나은 전략 성능을 얻을 수 있다. 그러나 파라미터 설정 및 신호 필터링 측면에서 추가적인 최적화 및 개선이 필요하기 때문에 전략 파라미터가 우수화되고 잘못된 판단의 가능성을 줄일 수 있다.

전략 소스 코드
/*backtest
start: 2023-12-18 00:00:00
end: 2024-01-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy("Noro's Bollinger Strategy v1.2", shorttitle = "Bollinger str 1.2", overlay = true )

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")

length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(2.0, defval = 2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")

uset = input(true, defval = true, title = "Use trend entry")
usect = input(true, defval = true, title = "Use counter-trend entry")

fromyear = input(2018, defval = 2018, 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
body = abs(close - open)
abody = ema(body, 30)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0 
up1 = bar == -1 and close >= basis and close < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset
dn1 = bar == 1 and close <= basis and close > lower and (close > strategy.position_avg_price or strategy.position_size == 0) and uset
up2 = close <= lower and usect
dn2 = close >= upper and usect
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open) and body > abody / 2

//Trading
if up1 or up2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if exit
    strategy.close_all()