
यह दोहरे सुपरट्रेंड सूचकांकों पर आधारित एक बहु-चरण चलती स्टॉप रणनीति है। यह रणनीति बाजार के रुझानों को समझने के लिए दो अलग-अलग पैरामीटर वाले सुपरट्रेंड सूचकांकों का उपयोग करती है, और प्रवृत्ति की दिशा के अनुसार बहु-क्षेत्र व्यापार करती है। रणनीति का मूल एक बहु-चरण चलती स्टॉप तंत्र का उपयोग करना है, जो कई स्टॉप लक्ष्यों को स्थापित करके लाभ को धीरे-धीरे लॉक करने के लिए है, जबकि कुछ स्थितियों को पकड़ने के लिए कुछ स्थिति को बनाए रखता है। यह विधि जोखिम को कम करती है और लाभप्रद क्षमता को अधिकतम करती है।
दोहरे सुपरट्रेंड संकेतकः रणनीति का उपयोग दो पैरामीटर सेट करने के लिए अलग-अलग सुपरट्रेंड संकेतक का उपयोग करने के लिए प्रवृत्ति का न्याय करने के लिए। जब दो संकेतक एक साथ ऊपर की ओर प्रवृत्ति दिखाते हैं, तो एक से अधिक सिग्नल ट्रिगर करें; जब दो संकेतक एक साथ नीचे की ओर प्रवृत्ति दिखाते हैं, तो एक शून्य सिग्नल ट्रिगर करें। यह दोहरी पुष्टिकरण तंत्र झूठे संकेतों को प्रभावी ढंग से कम कर सकता है।
बहु-चरण चलती रोकः रणनीति में 4 समायोज्य रोक लक्ष्य निर्धारित किए गए हैं। प्रत्येक लक्ष्य के लिए संबंधित रोक प्रतिशत और शांति का अनुपात है। उदाहरण के लिए, पहला रोक लक्ष्य 6% लाभ पर 12% की स्थिति को समतल करने के लिए सेट किया जा सकता है, दूसरा लक्ष्य 12% लाभ पर 8% की स्थिति को समतल करने के लिए सेट किया जा सकता है, और इसी तरह। यह तंत्र लाभ को धीरे-धीरे लॉक करने के साथ-साथ कुछ पदों को जारी रखने की अनुमति देता है।
लचीली ट्रेडिंग दिशाः रणनीति उपयोगकर्ताओं को विभिन्न बाजार स्थितियों और ट्रेडिंग वरीयताओं के अनुकूल केवल अधिक, केवल शून्य या द्वि-दिशात्मक ट्रेडिंग का विकल्प देती है।
गतिशील स्टॉप लॉसः हालांकि कोड में कोई स्पष्ट स्टॉप लॉस सेटिंग नहीं है, लेकिन सुपरट्रेंड सूचक के उलट जाने पर रणनीति स्वचालित रूप से पोजीशन को खत्म कर देती है, जो वास्तव में गतिशील स्टॉप लॉस की भूमिका निभाता है।
जोखिम प्रबंधन का अनुकूलनः बहु-चरण मोबाइल स्टॉप सिस्टम ने रणनीति के जोखिम-लाभ अनुपात में काफी सुधार किया है। लाभ को धीरे-धीरे लॉक करके, रणनीति बढ़त के लिए जगह बनाए रखते हुए वापसी के जोखिम को कम कर सकती है।
झूठे संकेतों को कम करनाः दोहरे सुपरट्रेंड सूचकांकों के उपयोग से झूठे संकेतों के प्रभाव को काफी कम किया गया है, जिससे व्यापार की सटीकता और विश्वसनीयता में सुधार हुआ है।
अनुकूलनशीलताः रणनीति ट्रेडिंग दिशा और स्टॉप पैरामीटर को उपयोगकर्ता की वरीयताओं और बाजार की स्थिति के आधार पर लचीले ढंग से समायोजित कर सकती है, जो विभिन्न प्रकार के ट्रेडिंग और समय अवधि के लिए उपयुक्त है।
उच्च स्तर की स्वचालनः रणनीति पूरी तरह से स्वचालित है, प्रवेश, रोक और बाहर निकलने के लिए कोई मानवीय हस्तक्षेप की आवश्यकता नहीं है, जो भावनात्मक प्रभाव और ऑपरेशन की गलतियों की संभावना को कम करता है।
धन प्रबंधन में लचीलापनः विभिन्न स्टॉप-अप अनुपातों को सेट करके, रणनीति लचीली धन प्रबंधन को सक्षम करती है, जो लाभ के कुछ हिस्सों को जल्दी से लॉक करने की गारंटी देती है और शेष पदों को लाभदायक बनाती है।
पैरामीटर संवेदनशीलताः रणनीति का प्रदर्शन सुपरट्रेंड सूचक और स्टॉप पैरामीटर की सेटिंग पर काफी हद तक निर्भर करता है। अनुचित पैरामीटर ओवरट्रेडिंग या महत्वपूर्ण अवसरों को याद करने का कारण बन सकते हैं।
रुझान पर निर्भरताः एक रुझान-अनुसरण रणनीति के रूप में, अस्थिर बाजारों में बार-बार आने और जाने से अनावश्यक लेनदेन की लागत हो सकती है।
स्लाइडिंग जोखिमः तेजी से चलने के दौरान, मल्टी-स्टेप स्टॉप का निष्पादन स्लाइडिंग से प्रभावित हो सकता है, और वास्तविक निष्पादन मूल्य उम्मीद से विचलित हो सकता है।
अति-अनुकूलन का जोखिमः रणनीति में कई समायोज्य पैरामीटर हैं, जो अति-अनुकूलन के जाल में फंसने के लिए आसान है, जिसके परिणामस्वरूप वास्तविक डिस्क के प्रदर्शन से बहुत अधिक अंतर है।
अस्थिरता फ़िल्टरिंग का परिचय देंः एटीआर या अन्य अस्थिरता संकेतकों के संयोजन पर विचार करें, कम अस्थिरता के दौरान व्यापार की आवृत्ति को कम करें, विभिन्न बाजार स्थितियों में रणनीति की अनुकूलता में सुधार करें।
गतिशील पैरामीटर समायोजनः सुपरट्रेंड पैरामीटर और स्टॉप लक्ष्य को गतिशील रूप से समायोजित करने के लिए एक अनुकूलन एल्गोरिथ्म का उपयोग करके खोज की जा सकती है ताकि बाजार में बदलाव के लिए बेहतर रूप से अनुकूल हो सके।
स्टॉप-लॉस को बढ़ाएंः हालांकि सुपरट्रेंड ने कुछ स्टॉप-लॉस सुविधाएं प्रदान की हैं, लेकिन अधिक लचीले स्टॉप-लॉस को जोड़ने पर विचार किया जा सकता है, जैसे कि स्टॉप-लॉस को ट्रैक करना और जोखिम को और नियंत्रित करना।
अन्य तकनीकी संकेतकों के साथ संयोजनः आरएसआई, एमएसीडी जैसे अन्य तकनीकी संकेतकों को पेश करने पर विचार किया जा सकता है, जो मल्टी-इंडेक्स इकोनॉमिक्स के माध्यम से प्रवेश और बाहर निकलने की सटीकता में सुधार कर सकता है।
धन प्रबंधन का अनुकूलन करेंः अधिक जटिल धन प्रबंधन रणनीतियों का पता लगाया जा सकता है, जैसे कि खाता लाभप्रदता के आधार पर स्थिति के आकार को गतिशील रूप से समायोजित करना, ताकि जोखिम और लाभ को बेहतर ढंग से संतुलित किया जा सके।
प्रतिक्रिया अनुकूलनः रणनीति के लिए सबसे अच्छा परिदृश्य और पैरामीटर सेटिंग खोजने के लिए विभिन्न समय अवधि और विभिन्न बाजार स्थितियों के तहत प्रदर्शन विश्लेषण सहित अधिक व्यापक प्रतिक्रिया।
यह बहु-चरण मोबाइल स्टॉप रणनीति दोहरे सुपरट्रेंड सूचकांकों पर आधारित है, जो एक लचीले बहु-चरण स्टॉप तंत्र के माध्यम से जोखिम और लाभ के संतुलन को प्राप्त करती है। रणनीति का मुख्य लाभ इसकी उत्कृष्ट जोखिम प्रबंधन क्षमता और प्रवृत्ति के प्रति संवेदनशीलता में है। हालांकि, उपयोगकर्ता को लागू करते समय पैरामीटर सेटिंग्स और बाजार की स्थिति के प्रभाव पर ध्यान देने की आवश्यकता होती है। आगे के अनुकूलन और सुधार के साथ, रणनीति में एक मजबूत और विश्वसनीय स्वचालित व्यापार प्रणाली बनने की क्षमता है। व्यावहारिक अनुप्रयोगों में, व्यापारियों को पर्याप्त प्रतिक्रिया और व्यापार का अनुकरण करने की सलाह दी जाती है, और विशिष्ट व्यापार प्रकार और बाजार की स्थिति के अनुसार उचित पैरामीटर समायोजन करें।
/*backtest
start: 2024-05-21 00:00:00
end: 2024-06-20 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Strategic Multi-Step Supertrend Trader - Strategy [presentTrading]", overlay=true )
// this strategy utilizes a double Supertrend indicator to determine entry and exit conditions for both long and short trades, with user-configurable take profit levels and trade direction settings.
// The strategy dynamically updates highest and lowest prices during trades and exits positions based on multi-step profit targets or opposing Supertrend signals.
// User inputs for take profit settings
// Grouping Take Profit settings
useTakeProfit = input.bool(true, title="Use Take Profit", group="Take Profit Settings")
takeProfitPercent1 = input.float(6.0, title="Take Profit % Step 1", group="Take Profit Settings")
takeProfitPercent2 = input.float(12.0, title="Take Profit % Step 2", group="Take Profit Settings")
takeProfitPercent3 = input.float(18.0, title="Take Profit % Step 3", group="Take Profit Settings")
takeProfitPercent4 = input.float(50.0, title="Take Profit % Step 4", group="Take Profit Settings")
takeProfitAmount1 = input.float(12, title="Take Profit Amount % Step 1", group="Take Profit Settings")
takeProfitAmount2 = input.float(8, title="Take Profit Amount % Step 2", group="Take Profit Settings")
takeProfitAmount3 = input.float(4, title="Take Profit Amount % Step 3", group="Take Profit Settings")
takeProfitAmount4 = input.float(0, title="Take Profit Amount % Step 4", group="Take Profit Settings")
numberOfSteps = input.int(3, title="Number of Take Profit Steps", minval=1, maxval=4, group="Take Profit Settings")
// Grouping Trade Direction
tradeDirection = input.string("Both", title="Trade Direction", options=["Long", "Short", "Both"], group="Trade Direction")
// Grouping Supertrend settings
atrPeriod1 = input(10, title="ATR Length for Supertrend 1", group="Supertrend Settings")
factor1 = input.float(3.0, title="Factor for Supertrend 1", step=0.01, group="Supertrend Settings")
atrPeriod2 = input(5, title="ATR Length for Supertrend 2", group="Supertrend Settings")
factor2 = input.float(4.0, title="Factor for Supertrend 2", step=0.01, group="Supertrend Settings")
// Function to calculate Supertrend
supertrend(factor, atrPeriod) =>
[a, direction] = ta.supertrend(factor, atrPeriod)
direction
// Calculate Double Supertrend
supertrend1 = supertrend(factor1, atrPeriod1)
supertrend2 = supertrend(factor2, atrPeriod2)
// Entry conditions
longCondition = (supertrend1 < 0 and supertrend2 < 0) and (tradeDirection == "Long" or tradeDirection == "Both")
shortCondition = (supertrend1 > 0 and supertrend2 > 0) and (tradeDirection == "Short" or tradeDirection == "Both")
// Exit conditions
longExitCondition = (supertrend1 > 0 and supertrend2 > 0) and (tradeDirection == "Long" or tradeDirection == "Both")
shortExitCondition = (supertrend1 < 0 and supertrend2 < 0) and (tradeDirection == "Short" or tradeDirection == "Both")
// Variables to store the highest and lowest prices during the trade
var float highestPrice = na
var float lowestPrice = na
// Get the entry price from open trades
entryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)
// Reset highestPrice or lowestPrice when entering new trades
if (longCondition and strategy.position_size <= 0)
highestPrice := na // Reset the highest price
strategy.entry("My Long Entry Id", strategy.long) // Enter long position
strategy.close("My Short Entry Id", "Short Exit") // Close short position if any
if (shortCondition and strategy.position_size >= 0)
lowestPrice := na // Reset the lowest price
strategy.entry("My Short Entry Id", strategy.short) // Enter short position
strategy.close("My Long Entry Id", "Long Exit") // Close long position if any
// Exit trades based on conditions
if (longExitCondition and strategy.position_size > 0)
strategy.close("My Long Entry Id", "Long Exit") // Exit long position
if (shortExitCondition and strategy.position_size < 0)
strategy.close("My Short Entry Id", "Short Exit") // Exit short position
if (strategy.position_size > 0)
// Update the highest price for long positions
highestPrice := na(highestPrice) ? high : math.max(highestPrice, high)
// Step 1
if (useTakeProfit and numberOfSteps >= 1)
strategy.exit("Take Profit 1", from_entry="My Long Entry Id", qty_percent=takeProfitAmount1, limit=entryPrice * (1 + takeProfitPercent1 / 100))
// Step 2
if (useTakeProfit and numberOfSteps >= 2)
strategy.exit("Take Profit 2", from_entry="My Long Entry Id", qty_percent=takeProfitAmount2, limit=entryPrice * (1 + takeProfitPercent2 / 100))
// Step 3
if (useTakeProfit and numberOfSteps >= 3)
strategy.exit("Take Profit 3", from_entry="My Long Entry Id", qty_percent=takeProfitAmount3, limit=entryPrice * (1 + takeProfitPercent3 / 100))
// Step 4
if (useTakeProfit and numberOfSteps == 4)
strategy.exit("Take Profit 4", from_entry="My Long Entry Id", qty_percent=takeProfitAmount4, limit=entryPrice * (1 + takeProfitPercent4 / 100))
if (strategy.position_size < 0)
// Update the lowest price for short positions
lowestPrice := na(lowestPrice) ? low : math.min(lowestPrice, low)
// Step 1
if (useTakeProfit and numberOfSteps >= 1)
strategy.exit("Take Profit 1", from_entry="My Short Entry Id", qty_percent=takeProfitAmount1, limit=entryPrice * (1 - takeProfitPercent1 / 100))
// Step 2
if (useTakeProfit and numberOfSteps >= 2)
strategy.exit("Take Profit 2", from_entry="My Short Entry Id", qty_percent=takeProfitAmount2, limit=entryPrice * (1 - takeProfitPercent2 / 100))
// Step 3
if (useTakeProfit and numberOfSteps >= 3)
strategy.exit("Take Profit 3", from_entry="My Short Entry Id", qty_percent=takeProfitAmount3, limit=entryPrice * (1 - takeProfitPercent3 / 100))
// Step 4
if (useTakeProfit and numberOfSteps == 4)
strategy.exit("Take Profit 4", from_entry="My Short Entry Id", qty_percent=takeProfitAmount4, limit=entryPrice * (1 - takeProfitPercent4 / 100))