यह समय अवधि पर आधारित एक बुद्धिमान रोटेशन रणनीति है जो निर्दिष्ट समय अवधि के भीतर लंबे-छोटे रोटेशन ट्रेडिंग के माध्यम से रिटर्न उत्पन्न करना चाहती है। यह रणनीति एक लचीली स्थिति प्रबंधन तंत्र को नियोजित करती है जो जोखिम नियंत्रण कार्यों को शामिल करते हुए बाजार की स्थिति के अनुसार स्वचालित रूप से ट्रेडिंग दिशा को समायोजित कर सकती है। यह द्विदिशात्मक ट्रेडिंग और वैकल्पिक स्विंग ट्रेडिंग मोड का समर्थन करती है, जो मजबूत अनुकूलन क्षमता का प्रदर्शन करती है।
रणनीति मुख्य रूप से समय अवधि और स्थिति की स्थिति के माध्यम से व्यापार को नियंत्रित करती है। सबसे पहले, इनएक्टिवपीरियड () फ़ंक्शन यह निर्धारित करता है कि क्या ट्रेडिंग पिछले 500 बार के प्रभावी ट्रेडिंग अंतराल के भीतर है। प्रभावी अंतराल के भीतर, रणनीति स्थिति की स्थिति (positionHeld), होल्डिंग समय (barsHeld), और ठहराव समय (barsPaused) जैसे चर के आधार पर ट्रेडिंग क्रियाओं का निर्णय लेती है। जब स्विंग ट्रेडिंग मोड सक्षम किया जाता है, तो रणनीति लंबी और छोटी दिशाओं के बीच तेजी से घूमती है; जब अक्षम किया जाता है, तो स्थिति 3 अवधि के बाद बंद हो जाती है और नए ट्रेडिंग अवसरों की प्रतीक्षा करती है।
यह रणनीति समय अवधि नियंत्रण और लंबी-छोटी रोटेशन के माध्यम से बाजार रिटर्न प्राप्त करती है, जो मजबूत लचीलापन और अनुकूलन क्षमता का प्रदर्शन करती है। जबकि कुछ जोखिम मौजूद हैं, उचित अनुकूलन और जोखिम नियंत्रण उपायों के माध्यम से रणनीति की स्थिरता और लाभप्रदता में काफी सुधार किया जा सकता है। मुख्य लाभ इसके सरल लेकिन प्रभावी ट्रेडिंग तर्क में निहित है, जिससे यह आगे अनुकूलन और विस्तार के लिए एक आधार रणनीति के रूप में उपयुक्त है।
/*backtest start: 2024-10-12 00:00:00 end: 2024-11-11 00:00:00 period: 4h basePeriod: 4h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Tickerly Test Strategy", overlay=true) // Inputs longEnabled = input.bool(true, "Enable Long Trades") shortEnabled = input.bool(true, "Enable Short Trades") swingEnabled = input.bool(false, "Enable Swing Trading") // Variables var positionHeld = 0 var barsHeld = 0 var barsPaused = 0 var lastAction = "none" // Function to determine if we're in the last 500 bars inActivePeriod() => barIndex = bar_index lastBarIndex = last_bar_index barIndex >= (lastBarIndex - 499) // Main strategy logic if inActivePeriod() if swingEnabled if positionHeld == 0 and barstate.isconfirmed if lastAction != "long" strategy.entry("Long", strategy.long) positionHeld := 1 barsHeld := 0 lastAction := "long" else strategy.entry("Short", strategy.short) positionHeld := -1 barsHeld := 0 lastAction := "short" if positionHeld != 0 barsHeld += 1 if barsHeld >= 2 if positionHeld == 1 strategy.entry("Short", strategy.short) positionHeld := -1 barsHeld := 0 lastAction := "short" else strategy.entry("Long", strategy.long) positionHeld := 1 barsHeld := 0 lastAction := "long" else if positionHeld == 0 and barsPaused >= 1 and barstate.isconfirmed if longEnabled and shortEnabled if lastAction != "long" strategy.entry("Long", strategy.long) positionHeld := 1 barsHeld := 0 barsPaused := 0 lastAction := "long" else strategy.entry("Short", strategy.short) positionHeld := -1 barsHeld := 0 barsPaused := 0 lastAction := "short" else if longEnabled strategy.entry("Long", strategy.long) positionHeld := 1 barsHeld := 0 barsPaused := 0 lastAction := "long" else if shortEnabled strategy.entry("Short", strategy.short) positionHeld := -1 barsHeld := 0 barsPaused := 0 lastAction := "short" if positionHeld != 0 barsHeld += 1 if barsHeld >= 3 strategy.close_all() positionHeld := 0 barsHeld := 0 barsPaused := 0 // Reset pause counter when exiting a position else barsPaused += 1 // Plotting active period for visual confirmation plot(inActivePeriod() ? 1 : 0, "Active Period", color=color.new(color.blue, 80), style=plot.style_areabr)