بولنگر بینڈز اور RSI اشارے کے امتزاج کی حکمت عملی


تخلیق کی تاریخ: 2023-10-25 14:47:21 آخر میں ترمیم کریں: 2023-10-25 14:47:21
کاپی: 0 کلکس کی تعداد: 642
1
پر توجہ دیں
1617
پیروکار

بولنگر بینڈز اور RSI اشارے کے امتزاج کی حکمت عملی

جائزہ

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

حکمت عملی کا اصول

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

  2. بلین بینڈوتھ (اوپر اور نیچے کی ٹریک کی فرق) موجودہ مارکیٹ میں اتار چڑھاؤ کی شرح کی عکاسی کرتا ہے۔ جب بلین بینڈوتھ بڑھ جاتا ہے تو ، اتار چڑھاؤ بڑھ جاتا ہے ، اس وقت آر ایس آئی اوور بیو اور اوور سیل کی صورتحال کا بہتر اندازہ لگاتا ہے۔

  3. آر ایس آئی اشارے نے اوور خرید اوور فروخت کا فیصلہ کیا۔ آر ایس آئی 70 سے زیادہ ہے تو یہ اوور خرید زون ہے ، اور 30 سے کم ہے تو یہ اوور فروخت زون ہے۔ جب آپ داخل ہوتے ہیں تو اوور خرید اوور فروخت زون سے گریز کریں ، تاکہ بہتر رسک ریٹرن حاصل کریں۔

  4. مخصوص تجارتی اشارے: (1) اشارے کی نگرانی: قیمتوں میں اضافہ ہوا ہے اور آر ایس آئی نے زیادہ خریداری نہیں کی ہے ((RSI 70 سے کم ہے) (2) گرنے کا اشارہ: قیمت ٹریک سے نیچے گر گئی اور RSI نے زیادہ فروخت نہیں کیا ((RSI 30 سے زیادہ ہے))

  5. اسٹاپ نقصان سے باہر نکلنا: اگر آر ایس آئی 70 سے نیچے جاتا ہے تو پوائنٹ ٹریڈنگ بند ہوجاتی ہے۔ اگر آر ایس آئی 30 سے اوپر جاتا ہے تو پوائنٹ ٹریڈنگ بند ہوجاتی ہے۔

طاقت کا تجزیہ

یہ حکمت عملی مندرجہ ذیل فوائد رکھتی ہے:

  1. اس کے علاوہ، یہ بھی کہا گیا ہے کہ اس طرح کی معلومات کو زیادہ جامع اور سگنل زیادہ قابل اعتماد بنا دیا گیا ہے.

  2. برن کی پٹی کا استعمال کرتے ہوئے مجموعی طور پر رجحان کی سمت کا تعین کرنے کے لئے، بڑے ڈسک کی حمایت، رجحانات کو پکڑنے کے لئے.

  3. RSI اشارے نے غیر ضروری خطرے سے بچنے کے لئے مقامی اوورلوڈ اور اوورلوڈ کا فیصلہ کیا.

  4. نقصانات کو کم کرنے کے لئے نقصان کی روک تھام کا نظام زیادہ سخت ہے.

خطرے کا تجزیہ

اس حکمت عملی میں مندرجہ ذیل خطرات بھی ہیں:

  1. برین بینڈ اور آر ایس آئی اشارے دونوں کی خرابی ہوسکتی ہے ، جس سے تجارتی سگنل غلط ہوجاتے ہیں۔

  2. نقصانات کو روکنے کے اقدامات کے باوجود ، اسٹاپ پوائنٹ کی غلط ترتیب سے بڑے نقصانات کا سامنا کرنا پڑتا ہے۔

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

  4. پیرامیٹرز کو غیر مناسب طریقے سے بہتر بنانے سے زیادہ مماثلت پیدا ہوسکتی ہے۔

اصلاح کی سمت

اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:

  1. مختلف اشارے کے پیرامیٹرز کے مجموعے کی جانچ کریں اور بہترین پیرامیٹرز تلاش کریں۔

  2. ADDR / ATR اسٹاپ ، موبائل اسٹاپ ، وغیرہ جیسے نقصان کو روکنے کے طریقوں میں لچک کو بڑھانا

  3. پوزیشن مینجمنٹ کی حکمت عملی شامل کریں ، جیسے فکسڈ پوزیشن ، مارٹینگل ، وغیرہ

  4. مزید اشارے فلٹر سگنل کے ساتھ، جیسے ٹرانزیکشن حجم توانائی وغیرہ۔

  5. مشین لرننگ کے ذریعہ پیرامیٹرز کی موافقت کو بہتر بنانا۔

  6. رجحانات کی تصدیق کے اشارے کے بعد داخلے کے وقت کو بہتر بنائیں۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 2h
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/
// © evillalobos1123

//@version=5
strategy("Villa Dinamic Pivot Supertrend Strategy", overlay=true, calc_on_every_tick = true, default_qty_type = strategy.fixed)

//INPUTS

ema_b = input.bool(false, "Use Simple EMA Filter", group = "Strategy Inputs")
ema_b_ang = input.bool(true, "Use DEMA Angle Filter", group = "Strategy Inputs")
dema_b = input.bool(true, "Use DEMA Filter", group = "Strategy Inputs")
st_sig = input.bool(false, "Take Every Supertrend Signal" , group = "Strategy Inputs")
take_p = input.bool(true, "Stop Loss at Supertrend", group = "Strategy Inputs")
din_tp = input.bool(false, "2 Steps Take Profit", group = "Strategy Inputs")
move_sl = input.bool(true, "Move SL", group = "Strategy Inputs")
sl_atr = input.float(2.5, "Stop Loss ATR Multiplier", group = "Strategy Inputs")
tp_atr = input.float(4, "Take Profit ATR Multiplier", group = "Strategy Inputs")
din_tp_qty = input.int(50, "2 Steps TP qty%", group = "Strategy Inputs")
dema_a_filter = input.float(0, "DEMA Angle Threshold (+ & -)", group = "Strategy Inputs")
dema_a_look = input.int(1, "DEMA Angle Lookback", group = "Strategy Inputs")
dr_test = input.string("Backtest", "Testing", options = ["Backtest", "Forwardtest", "All"], group = "Strategy Inputs")

not_in_trade = strategy.position_size == 0

//Backtesting date range

start_year = input.int(2021, "Backtesting start year", group = "BT Date Range")
start_month = input.int(1, "Backtesting start month", group = "BT Date Range")
start_date = input.int(1, "Backtesting start day", group = "BT Date Range")
end_year = input.int(2021, "Backtesting end year", group = "BT Date Range")
end_month = input.int(12, "Backtesting end month", group = "BT Date Range")
end_date = input.int(31, "Backtesting end day", group = "BT Date Range")

bt_date_range = (time >= timestamp(syminfo.timezone, start_year,
         start_month, start_date, 0, 0)) and
     (time < timestamp(syminfo.timezone, end_year, end_month, end_date, 0, 0))
     

//Forward testing date range

start_year_f = input.int(2022, "Forwardtesting start year", group = "FT Date Range")
start_month_f = input.int(1, "Forwardtesting start month", group = "FT Date Range")
start_date_f = input.int(1, "Forwardtesting start day", group = "FT Date Range")
end_year_f = input.int(2022, "Forwardtesting end year", group = "FT Date Range")
end_month_f = input.int(03, "Forwardtesting end month", group = "FT Date Range")
end_date_f = input.int(26, "Forwardtesting end day", group = "FT Date Range")

ft_date_range = (time >= timestamp(syminfo.timezone, start_year_f,
         start_month_f, start_date_f, 0, 0)) and
     (time < timestamp(syminfo.timezone, end_year_f, end_month_f, end_date_f, 0, 0))


//date condition
date_range_cond = if dr_test == "Backtest"
    bt_date_range
else if dr_test == "Forwardtest"
    ft_date_range
else
    true
    

//INDICATORS

//PIVOT SUPERTREND
prd = input.int(2, "PVT ST Pivot Point Period", group = "Pivot Supertrend")
Factor=input.float(3, "PVT ST ATR Factor", group = "Pivot Supertrend")
Pd=input.int(9 ,  "PVT ST ATR Period", group = "Pivot Supertrend")

// get Pivot High/Low
float ph = ta.pivothigh(prd, prd)
float pl = ta.pivotlow(prd, prd)

// calculate the Center line using pivot points
var float center = na
float lastpp = ph ? ph : pl ? pl : na
if lastpp
    if na(center)
        center := lastpp
    else
        //weighted calculation
        center := (center * 2 + lastpp) / 3

// upper/lower bands calculation
Up = center - (Factor * ta.atr(Pd))
Dn = center + (Factor * ta.atr(Pd))

// get the trend
float TUp = na
float TDown = na
Trend = 0
TUp := close[1] > TUp[1] ? math.max(Up, TUp[1]) : Up
TDown := close[1] < TDown[1] ? math.min(Dn, TDown[1]) : Dn
Trend := close > TDown[1] ? 1: close < TUp[1]? -1: nz(Trend[1], 1)
Trailingsl = Trend == 1 ? TUp : TDown

// check and plot the signals
bsignal = Trend == 1 and Trend[1] == -1
ssignal = Trend == -1 and Trend[1] == 1

//get S/R levels using Pivot Points
float resistance = na
float support = na
support := pl ? pl : support[1]
resistance := ph ? ph : resistance[1]

//DEMA

dema_ln = input.int(200, "DEMA Len", group = 'D-EMAs')
dema_src = input.source(close, "D-EMAs Source", group = 'D-EMAs')
ema_fd = ta.ema(dema_src, dema_ln)
dema = (2*ema_fd)-(ta.ema(ema_fd,dema_ln))

//EMA

ema1_l = input.int(21, "EMA 1 Len", group = 'D-EMAs')
ema2_l = input.int(50, "EMA 2 Len", group = 'D-EMAs')
ema3_l = input.int(200, "EMA 3 Len", group = 'D-EMAs')

ema1 = ta.ema(dema_src, ema1_l)
ema2 = ta.ema(dema_src, ema2_l)
ema3 = ta.ema(dema_src, ema3_l)

//Supertrend
Periods = input.int(21, "ST ATR Period", group = "Normal Supertrend")
src_st = input.source(hl2, "ST Supertrend Source", group = "Normal Supertrend")
Multiplier = input.float(2.0 , "ST ATR Multiplier", group = "Normal Supertrend")
changeATR= true
atr2 = ta.sma(ta.tr, Periods)
atr3= changeATR ? ta.atr(Periods) : atr2
up=src_st-(Multiplier*atr3)
up1 = nz(up[1],up)
up := close[1] > up1 ? math.max(up,up1) : up
dn=src_st+(Multiplier*atr3)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.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
buySignal = trend == 1 and trend[1] == -1
sellSignal = trend == -1 and trend[1] == 1

//ATR

atr = ta.atr(14)

///CONDITIONS

//BUY 
/// ema simple
ema_cond_b = if ema_b
    ema1 > ema2 and ema2 > ema3
else
    true

///ema angle

dema_angle_rad = math.atan((dema - dema[dema_a_look])/0.0001)
dema_angle = dema_angle_rad * (180/math.pi)

dema_ang_cond_b = if ema_b_ang
    if dema_angle >= dema_a_filter
        true
    else
        false
else
    true
    


///ema distance

dema_cond_b = if dema_b
    close > dema
else 
    true
    

//supertrends
///if pivot buy sig or (st buy sig and pivot. trend = 1)

pvt_cond_b = bsignal

st_cond_b = if st_sig
    buySignal and Trend == 1
else
    false

st_entry_cond = pvt_cond_b or st_cond_b

///stop loss tp

sl_b = if take_p
    if trend == 1
        up
    else
        close - (atr * sl_atr)
else
    close - (atr * sl_atr)

tp_b = if take_p
    if trend == 1
        close + ((close - up) * (tp_atr / sl_atr))
    else
        close + (atr * tp_atr)
else
    close + (atr * tp_atr)
    
//position size 
init_cap = strategy.equity
pos_size_b = math.round((init_cap * .01) / (close - sl_b))
ent_price = strategy.opentrades.entry_price(strategy.opentrades - 1)
var sl_b_n = 0.0
var tp_b_n = 0.0
longCondition = (ema_cond_b and dema_cond_b and dema_ang_cond_b and st_entry_cond and date_range_cond and not_in_trade)
if (longCondition)
    
    strategy.entry("Long", strategy.long, qty = pos_size_b)
    sl_b_n := sl_b
    tp_b_n := tp_b
    ent_price := strategy.opentrades.entry_price(strategy.opentrades - 1)

if (up[1] < ent_price and up >= ent_price and trend[0] == 1)
    if din_tp
        strategy.close("Long", qty_percent = din_tp_qty)
    if move_sl
        sl_b_n := ent_price

strategy.exit("Exit", "Long", stop =sl_b_n, limit = tp_b_n)   


    

//sell

///ema simple
ema_cond_s = if ema_b
    ema1 < ema2 and ema2 < ema3
else
    true

//ema distance
dema_cond_s = if dema_b
    close < dema
else 
    true

//dema angle
dema_ang_cond_s = if ema_b_ang
    if dema_angle <= (dema_a_filter * -1)
        true
    else
        false
else
    true

//supertrends
///if pivot buy sig or (st buy sig and pivot. trend = 1)

pvt_cond_s = ssignal

st_cond_s = if st_sig
    sellSignal and Trend == -1
else
    false

st_entry_cond_s = pvt_cond_s or st_cond_s

///stop loss tp


sl_s = if take_p
    if trend == -1
        dn
    else
        close + (atr * sl_atr)
else
    close + (atr * sl_atr)

tp_s = if take_p
    if trend == -1
        close - ((dn - close) * (tp_atr / sl_atr))
    else
        close - (atr * tp_atr)
else
    close - (atr * tp_atr)


shortCondition = (ema_cond_s and dema_cond_s and dema_ang_cond_s and st_entry_cond_s and not_in_trade)

pos_size_s = math.round((init_cap * .01) / (sl_s - close))
var sl_s_n = 0.0
var tp_s_n = 0.0
if (shortCondition)
    strategy.entry("Short", strategy.short, qty = pos_size_s)
    sl_s_n := sl_s
    tp_s_n := tp_s
    
if (dn[1] > ent_price and dn <= ent_price and trend[0] == -1)
    if din_tp
        strategy.close("Short", qty_percent = din_tp_qty)
    if move_sl
        sl_s_n := ent_price

strategy.exit("Exit", "Short", stop = sl_s_n, limit = tp_s_n)