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

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

img

جائزہ

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

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

حکمت عملی میں مندرجہ ذیل اہم حصے شامل ہیں:

  1. انکولی حرکت پذیر اوسط کا حساب لگائیں۔ کسی خاص مدت کے دوران حرکت پذیر اوسط کے طور پر لکیری رجعت کے منحنی خطوط کا حساب لگانے کے لئے لکیری رجعت اشارے کا استعمال کریں۔

  2. بولنگر بینڈ کا حساب لگائیں۔ بینڈ کا حساب لگانے کے لئے موافقت پذیر اے ٹی آر اشارے کا استعمال کریں ، صارف کے ذریعہ مخصوص تناسب 2 پیرامیٹر کے ساتھ مل کر ، اوپری اور نچلی بینڈ حاصل کریں۔

  3. اندراجات اور باہر نکلنے کا تعین کریں۔ بولنگر بینڈ کے ذریعے قیمت توڑنے کی بنیاد پر رجحان کی سمت اور اندراجات / باہر نکلنے کا فیصلہ کریں۔ اوپری بینڈ سگنل کو توڑنے والے اندراج فروخت کرتے ہیں جبکہ نچلے بینڈ سگنل کو توڑنے والے اندراج خریدتے ہیں۔

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

  5. حکمت عملی کی اصلاح اور توثیق کے لئے بیک ٹیسٹنگ ٹائم ونڈو کے ساتھ مل کر.

فوائد

  1. انکولی پیرامیٹرز۔ انکولی چلتی اوسط اور بینڈ ڈیزائن مارکیٹ میں ہونے والی تبدیلیوں کو اپناتا ہے۔

  2. واضح بریک آؤٹ سگنل۔ بولنگر بینڈ بریک آؤٹ واضح رجحان الٹنے کے سگنل پیش کرتے ہیں۔

  3. معقول اسٹاپ سیٹنگ۔ فکسڈ اسٹاپ نقصان خطرات کو کنٹرول کرتا ہے اور ٹریلنگ اسٹاپ منافع کا مقصد ٹرینڈ منافع کو زیادہ سے زیادہ کرنا ہے۔

  4. بیک ٹسٹنگ کے ذریعے تصدیق شدہ۔ بیک ٹسٹنگ ونڈو حکمت عملی کی تاثیر کی تصدیق کرتی ہے۔

  5. سمجھنے اور لاگو کرنے میں آسان۔ منطق واضح ہے اور کوڈ آسانی سے سمجھنے کے لئے جامع ہے۔

خطرات

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

  2. محدود بیک ٹیسٹ کی مدت۔ حالیہ بیک ٹیسٹ کی حد جامع تاریخی اعداد و شمار میں استحکام کی مکمل تصدیق کے لئے ناکافی ہوسکتی ہے۔

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

  4. اسٹاپ نقصان کی سطح کا اندازہ لگانے کی ضرورت ہے۔ چھوٹا اسٹاپ نقصان بہت حساس ہوسکتا ہے اور چھوٹے اتار چڑھاؤ سے روک دیا جاسکتا ہے۔ مناسب اسٹاپ نقصان کی ضروریات کا اندازہ لگایا جاسکتا ہے۔

  5. مقداری توثیق کا فقدان۔ فی الحال صرف تجارتی سگنلز کے لئے گرافک بریک آؤٹ کا استعمال کریں جس میں مقداری میٹرکس کی توثیق نہ ہو۔

بہتری کی ہدایات

  1. زیادہ انکولی اشارے متعارف کروائیں۔ مضبوط رجحان ٹریکنگ سسٹم بنانے کے لئے مختلف انکولی چلتی اوسط اور چینلز کے مجموعے کی جانچ کریں۔

  2. پیرامیٹر کی اصلاح۔ زیادہ منظم طریقوں کا استعمال کریں جیسے جینیاتی الگورتھم تاکہ پیرامیٹرز کا بہترین مجموعہ مل سکے۔

  3. بیک ٹسٹ کی مدت میں توسیع کریں۔ پیرامیٹر استحکام کا معائنہ کرنے کے لئے وسیع تر تاریخی اعداد و شمار پر ٹیسٹ کریں۔ زیادہ حقیقت پسندانہ بیک ٹسٹ کے لئے لین دین کے اخراجات کو شامل کریں۔

  4. مقداری فلٹرز متعارف کروائیں۔ جھوٹے بریکآؤٹس سے بچنے کے لیے حجم بریکآؤٹ، MACD ہسٹوگرام گیپ جیسے فلٹرز ترتیب دیں۔

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

  6. لائیو توثیق۔ مزید بہتری کے لیے کارکردگی ریکارڈ کرنے کے لیے بہتر حکمت عملی لائیو چلائیں۔

