मल्टी-फ़िल्टर आरएसआई मोमेंटम पुष्टि ट्रेडिंग रणनीति

RSI ATR supertrend SMA EMA RMA WMA
निर्माण तिथि: 2025-05-22 10:28:45 अंत में संशोधित करें: 2025-05-22 10:28:45
कॉपी: 1 क्लिक्स: 422
2
ध्यान केंद्रित करना
319
समर्थक

मल्टी-फ़िल्टर आरएसआई मोमेंटम पुष्टि ट्रेडिंग रणनीति मल्टी-फ़िल्टर आरएसआई मोमेंटम पुष्टि ट्रेडिंग रणनीति

अवलोकन

मल्टी-फ़िल्टरिंग आरएसआई गतिशीलता पुष्टिकरण ट्रेडिंग रणनीति एक प्रणालीगत ट्रेडिंग विधि है जो विशेष रूप से क्रिप्टोक्यूरेंसी बाजार के लिए डिज़ाइन की गई है। यह रणनीति आरएसआई गतिशीलता संकेत, लेनदेन की मात्रा की पुष्टि और सटीक के-लाइन आकृति की पहचान के संयोजन के माध्यम से उच्च संभावना वाले प्रवेश बिंदुओं की पहचान करती है, जबकि कमजोर संकेतों को फ़िल्टर करती है। रणनीति एक बहु-स्तरीय फ़िल्टरिंग प्रणाली लागू करती है, जिसमें ट्रेडों में प्रवेश करने के लिए कई शर्तों को एक साथ पूरा करने की आवश्यकता होती है, आरएसआई गतिशीलता, स्पष्ट रूप से लेनदेन और मजबूत के-लाइन आकृति को बदलने की आवश्यकता होती है। सिस्टम का उद्देश्य केवल सबसे विश्वसनीय ट्रेडिंग सेटिंग्स को पकड़ना है।

इस रणनीति के केंद्र में इसके कई पुष्टिकरण तंत्रों का मजबूत संयोजन है। RSI संभावित गतिशीलता को पहचानता है, लेकिन अस्थिर बाजारों में झूठे संकेत दे सकता है, लेन-देन की पुष्टि सुनिश्चित करती है कि केवल पर्याप्त बाजार की रुचि होने पर ही व्यापार किया जाए, K-लाइन प्रारूप को मजबूत मूल्य कार्रवाई की आवश्यकता के माध्यम से कमजोर रिवर्स को फ़िल्टर करने की आवश्यकता होती है। जब इन तीन फिल्टरों का संयोजन किया जाता है, तो मजबूत गतिशीलता को पकड़ने के दौरान झूठे संकेतों को काफी कम किया जाता है। रणनीति में अंतर्निहित जोखिम प्रबंधन सुविधाएं भी शामिल हैं, जो एटीआर उतार-चढ़ाव या निश्चित प्रतिशत जोखिम के आधार पर स्वचालित स्टॉप-लॉस और लाभ-प्रदंत स्थिति सेटिंग प्रदान करती हैं।

रणनीति सिद्धांत

इस रणनीति का मुख्य तर्क तीन प्रमुख तकनीकी संकेतकों के समन्वय पर आधारित है। पहला आरएसआई गतिशीलता का पता लगाने का तंत्र है। रणनीति 14 चक्र आरएसआई का उपयोग करती है, जिसमें 70 को ओवरबॉय स्तर के रूप में और 30 को ओवरबॉय स्तर के रूप में सेट किया गया है। बहु-हेड प्रविष्टियों के लिए, सिस्टम आरएसआई को 30 के नीचे से ऊपर की ओर पार करने की स्थिति का पता लगाता है, जो ओवरबॉय स्थिति से तेजी की गतिशीलता में परिवर्तन को दर्शाता है।

