この戦略は,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")