
یہ حکمت عملی بروئنگ چینل اشارے پر مبنی ہے ، جس میں خود کو اپنانے والی متحرک اوسط کے ساتھ مل کر ، رجحانات کا عین مطابق فیصلہ اور اس کی پیروی کی جاسکتی ہے۔ پیرامیٹرز کو متحرک طور پر ایڈجسٹ کرکے ، حکمت عملی کو مختلف اقسام اور مارکیٹ کے ماحول کے مطابق ڈھالنے کے قابل بناتا ہے ، جس میں مضبوط استحکام اور موافقت ہے۔
اس حکمت عملی میں بنیادی طور پر درج ذیل اجزاء شامل ہیں:
خود کو اپنانے والی حرکت پذیر اوسط کا حساب لگائیں۔ یہاں لکیری رجعت کے اشارے کا استعمال کرتے ہوئے ایک مخصوص دورانیے میں لکیری رجعت کی منحنی خطوط کو حرکت پذیر اوسط کے طور پر شمار کیا جاتا ہے۔
برننگ چینل کے اوپر اور نیچے کی ٹریک کا حساب لگائیں۔ یہاں اے ٹی آر اشارے کے حساب سے خود کار طریقے سے چینل بینڈ کا استعمال کیا گیا ہے ، اور پھر صارف کے بیان کردہ پیرامیٹر ratio2 کے ساتھ مل کر ، برننگ چینل کے اوپر اور نیچے کی ٹریک کا حساب لگایا گیا ہے۔
خرید و فروخت کا وقت طے کریں۔ رجحان کی سمت اور خرید و فروخت کا وقت طے کرنے کے لئے یہ دیکھنا ضروری ہے کہ آیا قیمتوں نے برلن چینل کو ٹریک کیا ہے یا نہیں۔ جب قیمت نیچے سے نیچے کی طرف ٹریک کرتی ہے تو اسے خریدنے کا اشارہ سمجھا جاتا ہے۔ جب قیمت اوپر سے نیچے کی طرف ٹریک کرتی ہے تو اسے فروخت کرنے کا اشارہ سمجھا جاتا ہے۔
سٹاپ نقصان کی روک تھام۔ خطرے کو کنٹرول کرنے کے لئے مقررہ پوائنٹس کی روک تھام کا استعمال کرتے ہوئے ، پہلے سے طے شدہ پوائنٹس کے بعد ٹریکنگ اسٹاپ کا استعمال کرتے ہوئے ، منافع کی ضمانت کے ساتھ ساتھ رجحان کو زیادہ سے زیادہ کرنے کی کوشش کریں۔
اس حکمت عملی کو بہتر بنانے کے لئے ریٹرننگ کے آغاز اور اختتامی وقت کو ریٹرننگ کے دورانیے کے ساتھ مل کر ترتیب دیا گیا ہے۔
انکولی پیرامیٹرز ڈیزائن۔ بلین چینل کے چینل بینڈ اور منتقل اوسط دونوں کو انکولی طریقے سے حساب کتاب کیا جاتا ہے ، جس سے حکمت عملی مارکیٹ میں ہونے والی تبدیلیوں کے مطابق ہوجاتی ہے۔
ٹرانسمیشن کا فیصلہ واضح ہے۔ رجحان کی تبدیلی کا فیصلہ کرنے کے لئے برلن چینل کے اوپر اور نیچے ٹرانسمیشن کا استعمال کرتے ہوئے ، بائیو سگنل زیادہ واضح ہے۔
اسٹاپ نقصان کی روک تھام کی ترتیب معقول ہے۔ سٹاپ نقصان کو کنٹرول کرنے کے لئے فکسڈ خطرات کا استعمال کریں ، اسٹاپ کو روکنے کے طریقوں کو ٹرینڈ منافع کو زیادہ سے زیادہ بنائیں۔
ریٹرننگ کی توثیق کی افادیت۔ حکمت عملی کی توثیق کرنے کے لئے ریٹرننگ کا وقت مقرر کریں ، اس بات کو یقینی بنائیں کہ یہ تاریخی حالات میں بھی موثر ہے۔
آسانی سے سمجھنے کے لئے لاگو کریں. اس حکمت عملی کی سوچ واضح اور سمجھنے کے لئے آسان ہے، اور کوڈ نسبتا مختصر ہے، سمجھنے اور ریل ڈسک آپریشن کرنے کے لئے آسان ہے.
برننگ چینل کو پیرامیٹرز کو بہتر بنانے کی ضرورت ہے۔ برننگ چینل کے چینل بینڈ اور ریگریشن سائیکل کو مختلف اقسام اور مارکیٹ کے حالات کے مطابق بہتر بنانے کی ضرورت ہے۔ اگر اصلاح مناسب نہیں ہے تو ، متعدد غلط سگنل یا بار بار غلط محرکات پیدا ہوں گے۔
اس کے علاوہ، یہ بھی ممکن ہے کہ اس کی واپسی کا وقت کافی نہیں ہے. اس کی واپسی صرف حالیہ واپسی کی حد مقرر کی گئی ہے اور اس کی حکمت عملی کی استحکام کو مکمل طور پر تصدیق کرنے کے لئے طویل تاریخ کی تاریخ کا احاطہ نہیں کیا جاسکتا ہے.
ممکنہ حد سے زیادہ فٹ ہونے کا خطرہ ہے۔ موجودہ پیمائش کے پیرامیٹرز کو صرف حالیہ مخصوص حالات کے لئے بہتر بنایا جاسکتا ہے ، جس سے تاریخی حد سے زیادہ فٹ ہونے کا خطرہ ہے۔
سٹاپ نقصان پوائنٹس کی تعداد کا اندازہ لگانے کی ضرورت ہے۔ موجودہ سٹاپ نقصان پوائنٹس کی تعداد بہت کم ہے ، اور اس کی وجہ سے یہ بہت زیادہ حساس ہے اور اس کی وجہ سے چھوٹے جھٹکے سے روک تھام کا نقصان ہوسکتا ہے۔ مناسب سٹاپ نقصان پوائنٹس کی تعداد کا اندازہ لگانے کی ضرورت ہے۔
پیمائش کی توثیق کرنے والے اشارے کی کمی۔ فی الحال صرف گرافک بریک سے ٹریڈنگ سگنل کا فیصلہ کیا جاتا ہے ، سگنل کی تاثیر کی توثیق کرنے کے لئے کوئی پیمائش کے اشارے متعارف نہیں کرائے گئے ہیں۔
مزید موافقت کے اشارے متعارف کروائیں۔ مختلف موافقت اوسط لائن ، موافقت چینل اشارے کے امتزاج کی جانچ کی جاسکتی ہے ، اور زیادہ مضبوط رجحانات کی پیروی کرنے کی حکمت عملی تشکیل دی جاسکتی ہے۔
پیرامیٹرز کی ترتیب کو بہتر بنائیں۔ برننگ چینل اور مساوی پیرامیٹرز کا بہترین مجموعہ جینیاتی الگورتھم جیسے زیادہ منظم طریقوں سے پایا جاسکتا ہے۔
واپسی کے وقت کی حد میں توسیع کریں۔ واپسی کے وقت کی حد میں توسیع کریں ، پیرامیٹرز کو بہتر بنانے کی استحکام کی جانچ کریں۔ سلائڈ پوائنٹس ، ٹرانزیکشن لاگت جیسے زیادہ حقیقی واپسی کے لئے ٹرانزیکشن لاگت متعارف کروائیں
کوانٹائزنگ فلٹرنگ قواعد متعارف کروائیں۔ کوانٹائزنگ اشارے کے قواعد جیسے ٹرانزیکشن کی مقدار میں توڑ ، MACD کالم فرق ، غلط بلنگ چینل توڑنے والے سگنل سے بچنے کے لئے۔
سٹاپ نقصان کے نظام کو بہتر بنائیں۔ مختلف فکسڈ سٹاپ نقصان کے نقطہ کی ترتیبات کا جائزہ لیں اور اسٹاپ نقصان کے مختلف طریقوں کا سراغ لگائیں تاکہ بہترین سٹاپ نقصان کا طریقہ معلوم کیا جاسکے۔
عملی طور پر توثیق کریں۔ عملی طور پر چلانے کے بعد حکمت عملی کو بہتر بنائیں ، منافع کی واپسی کو ریکارڈ کریں ، اور حکمت عملی کی مستحکم وشوسنییتا کو مزید بہتر بنائیں۔
اس حکمت عملی کا مجموعی نظریہ واضح ہے ، یہ رجحان کی سمت کا تعین کرنے اور توڑنے والے سگنل کو پکڑنے کے لئے برننگ چینل کا استعمال کرتا ہے ، اور اس کی مدد سے چلنے والی اوسط لائن کی طرف سے مجموعی رجحان کی سمت کا تعین کیا جاتا ہے۔ کچھ اصلاحات کے ساتھ ، یہ ایک زیادہ مستحکم اور قابل اعتماد رجحان کی پیروی کرنے والی حکمت عملی بن سکتی ہے۔ تاہم ، وقت کی حد کی نمائندگی پر نظر رکھنا ، فلٹرنگ کے قواعد کو مقدار میں لانا اور نقصان کی سطح کو سمجھنا ضروری ہے۔ اگر ان مسائل سے نمٹنے کے قابل ہو تو ، یہ حکمت عملی حقیقی جنگ میں مستحکم اور قابل ذکر منافع حاصل کرسکتی ہے۔
/*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)