MACD 컬럼 색상과 선형 회귀를 기반으로 한 고주파 헤지 전략


생성 날짜: 2023-10-27 10:42:54 마지막으로 수정됨: 2023-10-27 10:42:54
복사: 0 클릭수: 555
1
집중하다
1166
수행원

MACD 컬럼 색상과 선형 회귀를 기반으로 한 고주파 헤지 전략

개요

이 전략은 MACD 기둥색과 선형 회귀 지표를 결합하여, 교묘한 조합을 통해 높은 주파수의 역거래를 실현합니다. 특히 짧은 라인 스쿼리 및 보호에 적합하며, 전형적인 시장 중립 전략에 속합니다.

전략 원칙

이 전략은 다음과 같은 부분들로 구성됩니다.

  1. MACD 기둥 색은 트렌드를 판단하는 지표이다. MACD 기둥 색이 녹색일 때, 상승 추세에 있음을 나타냅니다. 이 때 공표는 하지 않는다. MACD 기둥 색이 빨간 경우, 하락 추세에 있음을 나타냅니다. 이 때 더 많은 조를 하지 않는다.

  2. 선형 회귀는 중요한 거래 신호 지표이다. 가격이 아래에서 선형 회귀를 할 때, 더 많이 하고, 가격이 위에서 아래로 선형 회귀를 할 때, 공백을 한다.

  3. PAC 채널은 높은, 낮은, 종전 가격의 EMA로 구성되어 있으며, 선형 회귀의 방향을 판단하는 데 사용됩니다. 선형 회귀의 방향이 채널 내의 경향과 일치하는 경우에만 거래 신호가 생성됩니다.

  4. EMA 89은 스톱로즈 라인을 사용하며, 가격이 다시 이 라인을 통과하면 평점 스톱로즈가 사용된다.

거래 신호의 생성 논리는 다음과 같습니다.

다중 신호: 선형 회귀 상향으로 PAC 통로 하향 궤도를 통과하고 선형 회귀 상향 경향과 MACD 기둥 색이 빨간색이 아닌 허공 신호: 선형 회귀 하향으로 PAC 통로를 경유하고 선형 회귀 하향 트렌드이며 MACD 기둥 색이 녹색이 아닙니다.

스로드 탈퇴 신호: 가격 하향 EMA 89

이 전략은 트렌드 판단과 중요한 가격 수준을 결합하여, 높은 빈도의 헤지 거래를 실현한다.

우위 분석

  1. MACD 기둥 색깔을 사용하여 큰 트렌드를 판단하고 역동적인 거래를 피하십시오.

  2. 선형 회귀는 부드러우며, 일부 노이즈를 필터링할 수 있다.

  3. EMA가 형성된 통로는 명확하게 다공방향을 정의한다.

  4. 스톱 라인은 합리적으로 설정되어 최대 수익을 보장합니다.

  5. 높은 거래 주파수, 프로그램 거래에 적합한 높은 주파수 전략.

  6. 위기 상황에서도 수익을 낼 수 있는 헤지 거래를 실현한다.

위험 분석

  1. 선형 회귀와 통로 지표는 모두 특정 변수 최적화가 필요하며, 그렇지 않으면 실패할 수 있다.

  2. 큰 진동상태의 정지손실은 더 자주 유발될 수 있다. 적절히 완화된 정지손해범위를 사용할 수 있다.

  3. 트랜잭션이 많으면 수수료의 영향을 고려해야 합니다.

  4. MACD 지표는 다소 지연성이 있으며, 단기 트렌드 반전을 놓칠 수 있다.

  5. EMA 채널은 시장의 변화에 대응하기 위해 지속적으로 최적화되어야 합니다.

최적화 방향

  1. 선형 회귀와 통로 파라미터를 조정하여 지표가 다른 품종의 특성에 더 적합하도록 한다.

  2. 스톱 손실을 완화하면서 스톱 비율이 1보다 크도록 보장하십시오.

  3. MACD 파라미터를 최적화하여 더 많은 단기 신호를 잡을 수 있도록 한다.

  4. 다른 지표가 대안으로 선형 회귀를 시도해 보세요.

  5. 포지션 통제를 강화하여 일방적인 손실을 방지하십시오.

  6. 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)