이 전략은 빠른 EMA 라인 (3), 느린 EMA 라인 (11) 및 느린 EMA 라인 (18), MACD의 제로 라인 크로스오버와 결합된 크로스오버 상황을 기반으로 입출구를 결정합니다. 이 전략은 거래 결정을 위해 이중 EMA와 MACD 지표의 조합을 활용하는 동적 전략입니다.
이 전략은 주로 두 가지 기술 분석 지표에 기초합니다.
EMA 크로스오버: 빠른 EMA (3), 느린 EMA (11) 및 느린 EMA (18) 의 크로스오버를 사용하여 트렌드를 결정하고 입출 신호로 사용합니다.
MACD 지표 및 그것의 제로 라인 크로스오버. MACD는 DIFF와 DEA로 구성된다. DIFF는 빠른 EMA (3) 미소 느린 EMA (11) 로 구성된다. DEA는 MACD의 EMA (27) 이다. MACD>0은 상승세를 나타내고 MACD<0은 하락세를 나타낸다. 제로 라인 크로스오버는 입출 신호로 작용한다.
EMA 크로스오버와 MACD 제로 라인 크로스오버의 조합에 따르면 3개의 진입 기회와 2개의 출구 기회가 있습니다.
요약하면 이 전략은 이중 EMA 크로스오버 시스템과 MACD 지표의 장점을 완전히 활용합니다. 이동 평균 및 MACD의 매개 변수를 동적으로 조정함으로써 전략의 수익성을 향상시킬 수 있습니다.
EMA 크로스오버와 MACD 지표의 장점을 활용하여 이중 지표 확인을 통해 정확도를 향상시킵니다.
3개의 긴 진입 기회와 2개의 출입 기회가 있는데, 거래 빈도와 수익 잠재력을 증가시킵니다.
동적 매개 변수 최적화를 위한 넓은 공간. 빠른 EMA, 느린 EMA, 제로 라인 EMA 및 MACD의 길이는 모두 최적화 될 수 있습니다.
명확한 논리는 디버깅과 최적화를 쉽게 합니다.
EMA 크로스오버와 MACD 지표 모두 잘못된 신호가 있어 불필요한 손실이 발생할 수 있습니다.
높은 거래 빈도, 각 거래에서 작은 스톱 로스 크기 때문에 손실이 축적될 수 있습니다.
매개 변수 최적화에 어려움이 있습니다. 부적절한 최적화는 과도한 적합으로 이어질 수 있습니다.
무역 비용의 영향은 충분히 고려되어야 합니다.
위험을 줄이기 위해:
단일 트레이드에서 손실을 제한하기 위해 적절한 스톱 로스를 설정합니다.
부착을 피하기 위해 적절한 매개 변수를 조정합니다.
거래의 빈도를 줄이는 것과 같은 거래 비용의 영향을 고려하십시오.
볼링거 밴드, KDJ 등과 같은 테스트 대안
EMA 크로스오버 매개 변수를 최적화: 빠른 EMA와 느린 EMA의 길이를 변경합니다.
MACD 매개 변수를 최적화: DIFF 및 DEA 계산 EMA 길이를 변경합니다.
스톱 로스 전략을 추가합니다. 거래 스톱 수, 시간 스톱, 트레일링 스톱 등.
트레이딩 비용을 고려하여 입력 빈도를 조정합니다.
이 전략은 이중 EMA 크로스오버 시스템과 MACD 지표를 결합하여 높은 거래 빈도와 강력한 수익성을 가진 동적 매개 변수 전략을 구성합니다. 또한 명확한 논리는 이해하기 쉽고 최적화 할 수 있습니다. 그러나 적절한 스톱 로스, 오버 피팅 방지 조치 등을 통해 해결해야하는 잘못된 신호 및 오버 피팅의 위험도 있습니다. 전반적으로 전략은 큰 실용적 유용성을 가지고 있습니다.
/*backtest start: 2024-01-29 00:00:00 end: 2024-02-05 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MACD+EMA crossovers Strategy custom",initial_capital=10000,max_bars_back=150,commission_type=strategy.commission.percent , commission_value=0.1, shorttitle="MACD+EMAcross",pyramiding = 10,default_qty_type=strategy.percent_of_equity,default_qty_value=33,overlay=false) short = ema(close,3) long = ema(close, 11) long2 = ema(close, 18) //plot(short, color = red, linewidth = 4) //plot(long, color = blue, linewidth = 4) //plot(long2, color = green, linewidth = 4) isCross1 = crossover(short, long) isCross2 = crossover(short, long2) isCrossSell = crossunder(short, long) //isCross3 = crossover(long, long2) //plotshape(isCross1 and not isCross2, color=lime, style=shape.arrowup, text="1st in",size = size.tiny, location = location.belowbar) //plotshape(isCross2 , color=lime, style=shape.arrowup, text="2nd in",size = size.tiny, location = location.belowbar) //plotshape(isCross3 , color=lime, style=shape.arrowdown, text="All in",size = size.normal, location = location.abovebar) //plotshape(isCrossSell , color=red, style=shape.arrowdown, text="SELL",size = size.small, location = location.abovebar) fastLength = input(3) slowlength = input(11) MACDLength = input(27) MACD = ema(close, fastLength) - ema(close, slowlength) aMACD = ema(MACD, MACDLength) //signal delta = MACD - aMACD // histograma strategy.entry("MacdLE 1st in", strategy.long, comment="MacdLE 1st in",when=crossover(delta, 0)) strategy.entry("2nd in", strategy.long, comment="2nd in",when=isCross1) strategy.entry("all in", strategy.long, comment="all in",when=isCross2) strategy.close("2nd in",when=isCrossSell) strategy.close("all in",when=isCrossSell) //strategy.close("2nd in",when=crossunder(delta, 0)) //strategy.close("all in",when=crossunder(delta, 0)) strategy.close("MacdLE 1st in",when=crossunder(delta, 0)) histColour = (delta > 0) ? green : (delta < 0) ? red : #4169E1 plot(MACD,color=red,linewidth=2) plot(aMACD,color=blue,linewidth=2) plot(delta,style=histogram, color=histColour, linewidth=10) plot(0,color=white)