सुपर ट्रेंड डुअल मूविंग एवरेज रणनीति सुपर ट्रेंड इंडिकेटर और सरल मूविंग एवरेज पर आधारित एक मात्रात्मक ट्रेडिंग रणनीति है। यह रणनीति बाजार की प्रवृत्ति की दिशा निर्धारित करने के लिए सुपर ट्रेंड इंडिकेटर का उपयोग करती है, और फिर फ़िल्टरिंग के लिए 200-दिवसीय सरल मूविंग एवरेज को जोड़ती है, मुख्य प्रवृत्ति दिशा के साथ लंबी और छोटी स्थिति खोलती है।
इस रणनीति में दो संकेतकों का प्रयोग किया गया हैः
सुपर ट्रेंड इंडिकेटर: यह वास्तविक अस्थिरता एटीआर और एक गुणक के आधार पर ऊपरी और निचले रेल की गणना करता है। जब समापन मूल्य ऊपरी रेल से अधिक होता है, तो यह एक तेजी का दृश्य दर्शाता है। जब निचले रेल से कम होता है, तो यह एक मंदी का दृश्य दर्शाता है।
200-दिवसीय सरल चलती औसतः यह पिछले 200 दिनों में समापन कीमतों का अंकगणितीय औसत लेता है। जब समापन मूल्य इस रेखा से अधिक होता है, तो यह एक प्रमुख तेजी की प्रवृत्ति का प्रतिनिधित्व करता है। जब यह रेखा से नीचे होता है, तो यह एक प्रमुख मंदी की प्रवृत्ति का प्रतिनिधित्व करता है।
रणनीति तर्क:
जब सुपर ट्रेंड सूचक तेजी का संकेत देता है (सुपर ट्रेंड मान 0 से अधिक) और समापन मूल्य 200-दिवसीय एमए से अधिक होता है, तो लंबा हो जाता है।
जब सुपर ट्रेंड सूचक एक मंदी संकेत देता है (सुपर ट्रेंड मान 0 से कम) और समापन मूल्य 200-दिवसीय एमए से कम है, तो शॉर्ट करें।
जब सुपर ट्रेंड सूचक पिछले एक के मुकाबले रिवर्स सिग्नल देता है तो स्थिति को बंद करें।
स्टॉप लॉस 25% है।
यह रणनीति अल्पकालिक प्रवृत्ति को निर्धारित करने के लिए सुपर प्रवृत्ति संकेतक और दीर्घकालिक प्रवृत्ति को निर्धारित करने के लिए 200-दिवसीय एमए को जोड़ती है, जो प्रभावी रूप से झूठे ब्रेकआउट को फ़िल्टर कर सकती है, जीत दर में सुधार करते हुए ट्रेडिंग आवृत्ति को कम कर सकती है। एक महत्वपूर्ण बाजार प्रवृत्ति में, प्रवृत्ति बड़े स्टॉप लॉस स्पेस और लाभ लक्ष्य के साथ पर्याप्त स्पष्ट है।
इस रणनीति का मुख्य जोखिम यह है कि स्टॉप लॉस रेंज अपेक्षाकृत बड़ी है। यह उच्च उत्तोलन स्थितियों में जबरन परिसमापन के जोखिम को बढ़ा सकता है। इसके अलावा, जब बाजार रेंज-बाउंड होता है, तो सुपर ट्रेंड संकेतक अतिरेक संकेत उत्पन्न करेगा, जिससे लेनदेन लागत और व्यापार आवृत्ति बढ़ जाएगी।
एटीआर अवधि, गुणक मापदंडों और स्टॉप लॉस रेंज को उचित रूप से समायोजित करके जोखिम को कम किया जा सकता है।
इस रणनीति को निम्नलिखित पहलुओं में अनुकूलित किया जा सकता हैः
सुपर ट्रेंड सूचक को अनुकूलित करने के लिए एटीआर अवधि और गुणक मापदंडों को समायोजित करें।
विकल्प के लिए अन्य एमए संकेतक जैसे ईएमए और वीडिया का प्रयोग करें।
अतिरिक्त संकेत फ़िल्टरिंग के लिए अन्य सहायक संकेतक जैसे BOLL चैनल या KD संकेतक जोड़ें।
स्टॉप लॉस रणनीति को अनुकूलित करें, जैसे कि इसे उच्च समय सीमा के स्तरों के साथ ब्रेक एवरेज बिंदु या ट्रेलिंग स्टॉप पर ले जाना।
कुल मिलाकर, यह रणनीति बहुत व्यावहारिक है। यह उचित स्टॉप लॉस सेटिंग्स के साथ अल्पकालिक प्रवृत्ति निर्णय और दीर्घकालिक प्रवृत्ति निर्णय दोनों पर विचार करती है। यह पैरामीटर समायोजन और अनुकूलन के माध्यम से बेहतर परिणाम प्राप्त कर सकती है, जो वास्तविक व्यापार सत्यापन और अनुप्रयोग के लायक है।
/*backtest start: 2023-12-16 00:00:00 end: 2024-01-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/ // © wielkieef //@version=5 strategy("Smart SuperTrend Strategy ", shorttitle="ST Strategy", overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.01) // Parametry wskaźnika SuperTrend atrLength = input(10, title="Lenght ATR") factor = input(3.0, title="Mult.") // Parametry dla SMA lengthSMA = input(200, title="Lenght SMA") // Parametry dla Stop Loss sl = input.float(25.0, '% Stop Loss', step=0.1) // Obliczanie ATR atr = ta.atr(atrLength) // Obliczanie podstawowej wartości SuperTrend up = hl2 - (factor * atr) dn = hl2 + (factor * atr) // Obliczanie 200-SMA sma200 = ta.sma(close, lengthSMA) // Inicjalizacja zmiennych var float upLevel = na var float dnLevel = na var int trend = na var int trendWithFilter = na // Logika SuperTrend upLevel := close[1] > upLevel[1] ? math.max(up, upLevel[1]) : up dnLevel := close[1] < dnLevel[1] ? math.min(dn, dnLevel[1]) : dn trend := close > dnLevel[1] ? 1 : close < upLevel[1] ? -1 : nz(trend[1], 1) // Filtr SMA i aktualizacja trendWithFilter trendWithFilter := close > sma200 ? math.max(trend, 0) : math.min(trend, 0) // Logika wejścia longCondition = trend == 1 shortCondition = trend == -1 // Wejście w pozycje if (longCondition) and close > sma200 strategy.entry("Long", strategy.long) if (shortCondition) and close < sma200 strategy.entry("Short", strategy.short) // Warunki zamknięcia pozycji Long_close = trend == -1 and close > sma200 Short_close = trend == 1 and close < sma200 // Zamknięcie pozycji if (Long_close) strategy.close("Long") if (Short_close) strategy.close("Short") // Kolory superTrendu z filtrem sma200 trendColor = trendWithFilter == 1 ? color.green : trendWithFilter == -1 ? color.red : color.blue //ploty plot(trendWithFilter == 1 ? upLevel : trendWithFilter == -1 ? dnLevel : na, color=trendColor, title="SuperTrend") // Stop Loss ( this code is from author RafaelZioni, modified by wielkieef ) per(procent) => strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na) // -------------------------------------------------------------------------------------------------------------------- strategy.exit('SL',loss=per(sl)) //by wielkieef