وسائل لوڈ ہو رہے ہیں... لوڈنگ...

RSI Bollinger Bands اور متحرک معاونت/مقاومت کی مقداری حکمت عملی کے ساتھ مل کر

مصنف:چاؤ ژانگ، تاریخ: 2024-01-24 15:19:22
ٹیگز:

img

جائزہ

یہ حکمت عملی مارکیٹ میں اوور بک / اوور سیلڈ سطحوں کا فیصلہ کرنے کے لئے آر ایس آئی اشارے کا استعمال کرتی ہے ، جس میں بولنگر بینڈ کے ساتھ مل کر قیمتوں میں اتار چڑھاؤ کی حد کا تعین کیا جاتا ہے۔ اس کے علاوہ ، متحرک سپورٹ / مزاحمت صرف اعلی / کم قیمتوں کی بنیاد پر تیار کی جاتی ہے جب قیمت سپورٹ / مزاحمت کی سطحوں کے قریب ہوتی ہے۔ صارفین ٹرینڈ فلٹر کی شرط مقرر کرسکتے ہیں ، جیسے سادہ حرکت پذیر اوسط ، تاکہ یہ یقینی بنایا جاسکے کہ قیمت کا رجحان تجارتی سمتوں کے ساتھ سیدھا ہے۔ یہ حکمت عملی مضبوط سگنل کی درستگی کے لئے متعدد تکنیکی اشارے کو مربوط کرتی ہے اور مارکیٹ کے مواقع کو مؤثر طریقے سے حاصل کرتی ہے۔

حکمت عملی منطق

حکمت عملی میں 3 اہم اجزاء شامل ہیں آر ایس آئی، بولنگر بینڈ اور متحرک ایس / آر.

RSI جزو overbought / oversold سطحوں کا فیصلہ کرتا ہے۔ RSI 30 سے نیچے گرنے سے oversold حالت کا اشارہ ہوتا ہے اور خریدنے کا اشارہ ہوتا ہے۔ RSI 70 سے اوپر بڑھنے سے overbought حالت کا اشارہ ہوتا ہے اور فروخت کا اشارہ ہوتا ہے۔

بولنگر بینڈ قیمت کے چلتے ہوئے اوسط اور معیاری انحراف سے شمار ہونے والے اوپری / نچلے بینڈ ہیں ، تاکہ یہ معلوم کیا جاسکے کہ کیا قیمت معمول کی اتار چڑھاؤ کی حد سے باہر نکل گئی ہے۔ قیمت جو اوپری بینڈ کے قریب آتی ہے وہ فروخت کا اشارہ کرتی ہے جبکہ نچلی بینڈ خرید کا اشارہ کرتی ہے۔

ایس / آر جزو تاریخی اعلی / کم قیمتوں (یا بند / کھلی قیمتوں) پر مبنی تاریخی اعلی / کم قیمتوں (یا بند / کھلی قیمتوں) کے ساتھ ساتھ تاریخی قیمتوں کے الٹ پوائنٹس کے اندر اندر ایک متحرک حساب کے طریقہ کار کا استعمال کرتا ہے۔ جب قیمت اہم مزاحمت کی سطح تک بڑھتی ہے تو یہ فروخت سگنل کو متحرک کرتا ہے ، اور جب قیمت سپورٹ کی سطح پر گرتی ہے تو سگنل خریدتا ہے۔

خلاصہ یہ کہ یہ حکمت عملی صرف اس وقت خرید/فروخت کی تجارت شروع کرتی ہے جب آر ایس آئی اوور بکڈ/اوور سیلڈ، بولنگر بینڈ سے باہر نکلنے والی قیمت اور متحرک ایس/آر کی سطح کے قریب ہوتی ہے۔