दूसरा महत्वपूर्ण घटक लेन-देन की मात्रा की पुष्टि करने वाला सिस्टम है। रणनीति की आवश्यकता है कि वर्तमान K लाइनों का लेन-देन 14 चक्र लेन-देन की सरल चलती औसत से अधिक होना चाहिए, जो यह सुनिश्चित करता है कि ट्रेडों को केवल पर्याप्त बाजार भागीदारी के साथ निष्पादित किया जाता है, जिससे कम तरलता वाले वातावरण में झूठी तोड़फोड़ को फ़िल्टर किया जाता है। तीसरा फ़िल्टर K लाइन आकृति विश्लेषण है, जिसमें मजबूत bullish या bearish K लाइनों की आवश्यकता होती है, जिनमें से आइटम का हिस्सा K लाइनों की कुल सीमा का कम से कम 50% होना चाहिए, जो यह सुनिश्चित करता है कि मूल्य कार्रवाई निर्णायक विशेषता है और अनिश्चित बाजार स्थितियों में कमजोर संकेतों से बचा जाता है।

रणनीति एक वैकल्पिक सुपरट्रेंड फ़िल्टर भी प्रदान करती है, जब यह चालू होता है, तो मल्टीहेड एंट्री को सुपरट्रेंड की बढ़ती दिशा के साथ संरेखित किया जाना चाहिए, और हेड एंट्री को डाउनट्रेंड के साथ संरेखित किया जाना चाहिए। डायनामिक एटीआर स्टॉप सिस्टम वर्तमान बाजार में उतार-चढ़ाव के आधार पर सुरक्षा स्तर को समायोजित करता है, स्टॉप और रिटर्न लक्ष्य की गणना करने के लिए 3.5 गुना एटीआर गुणक का उपयोग करता है, या एक निश्चित 0.5% स्टॉप विकल्प प्रदान करता है, रिस्क-टू-रिटर्न अनुपात 1.5: 1 पर सेट होता है।

श्रेष्ठता विश्लेषण

मल्टी-फिल्टरिंग आरएसआई गतिशीलता की पुष्टि करने वाली ट्रेडिंग रणनीति के कई महत्वपूर्ण फायदे हैं। सबसे पहले, इसकी मजबूत सिग्नल फ़िल्टरिंग क्षमता है, जो आरएसआई गतिशीलता रूपांतरण, लेन-देन की पुष्टि और मजबूत के-लाइन प्रारूप की तीन शर्तों को एक साथ पूरा करने की आवश्यकता के माध्यम से, रणनीति ने झूठे संकेतों की संभावना को काफी कम कर दिया है। यह मल्टी-फिल्टरिंग तंत्र यह सुनिश्चित करता है कि ट्रेडों को केवल तभी निष्पादित किया जाए जब बाजार वास्तविक गतिशीलता रूपांतरण के संकेत दिखाता है, जिससे ट्रेडों की सफलता दर में वृद्धि होती है।

दूसरा, रणनीति में उत्कृष्ट अनुकूलनशीलता और लचीलापन है। गतिशील एटीआर स्टॉप सिस्टम बाजार में उतार-चढ़ाव के आधार पर सुरक्षा स्तर को स्वचालित रूप से समायोजित करने में सक्षम है, उच्च उतार-चढ़ाव के दौरान अधिक आराम से रोक देता है, कम उतार-चढ़ाव के दौरान सुरक्षा को कसता है। यह अनुकूलनशीलता विशेषता रणनीति को विभिन्न बाजार स्थितियों में प्रभावी रहने में सक्षम बनाती है।

तीसरा महत्वपूर्ण लाभ एक व्यापक जोखिम प्रबंधन प्रणाली है। रणनीति दो बाहर निकलने के तरीके प्रदान करती है, एटीआर-आधारित गतिशील स्टॉपलॉस और फिक्स्ड प्रतिशत स्टॉपलॉस, और व्यापारी अपनी जोखिम वरीयताओं के अनुसार उपयुक्त विधि चुन सकते हैं। 1.5: 1 रिस्क-रिटर्न रेश्यो सेटिंग एक अच्छा लाभ-हानि संतुलन बिंदु सुनिश्चित करती है, भले ही जीत की दर थोड़ी कम हो। रणनीति कई ट्रेडिंग दिशाओं को भी समर्थन करती है, जिसमें केवल मल्टीहेड, केवल हेडहेड या दो-तरफा ट्रेडिंग शामिल है।

जोखिम विश्लेषण

हालांकि इस रणनीति में कई फ़िल्टरिंग तंत्र हैं, फिर भी कुछ संभावित जोखिमों के बारे में ध्यान देने की आवश्यकता है। प्राथमिक जोखिम यह है कि मजबूत रुझान वाले बाजारों में व्यापार के अवसरों को याद किया जा सकता है। क्योंकि रणनीति आरएसआई के ओवरबॉय ओवरसोल सिग्नल पर निर्भर करती है, आरएसआई लंबे समय तक चरम स्तर पर रह सकता है, जिससे रणनीति में प्रवेश सिग्नल उत्पन्न करने में असमर्थता होती है।

