এই কৌশলটির মূল ধারণা হল এমন একটি কাঠামো বাস্তবায়ন করা যা ব্যবহারকারীদের বিভিন্ন চাহিদা মেটাতে ব্যাকটেস্টের তারিখের পরিসীমা নমনীয়ভাবে নির্বাচন করতে পারে, যাতে তারা স্বয়ংক্রিয়ভাবে বা ম্যানুয়ালি ব্যাকটেস্টের শুরু এবং শেষ সময় সেট করতে পারে।
কৌশলটি ইনপুট পরামিতিগুলির মাধ্যমে তারিখের পরিসীমা নির্বাচন করার জন্য চারটি বিকল্প সরবরাহ করেঃ সমস্ত ইতিহাস ডেটা, সাম্প্রতিক নির্দিষ্ট দিন, সাম্প্রতিক নির্দিষ্ট সপ্তাহ বা ম্যানুয়ালি একটি তারিখের পরিসীমা নির্দিষ্ট করে ব্যবহার করে। কৌশলটি নির্বাচিত তারিখের পরিসরের উপর ভিত্তি করে গতিশীলভাবে ব্যাকটেস্ট উইন্ডো সেট করবে, তবে ট্রেডিং লজিকটি অপরিবর্তিত রাখবে, যাতে বিভিন্ন সময় উইন্ডোর অধীনে পারফরম্যান্স পার্থক্য তুলনা করা যায়।
কৌশলটি দুটি মডিউল নিয়ে গঠিতঃ ব্যাকটেস্টের তারিখের পরিসীমা নির্বাচন এবং ডাবল এমএ ট্রেডিং কৌশল।
তারিখের পরিসীমা নির্বাচন করার জন্য একটি নমনীয় এবং কাস্টমাইজযোগ্য কাঠামো হিসাবে, সুবিধাগুলি ব্যবহারকারীদের বিভিন্ন পরীক্ষার চাহিদা পূরণ করছে। সহজ কিন্তু কার্যকর ডাবল এমএ ট্রেডিং লজিকের সাথে মিলিত, এটি দ্রুত কৌশলগুলি যাচাই এবং তুলনা করতে পারে। ফিল্টার বা স্টপ লস লজিক যুক্ত করার মতো ফলো-আপ অপ্টিমাইজেশনগুলি লাইভ ট্রেডিংয়ের জন্য কৌশলটিকে আরও ব্যবহারিক করে তুলতে পারে। সংক্ষেপে, কৌশল কাঠামোর ভাল স্কেলযোগ্যতা এবং রেফারেন্স মান রয়েছে।
/*backtest start: 2022-12-29 00:00:00 end: 2024-01-04 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title = "How To Auto Set Date Range", shorttitle = " ", overlay = true) // Revision: 1 // Author: @allanster // === INPUT MA === fastMA = input(defval = 14, title = "FastMA", type = input.integer, minval = 1, step = 1) slowMA = input(defval = 28, title = "SlowMA", type = input.integer, minval = 1, step = 1) // === INPUT BACKTEST RANGE === useRange = input(defval = "WEEKS", title = "Date Range", type = input.string, confirm = false, options = ["ALL", "DAYS", "WEEKS", "MANUAL"]) nDaysOrWeeks = input(defval = 52, title = "# Days or Weeks", type = input.integer, minval = 1) FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 15, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2019, title = "From Year", minval = 2014) ToMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2014) // === FUNCTION EXAMPLE === window() => true // === LOGIC === buy = crossover(sma(close, fastMA), sma(close, slowMA)) // buy when fastMA crosses over slowMA sell = crossunder(sma(close, fastMA), sma(close, slowMA)) // sell when fastMA crosses under slowMA // === EXECUTION === strategy.entry("L", strategy.long, when=window() and buy) // buy long when "within window of time" AND crossover strategy.close("L", when=window() and sell) // sell long when "within window of time" AND crossunder // === PLOTTING === plot(sma(close, fastMA), title = 'FastMA', color = color.aqua, linewidth = 2, style = plot.style_line) // plot FastMA plot(sma(close, slowMA), title = 'SlowMA', color = color.yellow, linewidth = 2, style = plot.style_line) // plot SlowMA