এই কৌশলটির উদ্দেশ্য হল ব্যবহারকারীদের আরও নমনীয় এবং কাস্টমাইজযোগ্য ব্যাকটেস্টিংয়ের জন্য ব্যাকটেস্টিংয়ের শুরু সময়টি কাস্টমাইজ করার অনুমতি দেওয়া।
এই কৌশলটি একটি কাস্টমাইজযোগ্য ব্যাকটেস্ট শুরুর সময় বাস্তবায়নের জন্য পাইন স্ক্রিপ্টের সময় এবং টাইমস্ট্যাম্প ফাংশন ব্যবহার করে।
এটি প্রথমে ব্যবহারকারীদের সেটিংসে একটি কাস্টমাইজড ব্যাকটেস্ট শুরু বছর, মাস, তারিখ, ঘন্টা এবং মিনিট ইনপুট করতে দেয়। এটি তারপরে একটি টাইমস্ট্যাম্প তৈরি করতে এই ইনপুটগুলি ব্যবহার করে এবং এটি স্টার্টটাইম ভেরিয়েবলটিতে সংরক্ষণ করে।
স্ট্র্যাটেজি
উদাহরণস্বরূপঃ
longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition and startTime)
strategy.entry("My Long Entry Id", strategy.long)
এটি একটি কাস্টমাইজযোগ্য ব্যাকটেস্ট শুরুর সময় বাস্তবায়নের অনুমতি দেয়। ব্যবহারকারীরা হার্ডকোডেড সময়গুলিতে সীমাবদ্ধ হওয়ার পরিবর্তে ব্যাকটেস্টিংয়ের শুরুর সময়টি নমনীয়ভাবে কনফিগার করতে পারেন।
এই কাস্টমাইজযোগ্য ব্যাকটেস্ট শুরু সময় কৌশল নিম্নলিখিত সুবিধা আছেঃ
আরও নমনীয়তাঃ ব্যবহারকারীরা নির্দিষ্ট সময়ে সীমাবদ্ধ থাকার পরিবর্তে ব্যাকটেস্ট শুরু করার সময়টি সম্পূর্ণ কাস্টমাইজ করতে পারেন।
আরো বাস্তবসম্মতঃ শুরু সময় কৌশল প্রকৃত রানটাইম সেট করা যেতে পারে, ব্যাকটেস্ট আরো বাস্তবসম্মত করে তোলে।
ইভেন্ট-চালিত ব্যাকটেস্টিংয়ের জন্য সুবিধাজনকঃ নির্দিষ্ট ইভেন্টগুলির ব্যাকটেস্টিংয়ের জন্য একটি ইভেন্টের ঘটনার সময়ের উপর ভিত্তি করে শুরু সময় সেট করা যেতে পারে।
সহজ শর্ত সমন্বয়ঃ ব্যাকটেস্ট স্টার্ট শর্তগুলি বিভিন্ন পর্যায়ে লক্ষ্যবস্তু ব্যাকটেস্টিংয়ের জন্য সহজেই সামঞ্জস্য করা যায়।
পুনরাবৃত্তিযোগ্য এবং নির্ভরযোগ্যঃ ব্যাকটেস্টের শুরু হওয়ার সময়কে প্যারামিটারিং করা ব্যাকটেস্টের ফলাফলকে পুনরাবৃত্তিযোগ্য এবং নির্ভরযোগ্য করে তোলে।
একটি কাস্টমাইজযোগ্য ব্যাকটেস্ট শুরুর সময় ব্যবহারের কিছু ঝুঁকি রয়েছেঃ
ফলাফল শুরু সময় উপর নির্ভর করেঃ বিভিন্ন শুরু সময় খুব ভিন্ন ব্যাকটেস্ট ফলাফল হতে পারে।
স্টার্ট টাইম সাবধানে নির্বাচন প্রয়োজনঃ অযৌক্তিক স্টার্ট টাইম ব্যাকটেস্ট ফলাফলের বিকৃতি হতে পারে।
কার্ভ ফিটিং ঝুঁকি বৃদ্ধিঃ প্রাচীন তথ্যের সাথে শুরু সময় সামঞ্জস্য করে সহজেই ওভারফিট।
কম তুলনামূলকতাঃ এই কৌশলটির ফলাফলগুলি স্থির শুরুর সময় ব্যাকটেস্টের তুলনায় কম তুলনামূলক।
সমাধান:
ফলাফলের উপর শুরু সময়ের পরিবর্তনের প্রভাব মূল্যায়নের জন্য একাধিকবার ব্যাকটেস্ট করুন।
বিকৃতি কমাতে গুরুত্বপূর্ণ ইভেন্টের সময়গুলি শুরু করার সময় হিসাবে চয়ন করুন।
ঐতিহাসিক তথ্যের অতিরিক্ত ফিটিং এড়াতে সাবধানে শুরু সময়গুলি সামঞ্জস্য করুন।
কাস্টমাইজড ব্যাকটেস্টের সাথে তুলনা করার জন্য বেঞ্চমার্ক হিসাবে স্থির স্টার্ট টাইম ব্যাকটেস্ট রাখুন।
এই কাস্টমাইজযোগ্য ব্যাকটেস্ট শুরু সময় কৌশল নিম্নলিখিত দিকগুলিতেও উন্নত করা যেতে পারেঃ
ব্যাকটেস্ট টাইম উইন্ডোর সম্পূর্ণ নমনীয় কনফিগারেশনের জন্য শুরু এবং শেষ উভয় সময়ের কাস্টমাইজেশন সমর্থন করুন।
স্মার্ট এবং আরও সুবিধাজনক সময় কনফিগারেশনের জন্য একাধিক সময় মোড সমর্থন করুনঃ নির্দিষ্ট তারিখ, আপেক্ষিক তারিখ, ইভেন্ট-চালিত ইত্যাদি।
আরো স্বজ্ঞাত সময় পরামিতি সেটিং জন্য গ্রাফিকাল কনফিগারেশন ইন্টারফেস সমর্থন.
বিভিন্ন সময় গ্রানুলারিটির কনফিগারেশন সমর্থন করুনঃ বছর, মাস, দিন, ঘন্টা, মিনিট, সেকেন্ড ইত্যাদি
পুনরুত্পাদনযোগ্য, ট্র্যাকযোগ্য এবং তুলনামূলক ফলাফলের জন্য ব্যাকটেস্ট সময় কনফিগারেশন রেকর্ড করুন।
অযৌক্তিক সময় সেটিংসের কারণে নিম্নমানের ব্যাকটেস্ট এড়াতে ভুল সময় কনফিগারেশনের বৈধতা যুক্ত করুন।
একাধিক কৌশল জুড়ে সহজেই শুরু সময় সিঙ্ক্রোনাইজ করার জন্য শুরু সময় বাঁধাই সরবরাহ করুন।
এই কৌশলটি ব্যাকটেস্ট শুরু করার সময়গুলিকে সীমাবদ্ধতা হ্রাস করতে এবং ব্যাকটেস্টগুলিকে আরও বাস্তবসম্মত করার জন্য কাস্টমাইজযোগ্য এবং নমনীয় কনফিগারেশন সক্ষম করে। তবে বিকৃতি হ্রাস করতে একাধিক ব্যাকটেস্ট, ইভেন্ট-চালিত মডেল ইত্যাদি ব্যবহারের জন্য শুরু করার সময়গুলির উপর ফলাফলের নির্ভরতা সম্পর্কে সতর্ক থাকতে হবে। ভবিষ্যতে আরও স্মার্ট এবং আরও সুবিধাজনক ব্যাকটেস্ট সময় কনফিগারেশন অর্জনের জন্য এই কৌশলটির উন্নতির জন্য অনেকগুলি দিক রয়েছে।
/*backtest start: 2022-09-19 00:00:00 end: 2023-09-25 00:00:00 period: 2d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("C320up Strategy Tester Start Time", overlay = true) // Copy and paste below into your strategy // Strategy Tester Start Time xYear = input(2018, title = "Start Year") xMonth = input(01, title = "Start Month", minval = 01, maxval = 12) xDay = input(01, title = "Start Day", minval = 01, maxval = 31) xHour = input(00, title = "Start Hour", minval = 00, maxval = 23) xMinute = input(00, title = "Start Minute", minval = 00, maxval = 59) startTime = time >= timestamp(xYear, xMonth, xDay, xHour, xMinute) // End copy and paste // Add (and startTime) at the end of your condition/s to activate // The strategy below is just an example longCondition = crossover(sma(close, 14), sma(close, 28)) if (longCondition and startTime) strategy.entry("My Long Entry Id", strategy.long) shortCondition = crossunder(sma(close, 14), sma(close, 28)) if (shortCondition and startTime) strategy.entry("My Short Entry Id", strategy.short) // Happy trading!