노로 트렌드 추적 거래 전략은 가격 채널, RSI 및 실물 필터를 기반으로 한 간단한 트렌드 추적 전략이다. 가격 채널 방향을 큰 트렌드로 인식하고, RSI를 사용하여 오버 바이 오버 소드를 사용하여 입문하고, 실물 필터와 함께 거래 신호를 발산한다. 이 전략은 주식 지수, 외환 등 지속적인 트렌드가있는 품종에 적합하다.
이 전략의 주요 거래 논리는 다음과 같습니다.
가격 채널을 적용하여 큰 트렌드 방향을 판단한다. 일정 주기 동안의 최고 가격과 최저 가격을 계산하여 채널을 형성한다. 가격은 채널의 위쪽에 호불호가 있고, 아래쪽에 하향이 있다.
RSI 지표는 오버 바이 오버 소드 영역을 판단하고, 진입 시점을 보조한다. RSI 60 이상은 오버 바이 영역이고, 40 이하는 오버 소드 영역이다.
엔티티 필터는 마지막 신호를 냅니다. 특정 크기 이상의 엔티티에서만 거래하고, 잡음을 피합니다.
큰 트렌드, RSI 신호와 실물 필터와 결합하여 진입한다. 다목적 트렌드 하에서 보이스 신호가 진입하면 더 많이, 공수 트렌드 하에서 하위 신호가 진입하면 공백한다.
트렌드를 직관적으로 판단할 수 있는 백그라운드 색상 옵션을 제공합니다.
맞춤형 전략 거래 기간은 선택된 기간에만 거래한다.
이 전략은 다중 지표 공명으로, 대 트렌드가 방향을 결정하고, RSI가 시점을 결정하고, 실물 필터가 질을 결정하여, 비교적 안정적인 트렌드 추적 전략을 형성한다.
이 전략의 주요 장점은 다음과 같습니다.
가격 통로는 직관적으로 큰 트렌드 방향을 판단하고, 单反折을 피한다.
RSI 지표는 오버 바이와 오버 세일의 입문 시점을 효과적으로 식별합니다.
실체 필터는 신호의 질을 높이고, 잡음이나 가짜 신호에 속지 않도록 한다.
다중 지표 필터링 및 확인, 의사 결정의 정확성 향상.
간단한 지표를 사용하여 곡선 최적화 위험을 줄여줍니다.
커스터마이징 트레이딩 시간대는 큰 트렌드 방향에 따라 유연하게 적용된다.
사용이 용이하며, 초보자도 쉽게 사용할 수 있다.
배경 색상 선택이 제공되며, 명확한 시각적 효과를 제공합니다.
이 전략에는 위험도 있습니다.
“대 추세가 잘못 판단한 위험, 가격 통로가 실패할 수 있다”.
RSI는 잘못된 신호를 발산할 수 있고, 오버 바이 오버 세이드가 정확하지 않다고 판단할 수 있습니다.
엔티티 필터링은 정상적인 신호의 위험을 배제하고 거래 기회를 놓치게 한다.
하지만, 그 중에서도 큰 추세에 따른 심도 있는 조정이 있을 것이다.
최적화 위험, 변수 설정이 잘못되면 과대 최적화가 발생할 수 있다.
포지션 리스크, 기본 풀 포지션 거래가 손실을 확대할 수 있다.
품종 선택 위험, 이 전략은 트렌드 품종에만 적합하다.
거래 기간은 위험을 설정하고, 합리적인 설정이 필요합니다.
이 전략은 다음과 같은 몇 가지 최적화를 고려할 수 있습니다.
단편적 손실을 통제하기 위해 손실을 막는 전략을 추가하십시오.
특정 거래 품종의 특성에 맞게 최적화 매개 변수
포지션 관리 모듈을 추가하여 트렌드에 따라 포지션을 조정합니다.
손실 확산을 방지하기 위해 철회 제어를 설정할 수 있습니다.
수량과 가격 지표와 결합하여 신호 검증을 수행하여 정확도를 높인다.
기계 학습과 같은 기술을 추가하여 파라미터 최적화를 수행하십시오.
거래 품종 분류 최적화, 개인화 전략 수립.
거래 시간대의 설정 논리를 최적화하여 더 유연하게 만듭니다.
노로 트렌드 추적 전략은 가격 통로, RSI 및 실물 필터를 통합하여 간단한 실용적인 트렌드 추적 전략을 형성한다. 그것은 역전 거래를 피하기 위해 순차적으로 할 수 있다. 매개 변수 최적화, 위험 제어 등의 개선을 통해 이 전략은 지속 가능한 수익성있는 트렌드 거래 전략이 될 전망이다.
/*backtest
start: 2023-08-25 00:00:00
end: 2023-09-24 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = "Noro's TrendMaster Strategy v1.0", shorttitle = "TrendMaster str 1.0", 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")
len = input(21, defval = 20, minval = 2, maxval = 200, title = "MA Period")
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")
//PriceChannel 1
lasthigh = highest(close, len)
lastlow = lowest(close, len)
center = (lasthigh + lastlow) / 2
//Trend
trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend[1]
//Bars
bar = close > open ? 1 : close < open ? -1 : 0
//Fast RSI
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
rsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
//Body filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 2
//Signals
up1 = trend == 1 and rsi < 60 and (strategy.position_avg_price > close or strategy.position_size <= 0) and body
dn1 = trend == -1 and rsi > 40 and (strategy.position_avg_price < close or strategy.position_size >= 0) and body
//Lines
plot(center, color = blue, linewidth = 3, transp = 0, title = "MA")
//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)
//Trading
if up1
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 dn1
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()