نتیجہ

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


/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-09 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Linear Regression (Backtest / Trailing Stop)",overlay=true)
close_price = close[0]

len = input(40)
linear_reg = linreg(close_price, len, 0)

calculationToPlotAverageMeanLine=linear_reg
useUpperDeviation = input(true, "Upper Deviation", bool)
useLowerDeviation = input(true, "Lower Deviation", bool)
ratio2=input(defval=2,title=" Ratio 2")
avg=atr(len)
r2=avg*ratio2
top=linear_reg+r2
bott=linear_reg-r2

calculationToPlotUpperLine=top
calculationToPlotLowerLine=bott

plotUpperDeviationLine = plot(not useUpperDeviation ? na : calculationToPlotUpperLine, color=color(blue,0))
plotAverageMeanLine = plot(calculationToPlotAverageMeanLine, color=color(olive,0))
plotLowererDeviationLine = plot(not useLowerDeviation ? na : calculationToPlotLowerLine, color=color(red,0))
fill(plotUpperDeviationLine, plotAverageMeanLine, color=color(blue,85))
fill(plotLowererDeviationLine, plotAverageMeanLine, color=color(red,85))


//
length = input(title="linear Length",  defval=40, minval=1)
multiplier = input(title="linear Deviation", type=float, defval=2, minval=1)
overbought = input(title="Overbought",  defval=1, minval=1)
oversold = input(title="Oversold",  defval=0, minval=1)
custom_timeframe = input(title="Use another Timeframe?", type=bool, defval=false)
highTimeFrame = input(title="Select The Timeframe",  defval="60")
res1 = custom_timeframe ? highTimeFrame : timeframe.period

fixedSL = input(title="SL Activation", defval=70)
trailSL = input(title="SL Trigger", defval=10)
fixedTP = input(title="TP Activation", defval=50)
trailTP = input(title="TP Trigger", defval=10)

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2019, title = "From Year", minval = 2015)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2015)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

smabasis = linreg(close_price, length, 0)
stdev = stdev(close, length)
cierre = request.security(syminfo.tickerid, res1, close, false)
alta = request.security(syminfo.tickerid, res1, high, false)
baja = request.security(syminfo.tickerid, res1, low, false)
basis1 = request.security(syminfo.tickerid, res1, smabasis, false)
stdevb = request.security(syminfo.tickerid, res1, stdev, false)
dev = multiplier * stdevb // stdev(cierre, length)
upper = basis1 + dev
lower = basis1 - dev

bbr = (cierre - lower)/(upper - lower)

// plot(bbr)

// // MARCA LAS RESISTENCIAS
pintarojo = 0.0
pintarojo := nz(pintarojo[1])
pintarojo := bbr[1] > overbought and bbr < overbought ? alta[1] :  nz(pintarojo[1])
p = plot(pintarojo, color = red, style=circles, linewidth=2)

// // MARCA LOS SOPORTES
pintaverde = 0.0
pintaverde := nz(pintaverde[1])
pintaverde := bbr[1] < oversold and bbr > oversold ? baja[1] :  nz(pintaverde[1])
g = plot(pintaverde, color = black, style=circles, linewidth=2)
zz= crossover(pintaverde,pintaverde[1]) or crossunder(pintaverde,pintaverde[1])
kp= crossover(pintarojo,pintarojo[1]) or crossunder(pintarojo,pintarojo[1]) 
plotshape(zz,  title="buy", style=shape.triangleup,location=location.belowbar, color=green, transp=0, size=size.small)
plotshape(kp, title="sell", style=shape.triangledown,location=location.abovebar, color=red, transp=0, size=size.small)


strategy.entry("BUY", strategy.long, qty=10, oca_name="BUY",  when=zz and window())
strategy.exit("B.Exit", "BUY", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP)

strategy.entry("SELL", strategy.short, qty=10, oca_name="SELL",  when=kp and window())
strategy.exit("S.Exit", "SELL", qty_percent = 100, loss=fixedSL, trail_offset=trailSL, trail_points=fixedTP)


مزید