گولڈن کراس کے ساتھ بولنگر بینڈ مومنٹم حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-21 12:01:25
ٹیگز:

img

جائزہ

یہ حکمت عملی چلتی اوسط ، بولنگر بینڈ اور حجم وزن والی اوسط قیمت (VWAP) کے اشارے کو جوڑتی ہے۔ جب گولڈن کراس بنتا ہے اور تیز رفتار چلتی اوسط سستے سے اوپر ٹوٹ جاتا ہے تو یہ طویل پوزیشنوں میں داخل ہوتا ہے۔ یہ حکمت عملی بولنگر بینڈ چینل کا بھی استعمال کرتی ہے اور صرف اس وقت داخل ہونے پر غور کرتی ہے جب قیمت نیچے والے بینڈ کو چھوتی ہے ، اس طرح مارکیٹ میں اتار چڑھاؤ کے درمیان کثرت سے داخلے اور باہر نکلنے سے گریز ہوتا ہے۔

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

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

  1. 50 دن کے ای ایم اے اور 200 دن کے ای ایم اے کا استعمال کرتے ہوئے گولڈن کراس سسٹم کی تعمیر کریں۔ جب تیز ای ایم اے سست ای ایم اے سے تجاوز کرتا ہے تو ایک بڑھتی ہوئی رجحان کی نشاندہی کی جاتی ہے۔

  2. جب قیمت VWAP سے اوپر ہوتی ہے، تو اس سے یہ ظاہر ہوتا ہے کہ قیمت ایک اوپر کی مرحلے میں ہے جس میں طویل پوزیشنوں کا فائدہ ہوتا ہے.

  3. جب قیمت صرف بولنگر کے نچلے بینڈ کو چھوتی ہے یا توڑتی ہے تو ، اس سے یہ ظاہر ہوتا ہے کہ قیمت ری باؤنڈ پوائنٹ کے قریب ہوسکتی ہے اس طرح ایک اچھا موقع فراہم کرتا ہے۔

  4. منافع کے ساتھ طویل پوزیشنوں سے باہر نکلیں جب قیمت بولنگر کے اوپری بینڈ سے تجاوز کرتی ہے۔

ان اصولوں کو یکجا کرکے، حکمت عملی بیل مارکیٹوں میں مناسب طویل اندراجات تلاش کرنے اور واپسی کو یقینی بنانے کے لئے سٹاپ نقصان / منافع لینے کو مقرر کرنے کے قابل ہے.

فوائد

  • گولڈن کراس سسٹم اہم رجحان کی سمت کا تعین کرتا ہے، جس سے مضبوطی کے دوران چھوٹی جیت اور نقصانات سے گریز ہوتا ہے۔

  • وی ڈبلیو اے پی زیادہ درست خرید سگنل کے لئے قیمت کی لہر کی سمت کی پیمائش کرتا ہے۔

  • بولنگر بینڈ خریدنے کی جگہ کی طرف سے لچک کا اضافہ کرتے ہیں جبکہ منافع میں روکنے کے نقصان / منافع لینے کے تالے لگاتے ہیں.

  • متعدد تصدیق کرنے والے اشارے قابل اعتماد کو بڑھا دیتے ہیں۔

خطرات اور حل

  • گولڈن کراس غلط سگنل دے سکتا ہے۔ ایم اے کے ادوار کو ٹھیک کریں اور دیگر تصدیقیں شامل کریں۔

  • غلط بولنگر پیرامیٹرز حکمت عملی کو غیر موثر بنا سکتے ہیں۔

  • اسٹاپ نقصان کی حد بہت زیادہ حد تک نقصانات کو مؤثر طریقے سے محدود کرنے میں ناکام رہتی ہے۔ قابو پانے والے خطرات کو یقینی بنانے کے لئے اسٹاپ نقصان کی حد کو تنگ کریں۔

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

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

  • بہتر بینڈوڈتھ اور اتار چڑھاؤ کے لئے بولنگر کے ادوار اور پیرامیٹر سیٹ کی جانچ کریں۔

  • ٹیسٹ اور خطرہ کنٹرول کو متوازن کرنے اور قبل از وقت ٹرگرنگ سے بچنے کے لئے سٹاپ نقصان کی حدوں کو ایڈجسٹ کریں.

نتیجہ

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


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 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/
// © mohanee

//@version=4
strategy(title="VWAP and BB strategy [$$]", overlay=true,pyramiding=2, default_qty_value=1, default_qty_type=strategy.fixed,    initial_capital=10000, currency=currency.USD)


fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 6, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 8, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
DST = 1 //day light saving for usa
//--- Europe
London = iff(DST==0,"0000-0900","0100-1000")
//--- America
NewYork = iff(DST==0,"0400-1300","0500-1400")
//--- Pacific
Sydney = iff(DST==0,"1300-2200","1400-2300")
//--- Asia
Tokyo = iff(DST==0,"1500-2400","1600-0100")

//-- Time In Range
timeinrange(res, sess) => time(res, sess) != 0

london = timeinrange(timeframe.period, London)
newyork = timeinrange(timeframe.period, NewYork)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = time >= startDate and time <= finishDate 


is_price_dipped_bb(pds,source1) =>
    t_bbDipped=false
    for i=1 to pds
        t_bbDipped:=  (t_bbDipped   or  close[i]<source1) ? true : false
        if t_bbDipped==true
            break
        else
            continue
            
    t_bbDipped


is_bb_per_dipped(pds,bbrSrc) =>
    t_bbDipped=false
    for i=1 to pds
        t_bbDipped:=  (t_bbDipped   or  bbrSrc[i]<=0) ? true : false
        if t_bbDipped==true
            break
        else
            continue
            
    t_bbDipped
    

// variables  BEGIN
shortEMA = input(50, title="fast EMA", minval=1)
longEMA = input(200, title="slow EMA", minval=1)

//BB

smaLength = input(7, title="BB SMA Length", minval=1)
bbsrc = input(close, title="BB Source")

strategyCalcOption = input(title="strategy to use", type=input.string, options=["BB", "BB_percentageB"],      defval="BB")



//addOnDivergence = input(true,title="Add to existing on Divergence")
//exitOption = input(title="exit on RSI or BB", type=input.string, options=["RSI", "BB"],      defval="BB")

//bbSource = input(title="BB  source", type=input.string, options=["close", "vwap"],      defval="close")
     
//vwap_res = input(title="VWAP Resolution", type=input.resolution, defval="session")
stopLoss = input(title="Stop Loss%", defval=1, minval=1)

//variables  END

longEMAval= ema(close, longEMA)
shortEMAval= ema(close, shortEMA)
ema200val = ema(close, 200)


vwapVal=vwap(close)



// Drawings

//plot emas
plot(shortEMAval, color = color.green, linewidth = 1, transp=0)
plot(longEMAval, color = color.orange, linewidth = 1, transp=0)
plot(ema200val, color = color.purple, linewidth = 2, style=plot.style_line ,transp=0)



//bollinger calculation 
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(bbsrc, smaLength)
dev = mult * stdev(bbsrc, smaLength)
upperBand = basis + dev
lowerBand = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)

bbr = (bbsrc - lowerBand)/(upperBand - lowerBand) 
//bollinger calculation 

//plot bb
//plot(basis, "Basis", color=#872323, offset = offset)
p1 = plot(upperBand, "Upper", color=color.teal, offset = offset)
p2 = plot(lowerBand, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=#198787, transp=95)


plot(vwapVal, color = color.purple, linewidth = 2, transp=0)


// Colour background

//barcolor(shortEMAval>longEMAval and close<=lowerBand ? color.yellow: na)
  

//longCondition=  shortEMAval > longEMAval and  close>open and  close>vwapVal
longCondition=  ( shortEMAval > longEMAval  and close>open and close>vwapVal and close<upperBand ) //and time_cond //     and  close>=vwapVal 



//Entry
strategy.entry(id="long", comment="VB LE" , long=true,  when= longCondition and ( strategyCalcOption=="BB"? is_price_dipped_bb(10,lowerBand) : is_bb_per_dipped(10,bbr)  )   and strategy.position_size<1 )   //is_price_dipped_bb(10,lowerBand))  //and strategy.position_size<1       is_bb_per_dipped(15,bbr) 


//add to the existing position
strategy.entry(id="long", comment="Add" , long=true,  when=strategy.position_size>=1 and close<strategy.position_avg_price and close>vwapVal) //and time_cond)

barcolor(strategy.position_size>=1  ? color.blue: na)



strategy.close(id="long", comment="TP Exit",   when=crossover(close,upperBand) )

//stoploss
stopLossVal =   strategy.position_avg_price * (1-(stopLoss*0.01) )
//strategy.close(id="long", comment="SL Exit",   when= close < stopLossVal)

//strategy.risk.max_intraday_loss(stopLoss, strategy.percent_of_equity)

مزید