आरएसआई और बोलिंगर बैंड समर्थन और प्रतिरोध गतिशील संयोजन मात्रात्मक रणनीति


निर्माण तिथि: 2024-01-24 15:19:22 अंत में संशोधित करें: 2024-01-24 15:19:22
कॉपी: 1 क्लिक्स: 709
1
ध्यान केंद्रित करना
1617
समर्थक

आरएसआई और बोलिंगर बैंड समर्थन और प्रतिरोध गतिशील संयोजन मात्रात्मक रणनीति

अवलोकन

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

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

इस रणनीति में मुख्य रूप से आरएसआई, ब्रिन बैंड और गतिशील समर्थन प्रतिरोध के तीन भाग शामिल हैं।

आरएसआई का एक हिस्सा ओवरबॉट ओवरसोल को निर्धारित करने के लिए उपयोग किया जाता है। आरएसआई 30 से कम होने पर ओवरसोल क्षेत्र है, इस समय एक खरीद संकेत दिया जाएगा। आरएसआई 70 से अधिक होने पर ओवरसोल क्षेत्र है, इस समय एक बेचने का संकेत दिया जाएगा।

ब्रिन बैंड मूल्य औसत रेखा और मानक अंतर के आधार पर मूल्य के उतार-चढ़ाव को निर्धारित करने के लिए उपयोग किया जाता है ताकि यह निर्धारित किया जा सके कि क्या कीमत सामान्य उतार-चढ़ाव वाली सीमा से बाहर है। जब कीमत ऊपरी पट्टी के करीब होती है, तो बेची जाती है और जब यह नीचे की पट्टी के करीब होती है, तो खरीदी जाती है।

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

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

रणनीतिक लाभ

  1. मौलिक सूचक और तकनीकी सूचक के संयोजन में. आरएसआई ने मूलभूत रूप से ओवरबॉट और ओवरसोल्ड का निर्धारण किया, जबकि ब्रिन बैंड का उपयोग करके कीमत की तकनीकी आकृति का निर्धारण किया गया।

  2. गतिशील समर्थन और प्रतिरोध की गणना करें, जो वास्तविक समर्थन और प्रतिरोध के करीब है।

  3. प्रवृत्ति फ़िल्टर जोड़े गए हैं, जो आरएसआई और ब्रिन बैंड के साथ काम करते हैं, निर्णय में सुधार करते हैं और अधिकांश शोर संकेतों को फ़िल्टर करते हैं।

रणनीतिक जोखिम

  1. आरएसआई पैरामीटर को गलत तरीके से सेट करने से गलतफहमी हो सकती है। आरएसआई की लंबाई बहुत कम होने से शोर बढ़ जाता है; आरएसआई ओवरबॉट ओवरबॉट थ्रेशोल्ड को गलत तरीके से सेट करने से गलती हो सकती है।

  2. बुरीन बैंड पैरामीटर जैसे लंबाई, StdDev गुणांक की गलत सेटिंग भी निर्णय की सटीकता को प्रभावित कर सकती है।

  3. गतिशील समर्थन और प्रतिरोध के लिए ऐतिहासिक उच्च और निम्न की गणना के कारण देरी होती है। उपयोगकर्ता को समर्थन और प्रतिरोध के पैरामीटर को उचित रूप से अनुकूलित करना चाहिए ताकि समर्थन और प्रतिरोध का स्तर वर्तमान कीमत के करीब हो।

  4. यह रणनीति जटिल है और कई सूचकांक संयोजन एक दूसरे के साथ हस्तक्षेप कर सकते हैं। उपयोगकर्ताओं को सूचकांक मापदंडों का परीक्षण करना चाहिए ताकि सूचकांक संघर्ष को कम किया जा सके। इसके अलावा, संयोजन की शर्तों को उचित रूप से सरल किया जा सकता है ताकि गलत निर्णय की संभावना कम हो सके।

रणनीति अनुकूलन दिशा

  1. आरएसआई पैरामीटर सेटिंग्स का परीक्षण करें, आरएसआई की लंबाई का अनुकूलन करें, ओवरबॉट और ओवरबॉट थ्रेशोल्ड की जांच करें।

  2. परीक्षण ब्रीनिंग बैंड पैरामीटर सेटिंग, ब्रीनिंग बैंड लंबाई, StdDev गुणांक को अनुकूलित करना।

  3. गतिशील समर्थन और प्रतिरोध के पैरामीटर को अनुकूलित करें ताकि समर्थन और प्रतिरोध स्तर कीमत के करीब हो। छोटी अवधि, कम ऐतिहासिक उच्च और निम्न और अन्य सेटिंग्स का प्रयास करें।

  4. अन्य सहायक संकेतकों को जोड़ना या परीक्षण करना, जैसे कि केडीजे, एमएसीडी और आरएसआई के साथ संयोजन, निर्णय की सटीकता में सुधार करना।

  5. प्रवृत्ति फ़िल्टर पैरामीटर का परीक्षण करें, फ़िल्टर लंबाई का अनुकूलन करें, होल्डिंग समय बढ़ाएं, अनावश्यक रिवर्स ऑपरेशन को कम करें।

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI + BB + S/R Strategy with Trend Filter", shorttitle="RSI + BB + S/R + Trend Filter", overlay=true)

