가격 채널과 MACD를 기반으로 한 다중 시간 프레임 거래 전략


생성 날짜: 2023-12-08 15:15:37 마지막으로 수정됨: 2023-12-08 15:15:37
복사: 0 클릭수: 616
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

가격 채널과 MACD를 기반으로 한 다중 시간 프레임 거래 전략

개요

이 전략은 가격 통로 지표와 MACD 지표를 결합하여 여러 시간 프레임에 따라 트렌드 추적과 과매매를 판단하여 구매 결정을 수립합니다. 이 전략은 동시에 위험 관리를 위해 스톱 스톱을 결합합니다.

전략 원칙

가격 통로 지표는 최고 가격과 최저 가격의 EMA 평균선을 기반으로 가격 통로를 구성하고, 가격 돌파 통로로 추세를 판단한다. MACD 지표는 다공동세를 판단하며, 0축 위에는 다목 시장, 아래에는 공수 시장이다.

이 전략의 거래 신호는 다음과 같은 부분에서 나옵니다.

  1. MACD 히스토그램 반전 적색 엔터 다중, 반전 녹색 엔터 공백

  2. 가격이 통로의 바닥에 가깝고 MACD가 0축 아래에 있을 때 Enter 공백

  3. 가격이 채널의 꼭대기에 가깝고 MACD가 0축 위에 있을 때 Enter 다중

  4. MACD 상단 0축을 통과할 때 Enter 다중 머리, 하단 0축을 통과할 때 Enter 빈 머리

Exit 신호는 스톱 스톱 설정에서 나온다.

전략적 이점

  1. 여러 지표의 조합 검증, 가짜 돌파구를 피하기

  2. 다른 시간 프레임의 지표 조합으로 트렌드 방향을 더 확실하게 판단할 수 있습니다.

  3. 단독 손실을 효과적으로 제어하기 위한 상쇄 제약을 도입

전략적 위험

  1. 매개 변수 최적화 공간은 제한되어 있으며, 과도하게 최적화되기 쉽다.

  2. 가격 통로 파라미터를 너무 낮게 설정하면 큰 손실이 발생합니다.

  3. 스톱포인트가 너무 작아서 더 큰 손실을 입습니다.

해결책:

  1. 워크 포워드 방식을 사용해서 너무 최적화 된 변수를 피합니다.

  2. 가격 통로 변수를 적응 변수로 설정합니다.

  3. 변동률 스톱을 도입하여 스톱 거리를 동적으로 조정합니다.

전략 최적화 방향

  1. MACD 변수 모음 최적화

  2. 최적화 가격 통로 파라미터를 적응 계산

  3. 더 많은 필터링 조건을 추가하여 가짜 돌파구를 방지하고 효율성을 높여줍니다.

요약하다

이 전략은 가격 통로 지표와 MACD 지표의 장점을 통합하고, 합리적인 매개 변수 설정 및 최적화 공간이 넓으며, 트렌드 판단과 오버 구매 오버 판매 판단에서 효과적입니다. 손실 차단 메커니즘은 단일 손실 위험을 제어하고, 안정적인 거래 전략입니다. 이후 매개 변수 최적화, 필터 조건 추가, 손실 차단 메커니즘 최적화 등에서 개선 할 수 있습니다.

전략 소스 코드
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Sonic R + Barcolor MACD", overlay=true)
HiLoLen     = input(34, minval=2,title="High Low channel Length")
pacL        = ema(low,HiLoLen)
pacH        = ema(high,HiLoLen)
// Plot the Price Action Channel (PAC) base on EMA high,low and close//
L=plot(pacL, color=yellow, linewidth=1, title="High PAC EMA",transp=0)
H=plot(pacH, color=yellow, linewidth=1, title="Low PAC EMA",transp=0)
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 )
//SR
PeriodLookBack = input(34)
xHighest = highest(PeriodLookBack)
xLowest = lowest(PeriodLookBack)
Trend= close>xHighest[1] ? 1: close< xLowest[1]?-1 : nz(Trend[1],0)
// Strategy//
conbuy= hisdown==1 or MACD<0 ? 1: hisup[5]==1 and MACD[5]>0 ?-1 : nz(conbuy[1],0)
gobuy= conbuy==1 and close-open<2*(pacH-pacL) and high-close<(pacH-pacL)/2 and hisup==1 and MACD>0 and close-pacH<1.5*(pacH-pacL) and close>open and high-close<close-open and close>pacH
consell= hisup==1 or MACD>0 ?1 : hisdown[5]==1 and MACD[5]<0 ?-1 : nz(consell[1],0)
gosell= consell==1 and open-close<2*(pacH-pacL) and close-low<(pacH-pacL)/2 and hisdown==1 and MACD<0 and pacL-close<1.5*(pacH-pacL) and close<open and close-low<open-close and close<pacL
if(gobuy)
    strategy.entry("Buy",strategy.long)
if(gosell)
    strategy.entry("Sell",strategy.short)
//if(Trend==-1 and close<pacL)
//    strategy.close("Buy")
//if(Trend==1 and close>pacH)
//    strategy.close("Sell")
 ////////////// TP and SL//
SL = input(defval=100.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)