यह रणनीति जोखिमों को नियंत्रित करते हुए ट्रेंडिंग बाजार आंदोलनों को पकड़ने के लिए एमएसीडी संकेतक और मार्टिंगेल मनी मैनेजमेंट पद्धति को जोड़ती है। यह रणनीति एमएसीडी फास्ट लाइन और स्लो लाइन के क्रॉसओवर का उपयोग ट्रेडिंग सिग्नल के रूप में करती है, और स्थिति के आकार को नियंत्रित करने के लिए सीमित संख्या में मार्टिंगेल दृष्टिकोण को अपनाती है। जब एक खोने वाला व्यापार होता है, तो रणनीति पिछले नुकसान की वसूली के लिए अगले व्यापार के लिए अनुबंधों की संख्या को दोगुना कर देगी, अधिकतम तीन गुना तक। साथ ही, रणनीति जोखिमों को और अधिक नियंत्रित करने के लिए लाभ और स्टॉप-लॉस शर्तें निर्धारित करती है।
एमएसीडी संकेतक और मार्टिंगेल मनी मैनेजमेंट पद्धति को मिलाकर, यह रणनीति जोखिमों को नियंत्रित करते हुए ट्रेंडिंग बाजारों से लाभ कमाने का प्रयास करती है। रणनीति तर्क स्पष्ट और लागू करने में आसान है, लेकिन मार्टिंगेल लीवरेजिंग से जुड़े जोखिम और फिक्स्ड टेक-प्रॉफिट और स्टॉप-लॉस अनुपात की सीमाएं अभी भी हैं। भविष्य में, रणनीति को लीवरेजिंग दृष्टिकोण को गतिशील रूप से समायोजित करके, ट्रेडिंग सिग्नल का अनुकूलन करके, अनुकूलनशील टेक-प्रॉफिट और स्टॉप-लॉस विधियों को अपनाने और रणनीति की मजबूती और लाभप्रदता में सुधार के लिए स्थिति प्रबंधन को लागू करके अनुकूलित किया जा सकता है।
/*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")