
Noro의 가치 채널 전략 v1.1은 가치 채널과 가격 변화의 방향에 기반한 트렌드 거래 전략이다. 이 전략은 가치 채널 지표와 빠른 RSI 지표를 결합하여 가치 채널을 뚫는 K선 형태 신호를 식별하고, 연속적인 빨간색 녹색 K선 색상 반전 신호와 결합하여 다중 포지션을 구축한다. 이 전략은 중장선 트렌드의 방향을 포착하여 시장의 단기 변동으로 인해 혼란스럽지 않도록 하기 위한 것이다.
이 전략은 먼저 과거 일정 주기 동안의 최고 가격과 최저 가격의 평균을 계산하여 중간 가치 채널을 구성한다. 가격이 채널의 아래 방향에서 채널을 돌파하면 다단 신호로 간주되며, 가격이 채널의 위 방향에서 채널을 넘어서는 경우 공백 신호로 간주된다.
동시에, 이 전략은 두 가지 보조 판단 규칙을 결합합니다: 빠른 RSI 지표와 K선 색. 빠른 RSI가 25% 미만일 때, 과매 상태라고 간주되며, 가격이 부진 할 수 있습니다. 가격의 채널 궤도를 뚫고, 강력한 다중 머리 신호를 생성하는 경우. 반대로, 빠른 RSI가 75% 이상일 때, 과매 영역으로 간주되어, 가격이 떨어질 수 있습니다.
이 세 가지 신호 지표를 통합하면, 이 전략은 중장선 트렌드를 효과적으로 식별할 수 있고, 적시에 포지션을 구축할 수 있다. K선 색상과 반대되는 포지션 방향이 트렌드가 변했다고 판단할 때, 현재 포지션을 평행한다.
이 전략의 가장 큰 장점은 여러 지표가 결합되어 트렌드 방향을 판단하여 단기 시장 Noise에 의해 혼란을 피하는 것입니다. 구체적으로 다음과 같은 몇 가지 측면의 장점이 있습니다.
가치 채널 지표는 중장선 트렌드의 방향과 강도를 명확하게 식별할 수 있다. 가격이 채널을 뚫고 오르락 내리락하면, 트렌드가 새로운 단계로 들어간 것을 나타내며, 더 강한 신호를 생성한다.
빠른 RSI 지표는 과매매 현상을 판단하고, 전환점에 트렌드를 쫓는 것을 피합니다. 예를 들어 과매매 할 때 구매하고, 과매매 할 때 판매합니다.
K선 색상 판단은 트렌드의 지속성을 추가로 검증할 수 있으며, 색상이 변하면 현재 포지션을 닫습니다.
이 전략은 단기적인 흔들림에 착각되는 것을 피하기 위해 연속적으로 두 개의 같은 색의 K 선이 통로를 뚫을 때만 포지션을 열 수 있다.
평균 중지 방법은 간단하고 효과적이며, K선 색이 변하면 평정하여 손실이 확대되는 것을 최대한 방지한다.
이 전략에는 다음과 같은 위험도 있습니다.
가치 채널 파라미터가 잘못 설정되어 있고, 채널이 너무 넓거나 너무 좁아서 트렌드 전환점을 놓치거나 너무 많은 잘못된 신호를 생성합니다.
급속한 RSI 파라미터가 잘못 설정되어 있어서 과매매 현상을 정확하게 판단할 수 없어서 역전 기회를 놓치게 됩니다.
평균정지방법은 변동성 트렌드에서 너무 민감할 수 있으며, 포지션이 빈번하게 평평해질 수 있다.
가치 채널을 뚫고 나서 구체적인 운영 흐름을 판단할 수 없는 것은 손실을 확대할 수 있다.
이 사건으로 인해 많은 피해를 입게 될 것입니다.
이 전략에는 다음과 같은 주요 최적화 방향이 있습니다.
가치 채널의 매개 변수를 동적으로 조정하여 채널이 다른 주기 및 다른 시장의 변동에 더 잘 적응하도록합니다.
변동률 지표와 결합하여 RSI 파라미터를 수정하여 큰 변동이 있을 때 감수성을 낮추고 낮은 변동이 있을 때 감수성을 높인다.
모바일 스톱 메커니즘을 추가하여 트렌드 변동의 크기에 따라 스톱 위치를 설정하여 너무 민감하게 스톱하는 것을 피하십시오.
허위 돌파를 방지하기 위해 돌파의 강도와 허리 돌파 현상에 대한 판단을 높여라.
역사 데이터 훈련 판단 모델과 결합하여, 트렌드 전환이 매우 가능성이 높은 시점을 판단하여 포지션 개시 성공률을 높인다.
포지션 관리 전략을 최적화하고, 위험 상황에 따라 포지션 비율을 동적으로 조정한다.
Noro의 가치 경로 전략 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()