// RSI Settings
rsi_length = input.int(14, title="RSI Length")
overbought = input.int(70, title="Overbought Level")
oversold = input.int(30, title="Oversold Level")

// Bollinger Bands Settings
bb_length = input.int(20, title="BB Length")
bb_deviation = input.float(2.0, title="BB Deviation")

// Dynamic Support/Resistance Settings
pivot_period = input.int(10, title="Pivot Period")
pivot_source = input.string("High/Low", title="Pivot Source", options=["High/Low", "Close/Open"])
max_pivots = input.int(20, title="Maximum Number of Pivot", minval=5, maxval=100)
channel_width = input.int(10, title="Maximum Channel Width %", minval=1)
max_sr_levels = input.int(5, title="Maximum Number of S/R Levels", minval=1, maxval=10)
min_strength = input.int(2, title="Minimum Strength", minval=1, maxval=10)

// Trend Filter Settings
use_trend_filter = input.bool(false, title="Use Trend Filter")
trend_filter_length = input.int(50, title="Trend Filter Length")

// Calculate RSI and Bollinger Bands
rsi = ta.rsi(close, rsi_length)
basis = ta.sma(close, bb_length)
deviation = ta.stdev(close, bb_length)
upper_band = basis + bb_deviation * deviation
lower_band = basis - bb_deviation * deviation

// Plot Bollinger Bands on the chart
plot(upper_band, color=color.blue, title="Upper Bollinger Band")
plot(lower_band, color=color.red, title="Lower Bollinger Band")

// Dynamic Support/Resistance Calculation
float src1 = pivot_source == "High/Low" ? high : math.max(close, open)
float src2 = pivot_source == "High/Low" ? low : math.min(close, open)
float ph = ta.pivothigh(src1, pivot_period, pivot_period)
float pl = ta.pivotlow(src2, pivot_period, pivot_period)


// Calculate maximum S/R channel zone width
prdhighest = ta.highest(300)
prdlowest = ta.lowest(300)
cwidth = (prdhighest - prdlowest) * channel_width / 100

var pivotvals = array.new_float(0)

if ph or pl
    array.unshift(pivotvals, ph ? ph : pl)
    if array.size(pivotvals) > max_pivots
        array.pop(pivotvals)

get_sr_vals(ind) =>
    float lo = array.get(pivotvals, ind)
    float hi = lo
    int numpp = 0
    for y = 0 to array.size(pivotvals) - 1 by 1
        float cpp = array.get(pivotvals, y)
        float wdth = cpp <= lo ? hi - cpp : cpp - lo
        if wdth <= cwidth
            if cpp <= hi
                lo := math.min(lo, cpp)
            else
                hi := math.max(hi, cpp)
            numpp += 1
    [hi, lo, numpp]

var sr_up_level = array.new_float(0)
var sr_dn_level = array.new_float(0)
sr_strength = array.new_float(0)

find_loc(strength) =>
    ret = array.size(sr_strength)
    for i = ret > 0 ? array.size(sr_strength) - 1 : na to 0 by 1
        if strength <= array.get(sr_strength, i)
            break
        ret := i
    ret

check_sr(hi, lo, strength) =>
    ret = true
    for i = 0 to array.size(sr_up_level) > 0 ? array.size(sr_up_level) - 1 : na by 1
        if array.get(sr_up_level, i) >= lo and array.get(sr_up_level, i) <= hi or array.get(sr_dn_level, i) >= lo and array.get(sr_dn_level, i) <= hi
            if strength >= array.get(sr_strength, i)
                array.remove(sr_strength, i)
                array.remove(sr_up_level, i)
                array.remove(sr_dn_level, i)
            else
                ret := false
            break
    ret

if ph or pl
    array.clear(sr_up_level)
    array.clear(sr_dn_level)
    array.clear(sr_strength)
    for x = 0 to array.size(pivotvals) - 1 by 1
        [hi, lo, strength] = get_sr_vals(x)
        if check_sr(hi, lo, strength)
            loc = find_loc(strength)
            if loc < max_sr_levels and strength >= min_strength
                array.insert(sr_strength, loc, strength)
                array.insert(sr_up_level, loc, hi)
                array.insert(sr_dn_level, loc, lo)
                if array.size(sr_strength) > max_sr_levels
                    array.pop(sr_strength)
                    array.pop(sr_up_level)
                    array.pop(sr_dn_level)

// Calculate the Trend Filter
trend_filter = use_trend_filter ? ta.sma(close, trend_filter_length) : close

// Buy Condition (RSI + Proximity to Support + Trend Filter)
buy_condition = ta.crossover(rsi, oversold) and close <= ta.highest(high, max_sr_levels) and close >= ta.lowest(low, max_sr_levels) and (not use_trend_filter or close > trend_filter)

// Sell Condition (RSI + Proximity to Resistance + Trend Filter)
sell_condition = ta.crossunder(rsi, overbought) and close >= ta.lowest(low, max_sr_levels) and close <= ta.highest(high, max_sr_levels) and (not use_trend_filter or close < trend_filter)

// Strategy Orders
strategy.entry("Buy", strategy.long, when = buy_condition)
strategy.entry("Sell", strategy.short, when = sell_condition)