이 전략은 MACD 바 색상과 선형 회귀 지표를 결합하여 고주파 반전 거래를 달성하여 특히 단기 중재 및 헤지링에 적합합니다. 그것은 전형적인 시장 중립 전략에 속합니다.
이 전략은 다음과 같은 주요 구성 요소로 구성됩니다.
트렌드 판단 지표로 MACD 막대 색. MACD 막대 색이 녹색이면 상승 추세를 나타냅니다. 따라서 단편 주문을 할 수 없습니다. MACD 막대 색이 빨간색이면 하락 추세를 나타냅니다. 따라서 긴 주문을 할 수 없습니다.
주요 거래 신호 지표로 선형 회귀. 가격이 선형 회귀선을 넘을 때 길게, 가격이 선을 넘을 때 짧게 이동합니다.
PAC 채널은 선형 회귀선의 방향을 결정하기 위해 높은 가격, 낮은 가격 및 가까운 가격의 EMA에 의해 형성됩니다. 선형 회귀 방향이 채널 트렌드와 일치 할 때만 거래 신호가 생성됩니다.
EMA 89는 스톱 로스 라인입니다. 가격이 이 라인을 넘어선 후에 포지션을 닫습니다.
트레이드 신호의 논리는 다음과 같습니다.
긴 신호: 선형 회귀가 PAC 하단 대역 위에 넘어가고 선형 회귀가 기울어지고 MACD 바가 빨간색이 아닙니다.
짧은 신호: 선형 회귀가 PAC 상단역 아래로 넘어가고 선형 회귀가 아래로 기울이고 MACD 바가 초록색이 아닙니다.
출구 신호: 가격 EMA 89 아래로 넘어갑니다.
이 전략은 트렌드 판단과 주요 가격 수준을 결합하여 높은 빈도의 헤지 트레이딩을 달성합니다.
MACD 바 색상은 주요 트렌드를 결정하고 트렌드에 반대하는 거래를 피합니다.
선형 회귀는 부드럽고 소음을 필터합니다.
EMA 채널은 분명히 상승/하락 편향을 정의합니다.
스톱 로스는 수익을 극대화하기 위해 합리적으로 설정됩니다.
높은 거래 빈도는 알고리즘 거래에 적합합니다.
헤지 트레이드를 달성하고 범위 시장에서 이익을 얻을 수 있습니다.
선형 회귀와 채널의 매개 변수는 최적화가 필요합니다. 그렇지 않으면 실패 할 수 있습니다.
스톱 손실은 큰 가격 변동 중에 자주 발생 할 수 있습니다. 스톱 손실 범위를 확장하는 것을 고려 할 수 있습니다.
높은 거래 빈도는 거래 비용이 상당할 수 있다는 것을 의미합니다.
MACD는 약간의 지연을 가지고 있으며 단기 트렌드 반전을 놓칠 수 있습니다.
또한 EMA 채널은 변화하는 시장 조건에 적응하기 위해 지속적인 최적화가 필요합니다.
선형 회귀와 채널 매개 변수를 조정하여 다른 기기에 더 잘 맞게 조정합니다.
스톱 로스 범위를 넓히고 수익/위험 비율을 1 이상 유지합니다.
MACD 매개 변수를 최적화하여 더 많은 단기 신호를 포착합니다.
볼링거 밴드 같은 선형 회귀를 대체하는 다른 지표를 시도해보세요.
과도한 일방적 손실을 방지하기 위해 위치 크기를 추가합니다.
일부 거래 신호를 필터링하기 위해 RSI와 같은 다른 지표를 포함하십시오.
이 전략은 높은 주파수 헤지 트레이딩을 달성하기 위해 여러 기술적 지표를 결합합니다. 그것의 강점은 합리적인 리스크 통제로 단기 반전을 잡는 데 있으며, 범위 제한 시장 조건에 매우 적합합니다. 동시에 과도한 적합성을 방지하기 위해 특정 매개 변수 최적화 및 개선이 필요합니다. 적절한 관리로 매우 실용적인 높은 주파수 거래 전략이 될 수 있습니다.
/*backtest start: 2022-10-20 00:00:00 end: 2023-10-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 // strategy("Sonic R + Linear Reg + Kumo Cloud + Barcolor MACD", overlay=true,default_qty_value=10000,initial_capital=200,currency=currency.USD, pyramiding=1) EMA = input(defval=89, title="EMA Signal") HiLoLen = input(34, minval=2,title="High Low channel 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, EMA, 0) plot(linereg, color = orange, title = "Linear Regression Curve", style = line, linewidth = 1) //////ICHIMOKU///////// conversionPeriods = input(9), basePeriods = input(26, minval=1, title="Base Line") laggingSpan2Periods = input(52, minval=1, title="Lagging Span"), displacement = input(26, minval=1) donchian(len) => avg(lowest(len), highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods-1) p1 = plot(leadLine1, offset = displacement-1, color=gray,title="Senkou span A", transp=90) p2 = plot(leadLine2, offset = displacement-1, color=gray, title="Senkou span B", transp=90) fill(p1, p2, color = leadLine1 > leadLine2 ? green : red, title="Kumo Cloud") ///////////////// MACD BARCOLOR ///////////////////// fastLength = input(12) slowlength = input(26) MACDLength = input(9) MACD = ema(close, fastLength) - ema(close, slowlength) aMACD = ema(MACD, MACDLength) delta = MACD - aMACD hisup= iff(delta>delta[1] and delta>0, 1, iff(delta<delta[1], -1, nz(hisup[1], 0))) hisdown = iff(delta<delta[1] and delta<0, 1, iff(delta>delta[1], -1, nz(hisdown[1], 0))) barcolor(hisup==1 and MACD>0 ? lime: hisdown==1 and MACD<0 ? red : blue ) ///////////// SIGNAL /////////////// conbuy = iff(crossover(linereg,pacL) and rising(linereg,5), 1, iff(crossover(linereg,pacH) or (crossunder(linereg,pacL) and pacL<signalMA), -1, nz(conbuy[1], 0))) consell = iff(crossunder(linereg,pacH) and falling(linereg,5), 1, iff(crossunder(linereg,pacL) or (crossover(linereg,pacH) and pacH>signalMA), -1, nz(consell[1], 0))) golong= conbuy==1 and close>open and open<pacH and close>linereg and hisdown!=1 goshort= consell==1 and close<open and open>pacL and close<linereg and hisup!=1 if(golong) strategy.entry("Buy",strategy.long) if(goshort) strategy.entry("Sell",strategy.short) closelong= conbuy==-1 closeshort=consell==-1 if(closelong) strategy.close("Buy") if(closeshort) strategy.close("Sell") ////////////// TP and SL//. //SL = input(defval=200.00, title="Stop Loss Point", type=float, step=1) //rr= input(defval=0.1,title="Reward/Risk",type=float) //useTPandSL = input(defval = false, title = "Use exit order strategy?") //Stop = SL //Take=SL*rr //Q = 100 //if(useTPandSL) // strategy.exit("Out Long", "Buy", qty_percent=Q, profit= Take, loss=Stop) // strategy.exit("Out Short", "Sell", qty_percent=Q, profit= Take, loss=Stop)