이것은 Hull MA, 가격 채널, EMA 신호 및 선형 회귀를 결합 한 스윙 거래 전략입니다. 중장기 트렌드를 파악하기 위해 하울 MA를 사용하여 시장 트렌드 방향, 가격 채널 및 선형 회귀를 사용하여 바닥 영역, EMA 신호 및 시장 진입 시간을 식별합니다.
이 전략은 다음과 같은 주요 지표로 구성됩니다.
입력 논리:
롱 엔트리: Hull MA가 상향으로 향하고 상단보다 높은 가격, EMA 신호를 가로질러 선형 회귀 단기 입력: Hull MA가 아래로 향하고 가격이 하위 범위를 넘어선 경우, EMA 신호를 아래로 가로질러 선형 회귀
출구 논리:
긴 출구: 하위 계단 아래의 가격과 선형 회귀를 가로질러 짧은 출구: 상단 범위를 넘어서 선형 회귀를 가로질러
이 전략은 다음과 같은 장점을 가지고 있습니다.
또한 몇 가지 위험이 있습니다.
개선 사항:
이 전략은 헐 MA, 가격 채널, EMA 및 선형 회귀를 결합하여 완전한 중장기 스윙 거래 전략을 수립합니다. 단일 지표 전략에 비해 트렌드 및 역전을 파악하는 정확도를 크게 향상시킵니다. 그러나 여전히 기술적 분석 지식이 필요한 위험이 있습니다. 매개 변수 및 논리에 대한 추가 개선은 안정성을 향상시킬 수 있습니다.
/*backtest start: 2023-11-23 00:00:00 end: 2023-11-30 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Swing Hull/SonicR/EMA/Linear Regression Strategy", overlay=true) //Hull MA n=input(title="HullMA Period",defval=377) // n2ma=2*wma(close,round(n/2)) nma=wma(close,n) diff=n2ma-nma sqn=round(sqrt(n)) // n2ma1=2*wma(close[1],round(n/2)) nma1=wma(close[1],n) diff1=n2ma1-nma1 sqn1=round(sqrt(n)) // n1=wma(diff,sqn) n2=wma(diff1,sqn) condDown = n2 >= n1 condUp = condDown != true col =condUp ? lime : condDown ? red : yellow plot(n1,title="Hull MA", color=col,linewidth=3) // SonicR + Line reg EMA = input(defval=89, title="EMA Signal") HiLoLen = input(34, minval=2,title="High Low channel Length") lr = input(89, minval=2,title="Linear Regression Length") pacC = ema(close,HiLoLen) pacL = ema(low,HiLoLen) pacH = ema(high,HiLoLen) DODGERBLUE = #1E90FFFF // Plot the Price Action Channel (PAC) base on EMA high,low and close// L=plot(pacL, color=DODGERBLUE, linewidth=1, title="High PAC EMA",transp=90) H=plot(pacH, color=DODGERBLUE, linewidth=1, title="Low PAC EMA",transp=90) C=plot(pacC, color=DODGERBLUE, linewidth=2, title="Close PAC EMA",transp=80) //Moving Average// signalMA =ema(close,EMA) plot(signalMA,title="EMA Signal",color=black,linewidth=3,style=line) linereg = linreg(close, lr, 0) lineregf = linreg(close, HiLoLen, 0) cline=linereg>linereg[1]?green:red cline2= lineregf>lineregf[1]?green:red plot(linereg, color = cline, title = "Linear Regression Curve Slow", style = line, linewidth = 1) //plot(lineregf, color = cline2, title = "Linear Regression Curve Fast", style = line, linewidth = 1) longCondition = n1>n2 shortCondition = longCondition != true closeLong = lineregf-pacH>(pacH-pacL)*2 and close<lineregf and linereg>signalMA closeShort = pacL-lineregf>(pacH-pacL)*2 and close>lineregf and linereg<signalMA if shortCondition if (close[0] < signalMA[0] and close[1] > pacL[1] and linereg>pacL and close<n1 and pacL<n1) //cross entry strategy.entry("SHORT", strategy.short, comment="Short") strategy.close("SHORT", when=closeShort) //output logic if longCondition // swing condition if (close[0] > signalMA[0] and close[1] < pacH[1] and linereg<pacH and close>n1 and pacH>n1) //cross entry strategy.entry("LONG", strategy.long, comment="Long") strategy.close("LONG", when=closeLong) //output logic