가격 채널 및 이동 평균 기반 트렌드 전략

저자:차오장, 날짜: 2024-02-06 09:46:23
태그:

img

전반적인 설명

이 전략은 중간선에서 가격의 오차를 계산하기 위해 가격 채널을 구성하고 신호를 필터하기 위해 이동 평균을 사용하여 트렌드를 식별하고 추적합니다. 거래 신호는 가격이 채널을 통과 할 때 생성됩니다. 전략은 트렌드 추적 및 브레이크업 특성을 모두 가지고 있습니다.

전략 논리

  1. 가격 채널 구축
  • 지난 1년 동안 가장 높은 최고와 가장 낮은 최저를 계산합니다
  • 중간선은 가장 높고 가장 낮고 가장 낮은 평균입니다.
  • 거리는 중간선에서 절대적인 가격의 오차입니다.
  • 상단과 하단 밴드를 얻기 위해 부드러운 거리
  1. 동향 방향 을 결정 하라
  • 가격이 하위 범위를 아래에있을 때, 하락 추세로 정의
  • 가격이 상단 범위를 넘으면 상승 추세로 정의
  1. 거래 신호를 생성
  • 상승 트렌드, 가격이 오픈 이하 또는 상단 범위를 넘어 갈 때 긴
  • 하락 트렌드, 가격이 오픈 상위 또는 하위 범위를 넘어서면 짧은

이점 분석

  1. 중·장기 동향을 포착합니다.
  2. 범위를 제한하는 시장에서 비효율적인 거래를 피하기 위해 브레이크아웃 신호와 결합
  3. 사용자 정의 가능한 매개 변수는 다양한 제품에 적합합니다.

위험 분석

  1. 변동 추세에서 더 작은 손실이 가능합니다.
  2. 부적절한 매개 변수 설정은 트렌드 반전을 놓칠 수 있습니다.
  3. 거래 빈도를 모니터링하여 과잉 거래를 방지합니다.

최적화 방향

  1. 필터 신호에 다른 표시기를 추가합니다.
  2. 가격 채널 매개 변수를 동적으로 조정
  3. 리스크 관리 최적화를 위해 스톱 로스를 포함

결론

이 전략은 전반적으로 중장기 트렌드를 효과적으로 추적하면서 트렌드 브레이크오웃을 통해 거래 신호를 생성하는 데 상당히 견고합니다. 더 많은 제품과 시장 환경에 전략을 조정하기 위해 매개 변수 최적화 및 신호 필터링을 통해 추가 개선이 가능합니다.


/*backtest
start: 2023-01-30 00:00:00
end: 2024-02-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Strategy v1.1", shorttitle = "NoroBands str 1.1", overlay=true)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
color = input(true, "Color")
needbb = input(true, defval = false, title = "Show Bands")
needbg = input(true, defval = false, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//dist
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma

//Trend
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)

//Signals
up = trend == 1 and ((close < open or color == false) or close < hd) ? 1 : 0
dn = trend == -1 and ((close > open or color == false) or close > ld) ? 1 : 0 

longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

더 많은