فوائد

  1. بنیادی اشارے آر ایس آئی کو تکنیکی تجزیہ اشارے بولنگر بینڈس کے ساتھ مل کر۔ آر ایس آئی بنیادی طور پر زیادہ خرید / زیادہ فروخت کی سطح کا فیصلہ کرتا ہے جبکہ بولنگر بینڈ تکنیکی قیمت کے نمونوں کا تعین کرتا ہے۔

  2. متحرک S/R حساب کتاب اصل S/R سے زیادہ قریب ہے جو قیمت کی نقل و حرکت پر حکمرانی کرتا ہے۔

  3. رجحان فلٹر کا اضافہ آر ایس آئی اور بولنگر بینڈ کے ساتھ مل کر شور کو فلٹر کرکے سگنل کی درستگی کو مزید بہتر بناتا ہے۔

خطرات

  1. RSI پیرامیٹر کی غلط ترتیبات غلط فیصلے کا سبب بن سکتی ہیں۔ RSI کی لمبائی بہت کم ہونے سے شور بڑھتا ہے۔ خریدی گئی / فروخت کی حد سے زیادہ حد کی غلط ترتیب بھی غلطیوں کا باعث بنتی ہے۔

  2. غلط بولنگر بینڈ پیرامیٹرز جیسے لمبائی، StdDev ضارب فیصلہ کی درستگی کو متاثر کرتا ہے۔

  3. متحرک ایس / آر تاریخی اعلی / کم قیمتوں پر انحصار کرتا ہے لہذا اس میں تاخیر کا رجحان ہوتا ہے۔ صارفین کو موجودہ قیمت سے زیادہ مطابقت کے ل S ایس / آر پیرامیٹرز کو بہتر بنانا چاہئے۔

  4. اس حکمت عملی میں نسبتا complex پیچیدہ منطق ہے جس میں متعدد اشارے ہیں جو ممکنہ طور پر مداخلت کا سبب بن سکتے ہیں۔ صارفین کو تنازعات کو کم کرنے کے لئے پیرامیٹرز کی جانچ کرنی چاہئے۔ اندراج کے معیار کو آسان بنانے سے غلطیوں کو کم سے کم کرنے میں بھی مدد ملتی ہے۔

اصلاح کی ہدایات

  1. RSI پیرامیٹرز کی جانچ اور اصلاح کریں جن میں لمبائی ، زیادہ خرید / زیادہ فروخت کی حد شامل ہے۔

  2. ٹیسٹ اور لمبائی اور StdDev ضارب سمیت بولنگر بینڈ پیرامیٹرز کو بہتر بنائیں.

  3. متحرک ایس / آر پیرامیٹرز کو بہتر بنائیں تاکہ ایس / آر کی سطح کو قیمت کے قریب سے جوڑیں ، جیسے مختصر ریورس پیریڈ یا کم تاریخی اعلی / کم قیمتوں کا استعمال کریں۔

  4. RSI کے ساتھ مل کر اضافی معاون اشارے، جیسے KDJ، MACD وغیرہ کی جانچ کریں تاکہ درستگی کو بہتر بنایا جا سکے۔

  5. ٹیسٹ اور رجحان فلٹر پیرامیٹرز کو بہتر بنانے، خاص طور پر فلٹر کی لمبائی، برقرار رکھنے کی مدت کو بڑھانے اور غیر ضروری ریورس احکامات کو کم کرنے کے لئے.

نتیجہ

یہ حکمت عملی متعدد اشارے جیسے آر ایس آئی ، بولنگر بینڈ اور متحرک ایس / آر کی طاقتوں کا فائدہ اٹھاتی ہے ، جس میں مضبوط سگنل کی درستگی کے ل extensive وسیع پیمانے پر کراس تصدیق ہوتی ہے۔ رجحان فلٹر کو شامل کرنے سے شور کو مزید کم کیا جاتا ہے۔ لچکدار پیرامیٹر ٹوننگ کے ساتھ ، صارفین اپنی ضروریات کے مطابق اس حکمت عملی کو بہتر بنا سکتے ہیں۔ پیرامیٹر کی مناسب جانچ اور اصلاح سے زیادہ نمایاں کارکردگی ہوگی۔ یہ ایک بہت ہی وعدہ کرنے والی مقداری حکمت عملی ہے۔


/*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)

مزید