दूसरा महत्वपूर्ण जोखिम अस्थिर बाजारों में बार-बार व्यापार करना है। हालांकि कई फ़िल्टरों ने झूठे संकेतों को कम कर दिया है, बाजार अभी भी कई प्रतीत होता है कि प्रभावी लेकिन अंततः विफल ब्रेकआउट सिग्नल उत्पन्न कर सकते हैं। यह लगातार छोटे नुकसान के संचय का कारण बन सकता है। निवारक रणनीतियों में अतिरिक्त बाजार स्थिति फ़िल्टर जैसे कि अस्थिरता सूचक या प्रवृत्ति की ताकत सूचक शामिल हैं, जो कम प्रवृत्ति के वातावरण में व्यापार को रोकते हैं।

तीसरा जोखिम पैरामीटर अनुकूलन अति-फिट से संबंधित है। रणनीति में कई समायोज्य पैरामीटर शामिल हैं, जिनमें आरएसआई लंबाई, एटीआर चक्र, रिस्क-रिटर्न अनुपात आदि शामिल हैं। इन पैरामीटरों को ऐतिहासिक डेटा के लिए अनुकूलित करने के लिए अति-अनुकूलित करने से भविष्य में खराब प्रदर्शन हो सकता है। मजबूत पैरामीटर सेटिंग्स का उपयोग करने, नियमित रूप से आउट-ऑफ-नमूना परीक्षण करने और सीमित ऐतिहासिक डेटा के आधार पर अति-अनुकूलन से बचने की सिफारिश की जाती है। इसके अलावा, ट्रेडिंग लागत और स्लाइडिंग पॉइंट्स उच्च आवृत्ति वाले ट्रेडिंग वातावरण में रणनीति के प्रदर्शन को काफी प्रभावित कर सकते हैं, खासकर जब छोटे समय-फ्रेम पर काम किया जाता है।

अनुकूलन दिशा

इस रणनीति में कई महत्वपूर्ण अनुकूलन दिशाएं हैं। सबसे पहले, बाजार की स्थिति की पहचान करने की क्षमता को बढ़ाने के लिए, विभिन्न बाजार स्थितियों को बेहतर ढंग से पहचानने के लिए अतिरिक्त बाजार वर्गीकरण संकेतकों जैसे कि औसत वास्तविक सीमा अनुपात, अस्थिरता सूचकांक या प्रवृत्ति की ताकत संकेतक को एकीकृत किया जा सकता है। उच्च अस्थिरता वाले वातावरण में, रणनीति आरएसआई थ्रेशोल्ड को समायोजित कर सकती है या अतिरिक्त पुष्टिकरण शर्तों को जोड़ सकती है; कम अस्थिरता वाले वातावरण में, सिग्नल संवेदनशीलता बढ़ाने के लिए पैरामीटर को कड़ा किया जा सकता है। यह अनुकूलन पैरामीटर समायोजन विभिन्न बाजार स्थितियों में रणनीति के प्रदर्शन को काफी बढ़ाएगा।

दूसरा अनुकूलन दिशा बहु समय सीमा विश्लेषण लागू करना है। वर्तमान रणनीति मुख्य रूप से एक ही समय सीमा पर संचालित होती है, उच्च समय सीमा की प्रवृत्ति की पुष्टि को एकीकृत करके सिग्नल की गुणवत्ता में काफी सुधार किया जा सकता है। उदाहरण के लिए, जब रणनीति को 5 मिनट के चार्ट पर निष्पादित किया जाता है, तो 15 मिनट या 1 घंटे के चार्ट पर प्रवृत्ति की दिशा को संरेखित करने की आवश्यकता हो सकती है। इस पद्धति से प्रति-प्रवृत्ति व्यापार की आवृत्ति कम हो जाएगी और समग्र जीत की दर में वृद्धि होगी।

