यह रणनीति कीमत के रुझानों को निर्धारित करने के लिए सुपरट्रेंड संकेतक का उपयोग करती है और रुझानों के परिवर्तन के समय लंबी या छोटी स्थिति में प्रवेश करती है। यह रणनीति पैरामीटर को अनुकूलित करने के लिए एटीआर अवधि और गुणक को समायोजित करने की अनुमति देती है। यह थोड़ा अलग परिणामों के लिए एटीआर गणना विधि को बदलने का विकल्प भी प्रदान करती है।
रणनीति में अंतर्निहित बैकटेस्टिंग तिथि रेंज और दिन के कुछ समय के भीतर ही व्यापार करने और उस समय सीमा के अंत में सभी ट्रेडों को बंद करने की क्षमता है। यह विशेष रूप से दिन के व्यापार स्टॉक के लिए उपयोगी है। जब समय सीमा विकल्प सक्षम किया जाता है, तो आप समय सीमा शुरू होने पर तुरंत वर्तमान स्थिति में प्रवेश करने का विकल्प चुन सकते हैं, या पहली स्थिति में प्रवेश करने के लिए रुझान परिवर्तन की प्रतीक्षा कर सकते हैं।
रणनीति आपको प्रतिशत आधारित स्टॉप लॉस और लाभ लेवल निर्दिष्ट करने की भी अनुमति देती है। ज्यादातर मामलों में, सुपरट्रेंड द्वारा प्रदान किए गए एटीआर आधारित स्टॉप एक अतिरिक्त स्टॉप लॉस को अनावश्यक बनाते हैं। इसलिए आप निकास तंत्र को अनुकूलित करने के लिए केवल लाभ लेने को सक्षम कर सकते हैं।
अंत में, स्वचालित ट्रेडिंग सेवाओं के साथ उपयोग किए जाने वाले प्रवेश और निकास संदेशों के लिए कस्टम अलर्ट फ़ील्ड हैं।
सुपरट्रेंड रणनीति निम्नलिखित प्रमुख सिद्धांतों पर आधारित हैः
एटीआर मान की गणना करें: एसएमए गणना या अंतर्निहित एटीआर संकेतक के बीच चयन कर सकते हैं। एसएमए सूत्रः
atr2 = sma(tr, Periods)
ऊपरी और निचले बैंड की गणना करें. ऊपरी बैंड कम से कम एटीआर गुणक बार एटीआर है. निचले बैंड कम प्लस गुणक बार एटीआर है.
up = close - (Multiplier * atr)
dn = close + (Multiplier * atr)
बैंड के साथ कीमत की तुलना करके प्रवृत्ति की दिशा निर्धारित करें। जब कीमत निचले बैंड से ऊपर जाती है तो अपट्रेंड करें। जब कीमत ऊपरी बैंड से नीचे जाती है तो डाउनट्रेंड करें।
trend := trend == -1 and close > dn ? 1 : trend == 1 and close < up ? -1 : trend
प्रवृत्ति परिवर्तन पर ट्रेडिंग संकेत उत्पन्न करें, उदाहरण के लिए अपट्रेंड से डाउनट्रेंड में परिवर्तन करते समय बिक्री संकेतः
sellSignal = trend == -1 and trend[1] == 1
संकेतों और अतिरिक्त स्थितियों के आधार पर फ़िल्टर प्रविष्टि।
मुनाफे में लॉक या जोखिम को सीमित करने के लिए स्टॉप लॉस और ले लाभ का उपयोग करें।
ये सुपरट्रेंड रणनीति के पीछे मुख्य कार्य सिद्धांत हैं। पैरामीटर अनुकूलन के साथ संयुक्त, यह अच्छे व्यापार परिणाम पैदा कर सकता है।
सुपरट्रेंड रणनीति के कई फायदे हैंः
सुपरट्रेंड स्वयं प्रभावी रूप से रुझानों की पहचान करता है और आमतौर पर ट्रेलिंग स्टॉप के लिए उपयोग किया जाता है।
अनुकूलन योग्य एटीआर मापदंडों को सर्वोत्तम फिट के लिए उत्पादों में अनुकूलित किया जा सकता है। एसएमए गणना एक और विकल्प प्रदान करती है।
कॉन्फ़िगर करने योग्य बैकटेस्ट और लाइव ट्रेडिंग समय सीमाएं विभिन्न ट्रेडिंग सत्रों के अनुरूप हैं।
पहले व्यापार में तुरंत प्रवेश करने या संकेत का इंतजार करने का विकल्प विभिन्न उत्पादों को पूरा करता है।
अंतर्निहित स्टॉप लॉस और ले लाभ जोखिम प्रबंधन में सुधार या अधिक लाभ में लॉक में मदद करता है।
स्वचालित ट्रेडिंग सिस्टम और बॉट्स के साथ एकीकरण के लिए अनुकूलन योग्य व्यापार अलर्ट।
कुछ जोखिमों पर भी विचार किया जाना चाहिए:
सुपरट्रेंड झूठे संकेत उत्पन्न कर सकता है जिन्हें अतिरिक्त स्थितियों के साथ फ़िल्टर करने की आवश्यकता होती है।
अनुचित एटीआर मापदंडों से अधिक व्यापार या अनुपलब्ध रुझान हो सकते हैं। सर्वोत्तम संतुलन के लिए अनुकूलन की आवश्यकता होती है।
बहुत करीब स्टॉप लॉस से लाभदायक ट्रेडों से समय से पहले बाहर निकल सकते हैं। बहुत ढीला लाभ लेने से मेज पर पैसा रह सकता है।
खराब समय सीमा विन्यास ट्रेडिंग सत्रों को याद कर सकता है या अनावश्यक रूप से मार्जिन को बांध सकता है।
इन जोखिमों को मजबूतता में सुधार के लिए मापदंडों या अतिरिक्त फ़िल्टर के उचित समायोजन के माध्यम से संबोधित किया जा सकता है।
कुछ तरीके हैं जिनसे रणनीति को और अनुकूलित किया जा सकता हैः
सही संतुलन खोजने के लिए विभिन्न एटीआर अवधि का परीक्षण करें, आमतौर पर 10-20 अच्छी तरह से काम करता है।
विभिन्न एटीआर गुणक मानों का प्रयास करें, आम तौर पर 2-5 उपयुक्त है, इष्टतम खोजने के लिए समायोजित करें।
झूठे संकेतों को कम करने के लिए एमएसीडी, आरएसआई आदि जैसे फ़िल्टर जोड़ें।
सर्वोत्तम परिणामों के लिए स्टॉप लॉस का अनुकूलन करें और लाभ स्तर लें। गतिशील ट्रैलिंग तंत्र पर विचार करें।
विभिन्न ट्रेडिंग समय सीमाओं का परीक्षण करें। कम अवधि इंट्राडे और उच्च आवृत्ति रणनीतियों के लिए उपयुक्त है।
उच्च गति या अस्थिरता को ट्रैक करने के लिए ऑटो प्रतीक चयन लागू करें.
कुल मिलाकर यह एक काफी आम और व्यावहारिक प्रवृत्ति के बाद की रणनीति है। यह अनुकूलन योग्य मापदंडों के साथ प्रवृत्तियों को कुशलता से ट्रैक करता है, लेकिन प्रबंधन करने के लिए अंतर्निहित जोखिम भी है। अनुकूलन और अतिरिक्त शर्तों के साथ, इसे लगातार अल्फा के साथ एक मजबूत मात्रा व्यापार प्रणाली में परिष्कृत किया जा सकता है।
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © REV0LUTI0N //@version=4 // Strategy strategy("Supertrend Strategy", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash) Periods = input(title="ATR Period", type=input.integer, defval=10) src = input(hl2, title="Source") Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0) changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true) enableentry = input(true, title="Enter First Trade ASAP") waitentry = input(false, title="Wait To Enter First Trade") atr2 = sma(tr, Periods) atr= changeATR ? atr(Periods) : atr2 up=src-(Multiplier*atr) up1 = nz(up[1],up) up := close[1] > up1 ? max(up,up1) : up dn=src+(Multiplier*atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green) Long = (trend == 1 ? up : na) buySignal = trend == 1 and trend[1] == -1 dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red) Short = (trend == 1 ? na : dn) sellSignal = trend == -1 and trend[1] == 1 // Strategy Backtesting startDate = input(timestamp("2021-01-01T00:00:00"), type = input.time, title='Backtesting Start Date') finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time, title='Backtesting End Date') time_cond = true //Time Restriction Settings startendtime = input("", title='Time Frame To Enter Trades') enableclose = input(false, title='Enable Close Trade At End Of Time Frame') timetobuy = (time(timeframe.period, startendtime)) timetoclose = na(time(timeframe.period, startendtime)) // Stop Loss & Take Profit % Based enablesl = input(false, title='Enable Stop Loss') enabletp = input(false, title='Enable Take Profit') stopTick = input(5.0, title='Stop Loss %', type=input.float, step=0.1) / 100 takeTick = input(10.0, title='Take Profit %', type=input.float, step=0.1) / 100 longStop = strategy.position_avg_price * (1 - stopTick) shortStop = strategy.position_avg_price * (1 + stopTick) shortTake = strategy.position_avg_price * (1 - takeTick) longTake = strategy.position_avg_price * (1 + takeTick) plot(strategy.position_size > 0 and enablesl ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL") plot(strategy.position_size < 0 and enablesl ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL") plot(strategy.position_size > 0 and enabletp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit") plot(strategy.position_size < 0 and enabletp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit") // Alert messages message_enterlong = input("", title="Long Entry message") message_entershort = input("", title="Short Entry message") message_closelong = input("", title="Close Long message") message_closeshort = input("", title="Close Short message") // Strategy Execution if Long and time_cond and timetobuy and enableentry strategy.entry("Long", strategy.long, alert_message = message_enterlong) if Short and time_cond and timetobuy and enableentry strategy.entry("Short", strategy.short, alert_message = message_entershort) if buySignal and time_cond and timetobuy and waitentry strategy.entry("Long", strategy.long, alert_message = message_enterlong) if sellSignal and time_cond and timetobuy and waitentry strategy.entry("Short", strategy.short, alert_message = message_entershort) if strategy.position_size > 0 and timetoclose and enableclose strategy.close_all(alert_message = message_closelong) if strategy.position_size < 0 and timetoclose and enableclose strategy.close_all(alert_message = message_closeshort) if strategy.position_size > 0 and enablesl and time_cond strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong) if strategy.position_size < 0 and enablesl and time_cond strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort) if strategy.position_size > 0 and enabletp and time_cond strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong) if strategy.position_size < 0 and enabletp and time_cond strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)