اس حکمت عملی کا بنیادی خیال مارکیٹ کے رجحانات کی نشاندہی کرنے کے لئے متعدد ٹائم فریموں کو جوڑنا ہے ، جس میں فلٹر کے طور پر اعلی ٹائم فریموں سے سپر ٹرینڈ اشارے کا استعمال کیا جاتا ہے اور کم ٹائم فریموں سے خرید و فروخت کے سگنل تیار کیے جاتے ہیں۔ اس کا مقصد تجارتی فیصلوں کے معیار کو بہتر بنانے کے لئے اعلی ٹائم فریموں کے ذریعہ فراہم کردہ مارکیٹ کی ساخت کی معلومات کو فائدہ اٹھانا ہے۔
حکمت عملی سیکیورٹی فنکشن کو کال کرکے اعلی ٹائم فریم (موجودہ ٹائم فریم کے ڈیفالٹ 4x) سے سپر ٹرینڈ اشارے کی اقدار کو بازیافت کرتی ہے۔ سپر ٹرینڈ اشارے میں دو لائنیں ہوتی ہیں: سپر ٹرینڈ لائن اور ٹرینڈ لائن۔ ٹرینڈ لائن کے اوپر سپر ٹرینڈ لائن ایک تیزی کا اشارہ ہے ، جبکہ نیچے ایک bearish سگنل ہے۔
اعلی ٹائم فریم سے سپر ٹرینڈ اشارے کی سمت فلٹر کی حالت کے طور پر کام کرتی ہے۔ تجارتی سگنل صرف اس وقت پیدا ہوتے ہیں جب دونوں ٹائم فریموں سے سپر ٹرینڈ کی سمتیں سیدھ ہوجاتی ہیں۔ اس کا مطلب یہ ہے کہ سگنل صرف اس وقت ٹرگر ہوتے ہیں جب دونوں ٹائم فریم ایک ہی سمت میں سگنل دیتے ہیں۔
اس سے کم ٹائم فریم میں مارکیٹ کے شور سے مداخلت سے گریز ہوتا ہے اور سگنل کی وشوسنییتا میں بہتری آتی ہے۔ اس سے زیادہ ٹائم فریم مارکیٹ ڈھانچے کا استعمال صحیح مجموعی فیصلے کرنے کی بھی اجازت ملتی ہے۔
حل:
اس حکمت عملی کو کئی شعبوں میں بہتر بنایا جا سکتا ہے:
پیرامیٹرز کی اصلاح، اشارے کو یکجا کرنے، سٹاپ نقصان کو بہتر بنانے اور مشین لرننگ متعارف کرانے کے ذریعے، اس ملٹی ٹائم فریم ٹرینڈ ٹریکنگ حکمت عملی کے لئے کارکردگی میں نمایاں بہتری حاصل کی جاسکتی ہے۔
یہ حکمت عملی ہوشیاری سے کم ٹائم فریم میں تجارت کے عمل کو ہدایت دینے کے لئے اعلی ٹائم فریم ٹرینڈ فیصلوں کا فائدہ اٹھاتی ہے۔ اس طرح کا ملٹی ٹائم فریم ڈیزائن مؤثر طریقے سے مارکیٹ شور کو فلٹر کرسکتا ہے اور واضح رجحانات کی سمتوں کی نشاندہی کرسکتا ہے۔ بلٹ ان تاریخ کی ترتیبات بیک ٹیسٹنگ کو بھی زیادہ لچکدار بناتی ہیں۔ مجموعی طور پر ، یہ ایک اچھی طرح سے ڈیزائن شدہ ملٹی ٹائم فریم ٹرینڈ ٹریکنگ حکمت عملی ہے جو مزید تحقیق اور درخواست کے مستحق ہے۔
/*backtest start: 2023-02-14 00:00:00 end: 2024-02-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/ // © HeWhoMustNotBeNamed //@version=4 strategy("Higher TF - Repainting", overlay=true, initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01, calc_on_order_fills = true) HTFMultiplier = input(4, minval=1, step=1) SupertrendMult = input(1) SupertrendPd = input(4, minval=4, step=4) backtestBars = input(title="Backtest from ", defval=10, minval=1, maxval=30) backtestFrom = input(title="Timeframe", defval="years", options=["days", "months", "years"]) repaintOption = input(title="Repaint", defval="Yes", options=["Yes", "No - set lookahead false", "No - do not use security"]) f_multiple_resolution(HTFMultiplier) => target_Res_In_Min = timeframe.multiplier * HTFMultiplier * ( timeframe.isseconds ? 1. / 60. : timeframe.isminutes ? 1. : timeframe.isdaily ? 1440. : timeframe.isweekly ? 7. * 24. * 60. : timeframe.ismonthly ? 30.417 * 24. * 60. : na) target_Res_In_Min <= 0.0417 ? "1S" : target_Res_In_Min <= 0.167 ? "5S" : target_Res_In_Min <= 0.376 ? "15S" : target_Res_In_Min <= 0.751 ? "30S" : target_Res_In_Min <= 1440 ? tostring(round(target_Res_In_Min)) : tostring(round(min(target_Res_In_Min / 1440, 365))) + "D" f_getBackTestTimeFrom(backtestFrom, backtestBars)=> byDate = backtestFrom == "days" byMonth = backtestFrom == "months" byYear = backtestFrom == "years" date = dayofmonth(timenow) mth = month(timenow) yr = year(timenow) leapYearDaysInMonth = array.new_int(12,0) array.set(leapYearDaysInMonth,0,31) array.set(leapYearDaysInMonth,1,29) nonleapYearDaysInMonth = array.new_int(12,0) array.set(leapYearDaysInMonth,0,31) array.set(leapYearDaysInMonth,1,28) restMonths = array.new_int(10,0) array.set(leapYearDaysInMonth,0,31) array.set(leapYearDaysInMonth,1,30) array.set(leapYearDaysInMonth,2,31) array.set(leapYearDaysInMonth,3,30) array.set(leapYearDaysInMonth,4,31) array.set(leapYearDaysInMonth,5,31) array.set(leapYearDaysInMonth,6,30) array.set(leapYearDaysInMonth,7,31) array.set(leapYearDaysInMonth,8,30) array.set(leapYearDaysInMonth,9,31) array.concat(leapYearDaysInMonth,restMonths) array.concat(nonleapYearDaysInMonth,restMonths) isLeapYear = yr % 4 == 0 and (year%100 != 0 or year%400 == 0) numberOfDaysInCurrentMonth = isLeapYear ? array.get(leapYearDaysInMonth, mth-2) : array.get(nonleapYearDaysInMonth, mth-2) if(byDate) mth := (date - backtestBars) < 0 ? mth - 1 : mth yr := mth < 1 ? yr - 1 : yr mth := mth < 1 ? 1 : mth date := (date - backtestBars) < 0 ? numberOfDaysInCurrentMonth - backtestBars + date + 1 : date - backtestBars + 1 if(byMonth) date := 1 yr := (mth - (backtestBars%12)) < 0 ? yr - int(backtestBars/12) - 1 : yr - int(backtestBars/12) mth := mth - (backtestBars%12) + 1 if(byYear) date := 1 mth := 1 yr := yr - backtestBars [date, mth, yr] repaint = repaintOption == "Yes" useSecurityLookahead = repaintOption == "No - set lookahead false" [SupertrendRepaint, DirRepaint] = security(syminfo.tickerid, f_multiple_resolution(HTFMultiplier), supertrend(SupertrendMult, SupertrendPd), lookahead = true, gaps=true) [SupertrendNoLookahead, DirNoLookahead] = security(syminfo.tickerid, f_multiple_resolution(HTFMultiplier), supertrend(SupertrendMult, SupertrendPd), lookahead = false, gaps=false) [SupertrendRegular, DirRegular] = supertrend(SupertrendMult, SupertrendPd) [date, mth, yr] = f_getBackTestTimeFrom(backtestFrom, backtestBars) inDateRange = time >= timestamp(syminfo.timezone, yr, mth, date, 0, 0) longCondition = repaint ? DirRepaint == -1 : useSecurityLookahead? DirNoLookahead == -1 : DirRegular == -1 shortCondition = repaint ? DirRepaint == 1 : useSecurityLookahead? DirNoLookahead == 1 : DirRegular == 1 strategy.entry("Buy", strategy.long, when=longCondition and inDateRange) strategy.entry("Sell", strategy.short, when=shortCondition and inDateRange)