तीसरा महत्वपूर्ण अनुकूलन गतिशील स्थिति प्रबंधन प्रणाली का कार्यान्वयन है। वर्तमान रणनीति में एक निश्चित जोखिम-लाभ अनुपात का उपयोग किया जाता है, लेकिन स्थिति का आकार और लक्ष्य बाजार की अस्थिरता, सिग्नल की ताकत या ऐतिहासिक प्रदर्शन की गतिशीलता के आधार पर समायोजित किया जा सकता है। उच्च निश्चितता के संकेत के साथ स्थिति को बढ़ाएं और अनिश्चितता के साथ स्थिति को कम करें, यह गतिशील समायोजन पूंजी की दक्षता को अधिकतम करेगा।

चौथा अनुकूलन दिशा एकीकृत मशीन सीखने के घटकों है. यह ऐतिहासिक डेटा प्रशिक्षण मॉडल का उपयोग कर सकते हैं सबसे अच्छा प्रवेश शर्तों के संयोजन की पहचान करने के लिए, या संकेत की सफलता की संभावना की भविष्यवाणी. इस पद्धति को गतिशील रूप से वर्तमान बाजार की स्थिति के आधार पर रणनीति पैरामीटर को समायोजित कर सकते हैं, न कि स्थिर सेटिंग्स पर निर्भर करता है.

संक्षेप

मल्टी-फिल्टरिंग आरएसआई गतिशीलता पुष्टिकरण ट्रेडिंग रणनीति एक परिपक्व मात्रात्मक ट्रेडिंग पद्धति का प्रतिनिधित्व करती है, जो तकनीकी संकेतकों, लेन-देन की मात्रा विश्लेषण और जोखिम प्रबंधन के चतुराई से संयोजन के माध्यम से एक शक्तिशाली ट्रेडिंग प्रणाली का निर्माण करती है। इस रणनीति का मुख्य लाभ यह है कि इसकी बहु-स्तरीय फ़िल्टरिंग तंत्र प्रभावी रूप से झूठे संकेतों को कम करता है, जबकि वास्तविक बाजार के अवसरों के लिए संवेदनशीलता को बनाए रखता है। गतिशील एटीआर स्टॉप लॉस सिस्टम और लचीले पैरामीटर विन्यास इसे विभिन्न बाजार स्थितियों और ट्रेडिंग वरीयताओं के अनुकूल बनाने में सक्षम बनाते हैं।

बीटीसीयूएसडीटी 5-मिनट के चार्ट पर रणनीति के प्रतिक्रिया परिणामों ने अच्छा प्रदर्शन दिखाया, 58.49% की जीत, 1.472 का लाभ कारक और केवल 3.01% की अधिकतम वापसी ने अपने जोखिम-समायोजित लाभ की प्रभावशीलता को साबित किया। हालांकि, व्यापारियों को यह पहचानना होगा कि किसी भी रणनीति में अंतर्निहित जोखिम है, विशेष रूप से तेजी से बदलते क्रिप्टोक्यूरेंसी बाजार में।

इस रणनीति को सफलतापूर्वक लागू करने के लिए निरंतर निगरानी, नियमित पैरामीटर मूल्यांकन और बाजार की परिस्थितियों में परिवर्तन के लिए अनुकूली समायोजन की आवश्यकता होती है। इस रणनीति में प्रदर्शन को और बढ़ाने की बहुत बड़ी क्षमता है, विशेष रूप से बहु-समय फ्रेम विश्लेषण और गतिशील पैरामीटर समायोजन के माध्यम से अनुशंसित अनुकूलन दिशाओं के माध्यम से। अंततः, यह रणनीति क्रिप्टोक्यूरेंसी ट्रेडिंग में प्रवेश करने के लिए एक व्यवस्थित दृष्टिकोण की तलाश करने वाले व्यापारियों के लिए एक ठोस आधार प्रदान करती है, लेकिन हमेशा उचित जोखिम प्रबंधन और निरंतर सीखने के साथ जोड़ी जानी चाहिए।

