가격 채널에 따라 가격 역전 전략

저자:차오장, 날짜: 2023-11-27 11:40:36
태그:

img

전반적인 설명

가격 채널에 의해 인도되는 가격 역전 전략은 가격 채널의 중심선을 계산하여 가격 변동의 트렌드 방향을 결정합니다. 가격이 채널 중심선에 접근 할 때 길고 짧은 신호를 생성합니다. 이 전략은 높은 확률의 거래 기회를 검색하기 위해 여러 필터 조건을 결합합니다.

전략 논리

이 전략의 핵심 지표는 가격 채널 중앙선이다. 가장 최근의 30 개의 촛불의 가장 높은 가격과 가장 낮은 가격의 평균으로 계산됩니다. 낮은 값이 중앙선보다 높을 때 상승 추세로 간주됩니다. 높은 값이 중앙선보다 낮을 때 하락 추세로 간주됩니다.

이 전략은 트렌드 배경이 변할 때만 거래 신호를 생성합니다. 즉, 상승 트렌드 배경에서는 촛불이 빨게 변할 때만 단축됩니다. 하락 트렌드 배경에서는 촛불이 녹색으로 변할 때만 길게됩니다.

또한, 전략은 또한 촛불체 필터와 가격 채널 바 필터라는 이중 필터 조건을 설정합니다. 신호는 촛불체 부피가 평균 값의 20% 이상일 때만 활성화되며 포지션을 열기 위해 필터 사이클 내에서 연속 트렌드 신호가 있어야합니다.

이점 분석

이 전략은 트렌드, 가치 영역 및 촛불 패턴을 결합하여 효율적인 반전 거래 전략입니다. 주요 장점은 다음과 같습니다.

  1. 주요 트렌드를 결정하기 위해 가격 채널을 사용하고 범위에 묶인 시장에 의해 오해를 피합니다.
  2. 가격 채널 중앙선 근처의 가격 수준을 선택합니다. 이것은 고전적인 낮은 구매-높은 판매 영역입니다.
  3. 촛불체와 채널 바 필터는 신호 품질을 높이고 잘못된 신호 비율을 줄입니다.
  4. 높은 지점을 추구하고 낮은 지점을 팔지 않기 위해 명백한 역전 지점에서만 포지션을 개척하십시오.

위험 과 해결책

이 전략의 주요 위험은 가격 반전 지점이 없어지고 신호를 불필요하게 기다리는 것에서 비롯됩니다. 다음과 같은 방법으로 최적화 될 수 있습니다.

  1. 필터 조건의 엄격성을 조정하고 미흡한 거래를 줄이기 위해 필터 표준을 줄이십시오.
  2. 트렌드 수익을 얻기 위해 트렌드 역전 초기 단계에서 포지션 크기를 증가시킵니다.
  3. 신호 강도를 판단하기 위해 다른 지표를 조합하고 필터에 수동적으로 개입합니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 가격 채널 기간, 채널 바 수 등과 같은 매개 변수를 최적화합니다.
  2. 손실이 일정 비율에 도달하면 손실을 멈추기 위한 스톱 로스 전략을 추가합니다.
  3. 필터 강도에 개입하기 위해 거래 부피를 결합하십시오. 예를 들어 거래 부피가 증폭되면 필터를 느리게하십시오.
  4. 단순한 필터를 대체하여 트렌드 반전 가능성을 판단하기 위해 기계 학습 모델을 추가합니다.

결론

가격 채널에 의해 인도되는 가격 반전 전략은 가격 채널을 통해 반전 지점을 결정하고 고품질 신호를 생성하기 위해 이중 필터 조건을 설정합니다. 매개 변수 조정 및 위험 통제를 기반으로 신뢰할 수있는 수치 전략입니다.


/*backtest
start: 2023-11-19 00:00:00
end: 2023-11-26 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's PriceChannel for D1 v1.0", shorttitle = "PriceChannel D1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
slowlen = input(30, defval = 30, minval = 2, maxval = 200, title = "PriceChannel Period")
pcbars = input(1, defval = 1, minval = 1, maxval = 20, title = "PriceChannel Bars")
usecol = input(true, "Use color-filter")
usebod = input(true, "Use body-filter")
needbg = input(false, defval = false, title = "Need trend 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")

src = close

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

//Trend
ub = low > center ? 1 : 0
db = high < center ? 1 : 0
trend = sma(ub, pcbars) == 1 ? 1 : sma(db, pcbars) == 1 ? -1 : trend[1]

//Body
body = abs(close - open)
abody = sma(body, 10)

//Signals
up = trend == 1 and (close < open or usecol == false) and (body > abody / 5 or usebod == false)
dn = trend == -1 and (close > open or usecol == false) and (body > abody / 5 or usebod == false)

//Lines
plot(center, color = blue, linewidth = 3, transp = 0, title = "PriceChannel Center")

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

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    

더 많은