이 전략은 EMA 차이와 MACD 지표에 기반한 복합 전략으로 단기 BTC 거래를 위한 것입니다. 특정 조건 하에 EMA와 MACD의 신호를 결합하여 구매 및 판매 신호를 생성합니다.
차이는 마이너스이고 임계치 이하이고 MACD는 하향적 크로스오버가 있을 때 구매 신호를 생성합니다. 차이는 긍정적이고 임계치 이상이고 MACD는 상승적 크로스오버가 있을 때 판매 신호를 생성합니다.
EMA 차이와 MACD의 신호를 결합함으로써 일부 가짜 신호를 필터링하여 신호의 신뢰성을 향상시킬 수 있습니다.
이 전략은 EMA와 MACD 지표의 강점을 통합하고 복합 신호를 사용하여 잘못된 신호를 효과적으로 필터링합니다. 최적화된 매개 변수와 위치 전략으로 안정적인 수익을 얻을 수 있습니다. 그러나 스톱 로스 타격과 같은 위험은 주의가 필요하며 추가 테스트 및 개선이 필요합니다.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-24 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("EMA50Diff & MACD Strategy", overlay=false) EMA = input(18, step=1) MACDfast = input(12) MACDslow = input(26) EMADiffThreshold = input(8) MACDThreshold = input(80) TargetValidityThreshold = input(65, step=5) Target = input(120, step=5) StopLoss = input(650, step=5) ema = ema(close, EMA) hl = plot(0, color=white, linewidth=1) diff = close - ema clr = color(blue, transp=100) if diff>0 clr := lime else if diff<0 clr := red fastMA = ema(close, MACDfast) slowMA = ema(close, MACDslow) macd = (fastMA - slowMA)*3 signal = sma(macd, 9) plot(macd, color=aqua, linewidth=2) plot(signal, color=purple, linewidth=2) macdlong = macd<-MACDThreshold and signal<-MACDThreshold and crossover(macd, signal) macdshort = macd>MACDThreshold and signal>MACDThreshold and crossunder(macd, signal) position = 0.0 position := nz(strategy.position_size, 0.0) long = (position < 0 and close < strategy.position_avg_price - TargetValidityThreshold and macdlong) or (position == 0.0 and diff < -EMADiffThreshold and diff > diff[1] and diff[1] < diff[2] and macdlong) short = (position > 0 and close > strategy.position_avg_price + TargetValidityThreshold and macdshort) or (position == 0.0 and diff > EMADiffThreshold and diff < diff[1] and diff[1] > diff[2] and macdshort) amount = (strategy.equity / close) //- ((strategy.equity / close / 10)%10) bgclr = color(blue, transp=100) //#0c0c0c if long strategy.entry("long", strategy.long, amount) bgclr := green if short strategy.entry("short", strategy.short, amount) bgclr := maroon bgcolor(bgclr, transp=20) strategy.close("long", when=close>strategy.position_avg_price + Target) strategy.close("short", when=close<strategy.position_avg_price - Target) strategy.exit("STOPLOSS", "long", stop=strategy.position_avg_price - StopLoss) strategy.exit("STOPLOSS", "short", stop=strategy.position_avg_price + StopLoss) //plotshape(long, style=shape.labelup, location=location.bottom, color=green) //plotshape(short, style=shape.labeldown, location=location.top, color=red) pl = plot(diff, style=histogram, color=clr) fill(hl, pl, color=clr)