이 전략은 트렌딩 시장 움직임을 파악하고 위험을 제어하기 위해 MACD 지표와 마틴게일 금전 관리 방법을 결합합니다. 전략은 MACD 빠른 라인과 느린 라인의 교차를 거래 신호로 사용하고, 포지션 크기를 제어하기 위해 제한된 수의 마틴게일 접근 방식을 채택합니다. 손실 거래가 발생하면 전략은 이전 손실을 복구하기 위해 다음 거래의 계약을 최대 3 배로 두 배로 증가시킵니다. 동시에 전략은 위험을 더 제어하기 위해 수익을 취하고 중지 손실 조건을 설정합니다.
이 전략은 MACD 지표와 마틴게일 금전 관리 방법을 결합하여 위험을 제어하면서 트렌딩 시장에서 이익을 얻으려고 한다. 전략 논리는 명확하고 구현하기 쉽지만, 여전히 마틴게일 레버리지와 고정된 영업이익 및 스톱-러스 비율의 한계와 관련된 위험이 있다. 미래에, 전략은 레버리지 접근 방식을 동적으로 조정하고, 거래 신호를 최적화하고, 적응성 있는 영업이익 및 스톱-러스 방법을 채택하고, 전략의 안정성과 수익성을 향상시키기 위해 포지션 관리를 구현함으로써 최적화 될 수 있다.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Advanced MACD Strategy with Limited Martingale", overlay=true, initial_capital=500) // MACD 설정 변경 fastLength = 15 slowLength = 30 signalSmoothing = 9 [macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing) // 계약수 및 이전 거래 결과 기록 var float contractSize = 0.02 // 계약 수를 0.05로 시작 var int martingaleCount = 0 // 마틴게일 카운트 var float lastTradeResult = 0 // 매수 및 매도 조건 longCondition = ta.crossover(macdLine, signalLine) shortCondition = ta.crossunder(macdLine, signalLine) // 매수 신호 if (longCondition) strategy.entry("Long", strategy.long, qty=contractSize) lastTradeResult := strategy.netprofit // 매도 신호 if (shortCondition) strategy.entry("Short", strategy.short, qty=contractSize) lastTradeResult := strategy.netprofit // 익절 및 손절 조건 strategy.close("Long", when=(close / strategy.position_avg_price >= 1.015)) strategy.close("Short", when=(strategy.position_avg_price / close >= 1.01)) strategy.close("Long", when=(close / strategy.position_avg_price <= 0.99)) strategy.close("Short", when=(strategy.position_avg_price / close <= 0.99)) // 마틴게일 전략 적용 if (strategy.netprofit < lastTradeResult) if (martingaleCount < 3) contractSize := contractSize * 2 martingaleCount := martingaleCount + 1 else contractSize := 0.02 // 리셋 할 때 0.05로 리셋 martingaleCount := 0 else contractSize := 0.02 // 초기화 martingaleCount := 0 // 매수, 매도 포인트 화살표로 표시 plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")