이 전략은 MACD 지수와 마틴겔 재무 관리 방법을 결합하여 트렌드적인 행동을 포착하면서 위험을 통제하기 위해 고안되었습니다. 전략은 MACD 지수의 빠른 선과 느린 선의 교차를 거래 신호로 사용하고 제한된 수의 마틴겔 방식을 사용하여 포지션 규모를 제어합니다. 손실 거래가 발생하면 전략은 이전 손실을 보충하기 위해 다음 거래의 계약 수를 두 배, 최대 세 배로 늘립니다.
이 전략은 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")