노로의 가격 채널 전략 v1.1

저자:차오장, 날짜: 2023-10-24 10:59:38
태그:

img

전반적인 설명

노로의 가격 채널 전략 (Price Channel Strategy) v1.1은 가격 채널과 가격 방향 변화에 기반한 트렌드 트레이딩 전략이다. 이 전략은 가격 채널 지표와 빠른 RSI 지표를 결합하여 채널에서 가격 브레이크오웃 신호를 식별하고, 연속적인 빨간색/녹색 촛불 색상 역전 신호와 함께 긴/단기 포지션을 설정한다. 이 전략의 목표는 중장기 트렌드의 방향을 파악하는 동시에 단기 시장 변동의 잡음을 피하는 것이다.

전략 논리

이 전략은 먼저 중간 가격 채널을 구축하기 위해 특정 기간 동안 가장 높고 가장 낮은 가격의 평균을 계산합니다. 가격이 아래에서 채널을 넘어서면 긴 신호로 간주됩니다. 가격이 위에서 채널 아래로 떨어지면 짧은 신호로 간주됩니다.

동시에 전략은 두 가지 보조 규칙을 포함합니다. 빠른 RSI와 촛불 색상. 빠른 RSI가 25% 이하이면 과판 상태와 가격이 회복될 수 있음을 나타냅니다. 채널 위의 브레이크오웃과 함께 이것은 더 강한 긴 신호를 생성합니다. 반대로 빠른 RSI가 75% 이상이면 과반 상태와 가격이 떨어질 수 있음을 나타냅니다. 채널 아래의 파열과 함께 이것은 더 강한 짧은 신호를 생성합니다. 또한 전략은 최근 두 개의 촛불에서 촛불 색상의 변화를 추적합니다. 두 개의 연속적 빨간 촛불이 짧은 신호를 향상시키고 두 개의 연속적 녹색 촛불이 긴 신호를 향상시킵니다.

이 세 가지 신호 지표 를 결합 함 으로써, 전략 은 중장기 경향 을 효과적으로 식별 하고 그에 따라 위치 를 설정 할 수 있다. 위치 방향 이 최신 촛불 의 색상 과 충돌 할 때, 기존 위치 가 폐쇄 되는 경향 역전 으로 간주 된다.

장점

이 전략의 가장 큰 장점은 트렌드 방향을 결정하고 단기 시장 변동의 소음을 피하기 위해 여러 지표를 통합하는 것입니다. 구체적으로:

  1. 가격 채널은 트렌드 방향과 강도를 명확하게 파악합니다. 채널 밴드의 파업은 강력한 신호로 트렌드의 새로운 단계를 나타냅니다.

  2. 빠른 RSI 는 전환점 에서 추세 를 쫓는 것 을 피 하기 위해 과잉 구매/ 과잉 판매 상태 를 판단 합니다. 과잉 판매 상태 에서 구매 하고 과잉 구매 상태 에서 판매 하는 것 을 제안 합니다.

  3. 촛불 색상 검증은 추세 지속성을 확인합니다. 색상이 변경되면 포지션은 닫습니다.

  4. 이 전략은 단기 오스실레이션의 잘못된 신호를 피하는 채널을 깨는 두 개의 같은 색의 촛불을 연속으로 입력합니다.

  5. 간단한 평균 스톱 로스는 촛불 색상이 바뀌면 포지션을 닫아 손실을 효과적으로 최소화합니다.

위험성

이 전략에는 몇 가지 위험 요소가 있습니다.

  1. 부적절한 가격 채널 매개 변수 설정으로 인해 채널이 너무 넓거나 너무 좁거나 트렌드 변화 지점을 놓치거나 과도한 잘못된 신호를 생성할 수 있습니다.

  2. 부적절한 빠른 RSI 매개 변수 설정은 과잉 구매/ 과잉 판매 조건을 정확하게 식별하지 못할 수 있으며, 따라서 반전 기회를 놓칠 수 있습니다.

  3. 간단한 스톱 로스 메커니즘은 불안정한 트렌드에 너무 민감하여 과도한 포지션 개척 및 폐쇄를 유발할 수 있습니다.

  4. 가격 채널을 뚫고도 실제 추세의 지속을 예측할 수 없고 이로 인해 손실이 커질 수 있습니다.

  5. 그것은 갑자기 시장에 영향을 미치는 블랙 스완 사건에 적응할 수 없습니다. 엄청난 손실로 이어집니다.

더 나은 기회

전략 강화의 주요 기회는 다음과 같습니다.

  1. 가격 채널 매개 변수를 동적으로 조정하여 다른 기간과 시장의 변동성에 더 잘 적응합니다.

  2. 높은 변동성에서 감수성을 낮추고 낮은 변동성에서 감수성을 높이는 RSI 매개 변수를 조정하기 위한 변동성 조치를 포함합니다.

  3. 트렌드 변동성에 기반한 스톱 레벨을 가진 트래일링 스톱 메커니즘을 추가하여 과민적인 스톱 아웃을 피합니다.

  4. 허위 파업을 피하기 위해 파업 강도와 하락/승등 오차의 식별을 개선합니다.

  5. 높은 확률의 트렌드 전환점을 추정하고 입력 정확도를 향상시키기 위해 역사 데이터 훈련 모델을 통합합니다.

  6. 위험 조건에 따라 할당을 동적으로 조정하기 위해 포지션 사이징 모델을 최적화합니다.

결론

전체적으로 노로의 가격 채널 전략 v1.1은 단순하고 실용적인 트렌드 다음 전략이다. 중장기 트렌드 방향을 식별하기 위해 여러 지표를 통합하고 비교적 신중한 입시 규칙을 설정한다. 스톱 로스 메커니즘과 동적 매개 변수 조정과 같은 분야에서 추가 향상할 여지가 있다. 그러나 전반적인 논리는 간단하고 명확하며, 특히 초보자에게는 양적 거래에 쉽게 구현할 수 있다. 매개 변수 조정과 메커니즘 최적화로 안정적이고 신뢰할 수 있는 거래 시스템이 될 수 있다.


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Price Channel Strategy v1.1", shorttitle = "Price Channel str 1.1", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usecol = input(true, defval = true, title = "Use color strategy")
usersi = input(true, defval = true, title = "Use RSI strategy")
lev = input(1, defval = 1, minval = 1, maxval = 100, title = "leverage")
pch = input(30, defval = 30, minval = 2, maxval = 200, title = "Price Channel")
showcl = input(true, defval = true, title = "Show center-line")
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

//Price channel
lasthigh = highest(src, pch)
lastlow = lowest(src, pch)
center = (lasthigh + lastlow) / 2
trend = low > center ? 1 : high < center ? -1 : trend[1]
col = showcl ? blue : na
plot(center, color = col, linewidth = 2)

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
rbars = sma(bar, 2) == -1
gbars = sma(bar, 2) == 1

//Fast RSI
fastup = rma(max(change(src), 0), 2)
fastdown = rma(-min(change(src), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Signals
body = abs(close - open)
abody = sma(body, 10)
up1 = rbars and close > center and usecol
dn1 = gbars and close < center and usecol
up2 = fastrsi < 25 and close > center and usersi
dn2 = fastrsi > 75 and close < center and usersi
exit = (((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2)
lot = strategy.equity / close * lev

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

if dn1 or dn2
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : 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()

더 많은