यह रणनीति बाजार के रुझानों में परिवर्तन होने पर व्यापार के अवसरों को पकड़ने के लिए सीमित मार्टिंगेल मनी मैनेजमेंट विधि के साथ एमएसीडी संकेतक को जोड़ती है। जब एमएसीडी फास्ट लाइन स्लो लाइन से ऊपर जाती है, तो एक खरीद संकेत उत्पन्न होता है, और जब फास्ट लाइन स्लो लाइन से नीचे जाती है, तो एक बिक्री संकेत उत्पन्न होता है। साथ ही, रणनीति अधिकतम 3 अतिरिक्त पदों के साथ ड्रॉडाउन को नियंत्रित करने के लिए सीमित मार्टिंगेल विधि का उपयोग करती है। रणनीति प्रत्येक व्यापार के लिए 1% का एक निश्चित लाभ और स्टॉप लॉस सेट करती है।
यह रणनीति सीमित मार्टिंगेल का उपयोग करते हुए एमएसीडी संकेतक के माध्यम से रुझानों को पकड़ती है, जो ड्रॉडाउन को नियंत्रित करने के लिए रुझान बाजारों में अच्छे परिणाम प्राप्त कर सकती है। हालांकि, रणनीति में कुछ जोखिम भी हैं, जैसे कि सिग्नल विफलता और निश्चित स्टॉप नुकसान। अन्य संकेतकों को पेश करके, पैरामीटर सेटिंग्स का अनुकूलन करके, स्थिति आकार, और अन्य विधियों, इस रणनीति की मजबूती और लाभप्रदता में और सुधार किया जा सकता है।
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 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=100) // MACD 설정 fastLength = 15 slowLength = 30 signalSmoothing = 9 [macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing) // 계약수 및 이전 거래 결과 기록 var float contractSize = 0.01 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.01)) 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.01 martingaleCount := 0 else contractSize := 0.01 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")