यह रणनीति एटीआर संकेतक का उपयोग गतिशील स्टॉप लॉस बिंदुओं को निर्धारित करने और जोखिमों को नियंत्रित करने के लिए मूल्य उतार-चढ़ाव के आधार पर स्टॉप लॉस पदों को समायोजित करने के लिए करती है। मुख्य रूप से यह 5EMA 20EMA से ऊपर पार करने पर लंबा प्रवेश करता है, और फिर एटीआर संकेतक का उपयोग स्टॉप लॉस और लाभ पदों को सेट करने के लिए करता है। स्टॉप लॉस स्थिति को अधिक लाभ में लॉक करने के लिए मूल्य आंदोलनों के अनुसार समायोजित किया जाएगा।
यह रणनीति पहले यह तय करती है कि क्या 5EMA 20EMA से ऊपर की ओर बढ़ेगा। प्रवेश करने के बाद, यह एटीआर संकेतक का उपयोग करके वर्तमान मूल्य के लिए प्रवेश मूल्य के एटीआर गुणकों की गणना करता है, और प्रवेश मूल्य से नीचे 1.5ATR पर स्टॉप लॉस स्थिति निर्धारित करता है। जैसे-जैसे कीमत बढ़ती है, स्थिति के लाभ को बढ़ाने के लिए स्टॉप लॉस स्थिति को धीरे-धीरे बढ़ाया जाता है।
विशेष रूप से, रणनीति निम्नलिखित चर को परिभाषित करती हैः
प्रवेश करने के बाद, यह वर्तमान एटीआर मूल्य के रूप में atr_ref की गणना करता है, और atr_div वर्तमान मूल्य के लिए प्रवेश मूल्य के ATR गुणकों के रूप में। फिर atr_div के आधार पर atr_down, atr_current और atr_up की स्थिति निर्धारित करता है। स्टॉप लॉस मूल्य स्टॉप_प्राइस को प्रवेश मूल्य से 1.5ATR नीचे सेट किया जाता है।
जैसे-जैसे कीमत बढ़ती है, वर्तमान मूल्य एवज और atr_up की तुलना करके, यदि avg atr_up से ऊपर जाता है, तो यह atr_div और ATR लाइन पदों की पुनः गणना करता है, इस प्रकार लाभ बढ़ाने के लिए स्टॉप लॉस लाइन को धीरे-धीरे बढ़ाता है।
यदि कीमत प्रवेश मूल्य के 3ATR से ऊपर बढ़ जाती है, तो यह लाभ में लॉक करने के लिए आंशिक रूप से स्थिति को बंद कर देगा, और tookProfit को सच पर सेट करेगा। इसके बाद यदि कीमत बढ़ती रहती है, तो यह स्टॉप लॉस को बढ़ाना जारी रखेगी। जब स्टॉप लॉस ट्रिगर किया जाता है, तो यह tookProfit की जांच करता है - यदि पहले ही आंशिक लाभ लिया गया है, तो यह केवल शेष स्थिति को बंद कर देगा; अन्यथा पूरी स्थिति को बंद कर देगा।
स्टॉप लॉस को गतिशील रूप से समायोजित करने के लिए एटीआर संकेतक का उपयोग करके बाजार की अस्थिरता के आधार पर उचित स्टॉप दूरी निर्धारित की जा सकती है।
नुकसान को सीमित करते हुए रुझानों का पालन करें। लाभ जमा करने के लिए स्टॉप लॉस को धीरे-धीरे बढ़ाया जाएगा।
आंशिक लाभ लेने के तंत्र से कुछ लाभ प्राप्त होता है और जोखिम कम होता है। लाभ चलाने के लिए स्टॉप लॉस बढ़ता रहता है।
एटीआर संकेतक तेज उलट और अंतराल के प्रति संवेदनशील नहीं है।
ईएमए रुझान उलटने का निर्धारण नहीं कर सकते हैं, रुझान उलटने पर नई स्थिति दर्ज कर सकते हैं।
आंशिक लाभ लेने के बाद हानि की उच्च संभावना।
मापदंडों को और अनुकूलित करने की आवश्यकता है, 1.5ATR स्टॉप और 3ATR ले लाभ को विभिन्न उत्पादों के लिए समायोजित किया जाना चाहिए।
एटीआर विलंब की भरपाई के लिए डोंचियन चैनल जैसे अन्य स्टॉप लॉस संकेतक जोड़ने पर विचार करें।
विभिन्न चलती औसत का परीक्षण करें या रुझान उलटने का न्याय करने के लिए एमएसीडी आदि जोड़ें।
विभिन्न उत्पादों के लिए आंशिक लाभ अनुपात और आवृत्ति को अनुकूलित करना।
स्टॉप और ले लाभ के लिए एटीआर गुणकों पर पैरामीटर अनुकूलन. ट्रेलिंग स्टॉप हानि सुविधा जोड़ें.
कमजोर रुझानों के दौरान परीक्षण प्रदर्शन, कमजोर रुझानों के दौरान रणनीति को अक्षम कर सकता है।
इस रणनीति में गतिशील स्टॉप लॉस प्रबंधन के लिए एटीआर का उपयोग करने का एक स्पष्ट तर्क है जो इसकी सबसे बड़ी ताकत है। हालांकि, एटीआर की अपनी सीमाएं हैं जैसे कि पिछड़ना। अन्य स्टॉप और ट्रेंड संकेतक जोड़ने से इसे बेहतर बनाया जाएगा। इसके अलावा आंशिक लाभ लेने के लिए उत्पादों में अनुकूलन की आवश्यकता है। कुल मिलाकर यह एटीआर-आधारित स्टॉप लॉस प्रबंधन का विचार प्रदान करता है लेकिन आगे अनुकूलन और सुधार की आवश्यकता है।
/*backtest start: 2022-10-03 00:00:00 end: 2023-10-09 00:00:00 period: 1d basePeriod: 1h 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/ // © ekinbasarkomur //@version=5 strategy("[EKIN] ATR Exit Strategy", overlay=true, initial_capital = 1000, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, calc_on_every_tick = true) // Simple EMA tracking fastEMA = ta.ema(close, 5) slowEMA = ta.ema (close, 20) atr = ta.atr(14) // We define entry price for future reference var float entry_price = na // We define stop and take profit for future calculations var float stop_price = na var float take_profit_price = na // We define atr limtim its here var float atr_down = na var float atr_up = na var float atr_current = na var float atr_ref = na avg = (low + high) / 2 // Conditions enterCondition = ta.crossover(fastEMA, slowEMA) var bool tookProfit = false timePeriod = time >= timestamp(syminfo.timezone, 2021, 12, 15, 0, 0) InTrade = strategy.position_size > 0 // Go long if conditions are met if (enterCondition and timePeriod and not InTrade) // Calculate and update variables entry_price := avg atr_ref := atr atr_div = int((avg - entry_price) / atr_ref) atr_down := entry_price + (atr_ref * (atr_div - 1.5)) atr_up := entry_price + (atr_ref * (atr_div + 1)) atr_current := entry_price + (atr_ref * atr_div) stop_price := (entry_price - (atr_ref * 1.5)) take_profit_price := (entry_price + (atr_ref * 3)) strategy.order("buy", strategy.long, qty = 2) // Enter here if in position if InTrade or tookProfit stopCondition = avg < stop_price takeProfitCondition = avg > take_profit_price if avg < atr_down stopCondition := true // Move stop price and exit price if price for each atr price increase if avg > atr_up if tookProfit atr_ref := atr atr_div = int((avg - entry_price) / atr_ref) atr_down := entry_price + (atr_ref * (atr_div - 1)) atr_up := entry_price + (atr_ref * (atr_div + 1)) atr_current := entry_price + (atr_ref * atr_div) // Take half of the investment if current price is 3 atr higher than entry price if (takeProfitCondition and timePeriod and InTrade and not tookProfit) strategy.order("take_half_profit", strategy.short, qty = 1) tookProfit := true // Exit position if conditions are met and reset the variables if (stopCondition and timePeriod and InTrade) if tookProfit strategy.order("exit", strategy.short, qty = 1) else strategy.order("stop_loss", strategy.short, qty = 2) tookProfit := false // Plot EMA's plot(fastEMA, color = color.blue) plot(slowEMA, color = color.yellow) // Plot ATR Limit/Stop positions profit_plot = plot(series = InTrade?atr_up:na, title = "profit", color = color.green, style=plot.style_linebr) close_plot = plot(series = InTrade?atr_current:na, title = "close", color = color.white, style=plot.style_linebr) stop_plot = plot(series = InTrade?atr_down:na, title = "stop_loss", color = color.red, style=plot.style_linebr) fill(profit_plot, close_plot, color = color.new(color.green, 80)) fill(close_plot, stop_plot, color =color.new(color.red,80))