저자:차오장, 날짜: 2024-01-25 12:54:16
태그:

img

전반적인 설명

이 전략은 EMA 차이와 MACD 지표에 기반한 복합 전략으로 단기 BTC 거래를 위한 것입니다. 특정 조건 하에 EMA와 MACD의 신호를 결합하여 구매 및 판매 신호를 생성합니다.

전략 논리

차이는 마이너스이고 임계치 이하이고 MACD는 하향적 크로스오버가 있을 때 구매 신호를 생성합니다. 차이는 긍정적이고 임계치 이상이고 MACD는 상승적 크로스오버가 있을 때 판매 신호를 생성합니다.

EMA 차이와 MACD의 신호를 결합함으로써 일부 가짜 신호를 필터링하여 신호의 신뢰성을 향상시킬 수 있습니다.

이점 분석

  1. 복합 지표, 더 신뢰할 수 있는 신호를 사용합니다.
  2. 단기 거래에 적합한 단기 매개 변수를 채택합니다.
  3. 리스크를 제어하기 위해 스톱 손실 및 수익 설정이 있습니다.

위험 분석

  1. 시장의 큰 변동 중에 손실을 멈추는 것은 깨질 수 있습니다.
  2. 매개 변수는 다른 시장 환경에 최적화되어야 합니다.
  3. 다른 동전과 거래소에서 효과를 테스트해야 합니다.

최적화 방향

  1. BTC 변동성에 맞게 EMA와 MACD 매개 변수를 최적화합니다.
  2. 자본 효율을 향상시키기 위해 포지션 크기와 피라미드 전략 추가
  3. 위험을 줄이기 위해 후속 스톱 손실과 같은 스톱 손실 방법을 추가하십시오.
  4. 다른 거래소와 동전들에 대한 테스트 효과

결론

이 전략은 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)


더 많은