এই কৌশলটির মূল ধারণাটি হ'ল বাজারের প্রবণতা সনাক্ত করার জন্য একাধিক সময়সীমা একত্রিত করা, একটি ফিল্টার হিসাবে উচ্চতর সময়সীমার সুপারট্রেন্ড সূচক ব্যবহার করা এবং কম সময়সীমার থেকে কিনুন এবং বিক্রয় সংকেত উত্পাদন করা। এটি উচ্চতর সময়সীমার দ্বারা সরবরাহিত বাজার কাঠামোর তথ্যকে ট্রেডিং সিদ্ধান্তের গুণমান উন্নত করার লক্ষ্যে।
কৌশলটি সিকিউরিটি ফাংশনটি কল করে একটি উচ্চতর সময়সীমার (বর্তমান সময়সীমার ডিফল্ট 4x) থেকে সুপারট্রেন্ড সূচক মানগুলি পুনরুদ্ধার করে। সুপারট্রেন্ড সূচকটিতে দুটি লাইন রয়েছেঃ সুপারট্রেন্ড লাইন এবং ট্রেন্ড লাইন। ট্রেন্ড লাইনের উপরে সুপারট্রেন্ড লাইনটি একটি উত্থান সংকেত, যখন নীচে একটি হ্রাস সংকেত।
সুপারট্রেন্ড সূচকটির উচ্চতর সময়সীমার দিকটি ফিল্টার শর্ত হিসাবে কাজ করে। যখন উভয় সময়সীমার সুপারট্রেন্ডের দিকগুলি সারিবদ্ধ হয় তখনই ট্রেডিং সংকেত উত্পন্ন হয়। এর অর্থ হল যখন উভয় সময়সীমা একই দিকের সংকেত দেয় তখনই সংকেতগুলি ট্রিগার হয়।
এটি কম সময়সীমায় বাজারের গোলমাল থেকে হস্তক্ষেপ এড়ায় এবং সংকেতের নির্ভরযোগ্যতা উন্নত করে। এটি সঠিক সামগ্রিক বিচার করার জন্য উচ্চতর সময়সীমার বাজারের কাঠামো ব্যবহারের অনুমতি দেয়।
সমাধান:
এই কৌশলটি বেশ কয়েকটি ক্ষেত্রে উন্নত করা যেতে পারেঃ
প্যারামিটার অপ্টিমাইজেশান, সূচকগুলির সংমিশ্রণ, স্টপ লস উন্নত করা এবং মেশিন লার্নিং প্রবর্তনের মাধ্যমে, এই মাল্টিটাইমফ্রেম ট্রেন্ড ট্র্যাকিং কৌশলটির জন্য উল্লেখযোগ্য কর্মক্ষমতা উন্নতি অর্জন করা যেতে পারে।
এই কৌশলটি কম সময়সীমার মধ্যে বাণিজ্য সম্পাদনকে গাইড করার জন্য উচ্চতর সময়সীমার প্রবণতা রায়গুলি বুদ্ধিমানের সাথে ব্যবহার করে। এই জাতীয় মাল্টিটাইমফ্রেম ডিজাইন কার্যকরভাবে বাজারের গোলমাল ফিল্টার করতে এবং আরও স্পষ্ট প্রবণতা দিকগুলি সনাক্ত করতে পারে। অন্তর্নির্মিত তারিখের সেটিংস ব্যাকটেস্টিংকে আরও নমনীয় করে তোলে। সামগ্রিকভাবে, এটি একটি ভাল ডিজাইন করা মাল্টিটাইমফ্রেম ট্রেন্ড ট্র্যাকিং কৌশল যা আরও গবেষণা এবং প্রয়োগের যোগ্য।
/*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)