रणनीति स्रोत कोड
/*backtest
start: 2024-05-21 00:00:00
end: 2025-05-20 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © nioboi

// Best settings already at default. 
// Use at BTCUSDT 5m chart
// strategy properties: start with 100 usdt capital, set order size to be 20 usdt
// for indicator use (buy sell signals only), rightclick on chart and disable "Trades On Chart"

//@version=6
strategy("Volume FIltered RSI Buy/Sell Strategy", overlay=true, process_orders_on_close=true, commission_value=0.055, initial_capital=100, currency=currency.USDT, pyramiding=1)

// =========================================
// Input Groups
// =========================================
string rsi_group = "RSI"
string atr_sl_finder_group = "ATR SL Finder"
string trade_execution_group = "Strategy Execution"
string supertrend_group = "Supertrend Filter"
string range_filter_group = "Range Detector Filter"

// =========================================
// RSI Calculation
// =========================================
rsi_ob = input.int(70, "Overbought Level", group=rsi_group)
rsi_os = input.int(30, "Oversold Level", group=rsi_group)
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group=rsi_group)
rsiSourceInput = input.source(close, "Source", group=rsi_group)

change = ta.change(rsiSourceInput)
up = ta.rma(math.max(change, 0), rsiLengthInput)
down = ta.rma(-math.min(change, 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

rsi_can_long = rsi[1] < rsi_os and rsi >= rsi_os
rsi_can_short = rsi[1] > rsi_ob and rsi <= rsi_ob

// =========================================
// Candle Body Conditions
// =========================================
isBullCandle = close > open and (math.abs(close - open) > (high - low) * 0.5)
isBearCandle = close < open and (math.abs(close - open) > (high - low) * 0.5)

// =========================================
// Volume Filter
// =========================================
has_volume = volume >= ta.sma(volume, 14)

// Initial can_long and can_short
can_long = rsi_can_long and isBullCandle and has_volume
can_short = rsi_can_short and isBearCandle and has_volume

// =========================================
// Supertrend Filter
// =========================================
useSupertrendFilter = input.bool(false, "Use Supertrend Filter", group=supertrend_group)
st_tf = input.timeframe("", "Supertrend Timeframe", group=supertrend_group)
atrPeriod = input.int(10, "ATR Length", minval=1, group=supertrend_group)
factor = input.float(3.0, "Factor", minval=0.01, step=0.01, group=supertrend_group)

[supertrendVal, directionVal] = request.security(syminfo.tickerid, st_tf, ta.supertrend(factor, atrPeriod))

if useSupertrendFilter
    can_long := can_long and directionVal < 0 and close > supertrendVal
    can_short := can_short and directionVal > 0 and close < supertrendVal

// =========================================
// ATR SL Finder © Veryfid
// =========================================
atrlength = input.int(title='Length', defval=14, minval=1, group=atr_sl_finder_group)
smoothing = input.string(title='Smoothing', defval='RMA', options=['RMA','SMA','EMA','WMA'], group=atr_sl_finder_group)
m = input(3.5, 'Multiplier', group=atr_sl_finder_group)
src1 = high
src2 = low

ma_function(source, length) =>
    if smoothing == 'RMA'
        ta.rma(source, length)
    else
        if smoothing == 'SMA'
            ta.sma(source, length)
        else
            if smoothing == 'EMA'
                ta.ema(source, length)
            else
                ta.wma(source, length)

x = ma_function(ta.tr(true), atrlength) * m + src1 // SHORT SL
x2 = src2 - ma_function(ta.tr(true), atrlength) * m // LONG SL

p1 = plot(x, title="ATR Short Stop Loss", color=#ffffff18)
p2 = plot(x2, title="ATR Long Stop Loss", color=#ffffff18)

// =========================================
// Strategy Execution
// =========================================
tradeDirection = input.string("Both", "Trade Direction", ["Long Only","Short Only","Both"], group=trade_execution_group)
risk_reward_ratio = input.float(1.5, "Risk Reward Ratio", group=trade_execution_group)
exit_strategy = input.string("Fixed Percent", "Exit Strategy", ["ATR","Fixed Percent"], group=trade_execution_group)
SLPercent = input.float(0.5, "Stoploss Percent (%)", group=trade_execution_group)

enterLong = can_long and (tradeDirection == "Long Only" or tradeDirection == "Both")
enterShort = can_short and (tradeDirection == "Short Only" or tradeDirection == "Both")

var bool plotMarkers_long = false
var float sl_long = na
var float tp2_long = na
var float entryPrice_long = na

var bool plotMarkers_short = false
var float sl_short = na
var float tp2_short = na
var float entryPrice_short = na

if exit_strategy == "ATR"
    // Long Entries
    if enterLong and strategy.position_size == 0
        entryPrice_long := close
        sl_long := x2
        risk = entryPrice_long - sl_long
        tp2_long := entryPrice_long + (risk_reward_ratio * risk)
        strategy.entry("Long", strategy.long)
        strategy.exit("Exit Long", "Long", limit=tp2_long, stop=sl_long)
    // Short Entries
    if enterShort and strategy.position_size == 0
        entryPrice_short := close
        sl_short := x
        risk = sl_short - entryPrice_short
        tp2_short := entryPrice_short - (risk_reward_ratio * risk)
        strategy.entry("Short", strategy.short)
        strategy.exit("Exit Short", "Short", limit=tp2_short, stop=sl_short)

if exit_strategy == "Fixed Percent"
    // Long Entries
    if enterLong and strategy.position_size == 0
        entryPrice_long := close
        sl_long := close * (1 - SLPercent / 100)
        risk = entryPrice_long - sl_long
        tp2_long := entryPrice_long + (risk_reward_ratio * risk)
        strategy.entry("Long", strategy.long)
        strategy.exit("Exit Long", "Long", limit=tp2_long, stop=sl_long)
    // Short Entries
    if enterShort and strategy.position_size == 0
        entryPrice_short := close
        sl_short := close * (1 + SLPercent / 100)
        risk = sl_short - entryPrice_short
        tp2_short := entryPrice_short - (risk_reward_ratio * risk)
        strategy.entry("Short", strategy.short)
        strategy.exit("Exit Short", "Short", limit=tp2_short, stop=sl_short)

// Entry Visual Flags
if strategy.position_size == 0
    plotMarkers_long := false
    plotMarkers_short := false
if strategy.position_size > 0
    plotMarkers_long := true
    plotMarkers_short := false
else if strategy.position_size < 0
    plotMarkers_long := false
    plotMarkers_short := true

// SL and TP Lines
longEntryMarker = plot(plotMarkers_long ? entryPrice_long : na, "Entry Marker L", color=na)
longSLMarker = plot(plotMarkers_long ? sl_long : na, "SL Marker L", color=#ff000050, linewidth=1, style=plot.style_linebr)
longTP2Marker = plot(plotMarkers_long ? tp2_long : na, "TP2 Marker L", color=#1100ff50, linewidth=1, style=plot.style_linebr)

plotshape(enterLong and strategy.position_size == 0, "BUY", shape.triangleup, location.belowbar, color.green, text="BUY", size=size.small, textcolor=color.green)
plotshape(enterShort and strategy.position_size == 0, "SELL", shape.triangledown, location.abovebar, color.red, text="SELL", size=size.small, textcolor=color.red)

shortEntryMarker = plot(plotMarkers_short ? entryPrice_short : na, "Entry Marker S", color=na)
shortSLMarker = plot(plotMarkers_short ? sl_short : na, "SL Marker S", color=#ff000050, linewidth=1, style=plot.style_linebr)
shortTP2Marker = plot(plotMarkers_short ? tp2_short : na, "TP2 Marker S", color=#1100ff50, linewidth=1, style=plot.style_linebr)

// SL and TP Fills
fill(plot1=longEntryMarker, plot2=longSLMarker, title="Long SL BG Fill", color=#b2283320)
fill(plot1=longEntryMarker, plot2=longTP2Marker, title="Long TP BG Fill", color=#08998120)
fill(plot1=shortEntryMarker, plot2=shortSLMarker, title="Short SL BG Fill", color=#b2283320)
fill(plot1=shortEntryMarker, plot2=shortTP2Marker, title="Short TP BG Fill", color=#08998120)

// Supertrend Plots (Only show if using supertrend filter)
upTrend = plot(useSupertrendFilter ? (directionVal < 0 ? supertrendVal : na) : na, "Up Trend", color=color.new(color.green,0), style=plot.style_linebr)
downTrend = plot(useSupertrendFilter ? (directionVal < 0 ? na : supertrendVal) : na, "Down Trend", color=color.new(color.red,0), style=plot.style_linebr)
bodyMiddle = plot(useSupertrendFilter ? (barstate.isfirst ? na : (open + close) / 2) : na, "Body Middle", display=display.none)

fill(bodyMiddle, upTrend,   color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle, downTrend, color.new(color.red,   90), fillgaps=false)