
বাস্তব ট্রেডিংয়ের আগে বেশিরভাগ কৌশলের জন্য ব্যাকটেস্টিং প্রয়োজন হয় কিছু ধরনের ডিজিটাল কারেন্সি স্পট, ফিউচার এবং পারপেচুয়াল কন্ট্রাক্ট, সেইসাথে সব ধরনের কমোডিটি ফিউচার। যাইহোক, উদ্ভাবক পরিমাণগত প্ল্যাটফর্মের ব্যাকটেস্টিং পদ্ধতিটি সাধারণ অনবার ব্যাকটেস্টিং থেকে ভিন্ন, যা অনেক নতুনদের জন্য বিভ্রান্তির সৃষ্টি করেছে। এই নিবন্ধটি কিছু সাধারণ ব্যাকটেস্টিং প্রশ্নের বিস্তারিত এবং উত্তর দেবে।

উপরের চিত্রে দেখানো হয়েছে, ব্যাকটেস্টের সময় ব্যাকটেস্ট শুরুর সময়টি টাইমলাইন হিসাবে ব্যবহার করা যেতে পারে, ব্যাকটেস্ট শুরু করার জন্য ব্যাকটেস্ট টাইম পয়েন্টটি অক্ষ বরাবর বাম থেকে ডানে চলে যায় প্রাপ্ত করা যেতে পারে পূর্ববর্তী ঐতিহাসিক তথ্যের উপর ভিত্তি করে, কৌশল এই তথ্যের উপর ভিত্তি করে ক্রয় এবং বিক্রয় করে, শেষ পর্যন্ত লাভ এবং ক্ষতি গঠন করে। স্পষ্টতই, ব্যাকটেস্টিং টাইম পয়েন্টের ডিস্ট্রিবিউশন বিচ্ছিন্ন, এবং ডিস্ট্রিবিউশনের ঘনত্ব ব্যাকটেস্টিংয়ের সঠিকতাকে প্রতিনিধিত্ব করে। অবশ্যই, ব্যাকটেস্ট টাইম পয়েন্ট যত ঘনীভূত হয়, তত বেশি সময় লাগে, প্রকৃত ব্যাকটেস্ট সিস্টেমকে যথার্থতা এবং দক্ষতার মধ্যে একটি ট্রেড-অফ করতে হবে।
অনবার ব্যাকটেস্টিং মেকানিজম কে-লাইনের উপর ভিত্তি করে, অর্থাৎ, প্রতিটি কে-লাইন একটি ব্যাকটেস্ট টাইম পয়েন্ট তৈরি করে এই সময়ে, আপনি বর্তমান কে লাইনের উচ্চ খোলার এবং কম বন্ধের মূল্য, ট্রেডিং ভলিউম এবং অন্যান্য তথ্য পেতে পারেন। , সেইসাথে এই সময়ের আগে তথ্য ঐতিহাসিক K- লাইন তথ্য. এই প্রক্রিয়াটির অসুবিধাগুলি সুস্পষ্ট: একটি K লাইনে, শুধুমাত্র একটি ক্রয় বা বিক্রয় ঘটতে পারে এবং সাধারণত এটির উপর ভিত্তি করে মূল্য K লাইনের সমাপনী মূল্য। অধিকন্তু, একটি কে-লাইন শুধুমাত্র চারটি মূল্য পেতে পারে: একটি কে-লাইনের মধ্যে দাম কীভাবে পরিবর্তিত হয়, সর্বোচ্চ মূল্য প্রথমে হয় বা সর্বনিম্ন মূল্য প্রথম হয়, ইত্যাদি পাওয়া যাবে না। 1-ঘন্টা কে-লাইনকে উদাহরণ হিসাবে নিলে, প্রকৃত বাজার চলাকালীন বাজারের তথ্য অবশ্যই প্রতি কয়েক সেকেন্ডে প্রাপ্ত হবে এবং কে-লাইন শেষ হওয়ার জন্য অপেক্ষা করার পরিবর্তে সেশন চলাকালীন ট্রেডিং নির্দেশাবলীও জারি করা হবে। অনবার ব্যাকটেস্টিং পদ্ধতির সুবিধা হল এটি বোঝা সহজ এবং ব্যাকটেস্টিং গতি অত্যন্ত দ্রুত।

উপরের ছবিটি FMZ ব্যাকটেস্ট সেটিং ইন্টারফেস দেখায়। ব্যাকটেস্টিং মোড দুটি প্রকারে বিভক্ত: সিমুলেশন-লেভেল ব্যাকটেস্টিং এবং রিয়েল-লেভেল ব্যাকটেস্টিং, যা নীচে উপস্থাপন করা হবে:
টিক কি
কে-লাইন ডেটা থেকে আলাদা, টিক হল একটি নির্দিষ্ট সময়ে মূল্য। কে-লাইন ডেটা অনুসারে, আমরা আসলে কেবলমাত্র খোলার দাম এবং বন্ধের দামের ঘটনাটি জানি তা কখন K-লাইন চক্রের মধ্যে সর্বোচ্চে পৌঁছায় তা স্পষ্ট নয়। আসলে, কে-লাইন ডেটাও টিকগুলির উপর ভিত্তি করে তৈরি করা হয়। কে-লাইন ডেটার উপর ভিত্তি করে, আমরা একটি কে-লাইন চক্রের নির্দিষ্ট টিকগুলির পরিবর্তনগুলি অনুকরণ করতে পারি যদিও এটি একটি বাস্তব টিক নয়, এটি আমাদের ব্যাকটেস্টিংকে আরও সঠিক করে তুলতে পারে। এবং সিমুলেশনের উপর ভিত্তি করে কে-লাইন সময়কাল ব্যাকটেস্টিংয়ের জন্য ব্যবহৃত সময়ের চেয়ে অনেক ছোট হতে পারে, তাই নির্ভুলতা বেশি।
সিমুলেশন লেভেল ব্যাকটেস্টিং
সিমুলেশন-লেভেল ব্যাকটেস্টিংয়ের জন্য, আপনাকে কে-লাইন পিরিয়ড এবং ব্যাকটেস্টে ব্যবহৃত অন্তর্নিহিত কে-লাইন পিরিয়ড নির্বাচন করতে হবে। উদাহরণস্বরূপ, যদি কৌশলটি ঘন্টায় লাইন ব্যাকটেস্টিং ব্যবহার করে এবং অন্তর্নিহিত কে-লাইনটি 5 মিনিটের জন্য নির্বাচন করা হয়, তাহলে ব্যাকটেস্টিং টাইম পয়েন্টগুলির মধ্যে ব্যবধানটি 5-মিনিটের কে-লাইন সিমুলেশন দ্বারা তৈরি করা টিকগুলির উপর ভিত্তি করে হবে সর্বশেষ 1-ঘন্টা K-লাইনের ক্লোজিং মূল্য ক্রমাগত পরিবর্তিত হয়। কে-লাইনের উপর ভিত্তি করে কে-লাইনের মধ্যে টিক তৈরির জন্য নির্দিষ্ট পদ্ধতিটি MT4-এর মতোই এই পোস্টে বিস্তারিত নির্দেশাবলী রয়েছে: https://www.fmz.com/bbs-topic/662

আমরা এই প্রক্রিয়াটি প্রদর্শন করার জন্য একটি সাধারণ কৌশল ব্যবহার করি, কৌশল কোড:
function main() {
while(true){
var records = exchange.GetRecords() //GetRecords可以填参数,获取不同周期K线。
var ticker = exchange.GetTicker()
Log('K线收盘价: ', records[records.length-1].Close, 'ticker买一卖一价: ', ticker.Buy, ticker.Sell)
//js回测不用Sleep,会自动跳到下一个tick。Python需要一个小的休眠时间
}
}
ব্যাকটেস্ট ফলাফল:
প্রতিটি K লাইনের শুধুমাত্র খোলার এবং বন্ধ করার টিকগুলি স্থির করা হয়েছে, এবং এর মধ্যে 12 টি সিমুলেটেড টিক যোগ করা হয়েছে এইভাবে, একটি K লাইন 14টি ব্যাকটেস্ট টাইম পয়েন্ট তৈরি করবে। ব্যাকটেস্টিংয়ে যদি একদিন সময় লাগে, নিচের কে-লাইন চক্রে 5 মিনিট সময় লাগে এবং সেখানে মোট 24×12×14 = 4032 টাইম পয়েন্ট থাকে, যখন প্রথাগত অনবার ব্যাকটেস্টে শুধুমাত্র 24 থাকে এবং যথার্থতা অনেক উন্নত হয়। পজিশন ওপেনিং এবং ক্লোজিং অপারেশনগুলিও একটি কে-লাইন চক্রের মধ্যে সম্পন্ন করা যেতে পারে। যদিও মাঝখানে উত্পন্ন টিকটি সিমুলেটেড, এটির সামান্য প্রভাব রয়েছে। ব্যাকটেস্ট চলাকালীন, যতক্ষণ পর্যন্ত ক্রয়মূল্য বিক্রয়মূল্যের চেয়ে বেশি এবং বিক্রয়মূল্য ক্রয়মূল্যের চেয়ে কম ততক্ষণ পর্যন্ত লেনদেন সম্পন্ন হবে। এই ব্যাকটেস্টিং পদ্ধতি ব্যাকটেস্টিং গতি এবং নির্ভুলতা উভয়কেই বিবেচনা করে এবং প্রত্যেকের ব্যবহারের জন্য সুপারিশ করা হয়।
বাস্তব অফার স্তর ব্যাকটেস্টিং
রিয়েল ডিস্ক লেভেল ব্যাকটেস্টিং রিয়েল টিক ব্যবহার করে, এবং প্রতিটি টাইম পয়েন্টের মধ্যে সবচেয়ে কম ব্যবধান মাত্র 1 সেকেন্ডের পরিবর্তনের জন্য এই ধরনের ব্যাকটেস্টিং সঠিক, কিন্তু প্রচুর পরিমাণে ডেটার কারণে ব্যাকটেস্টিং গতি ধীর এবং ব্যাকটেস্টিং। সময় খুব দীর্ঘ হতে পারে না। নীচের ছবিটি আসল টিক দেখায়। বাস্তব-বিশ্ব ব্যাকটেস্টিং সঠিকভাবে কৌশল যাচাই করতে ব্যবহার করা যেতে পারে।

এমনকি যদি রিয়েল-লেভেল ব্যাকটেস্ট এবং রিয়েল-টাইম অফার থাকে, তবুও সুস্পষ্ট ডেটা ঘাটতি রয়েছে, যেমন লেনদেনের ইতিহাস ট্রেড পেতে অক্ষমতা, প্রকৃত গভীরতার পরিবর্তন, প্রকৃত নেটওয়ার্ক বিলম্ব ইত্যাদি। তা সত্ত্বেও, FMZ-এর বর্তমান ব্যাকটেস্টিং সিস্টেম তুলনামূলকভাবে সম্পূর্ণ এবং এতে অনেক ছোট ফাংশন রয়েছে, যেমন নেটওয়ার্ক ত্রুটির অনুকরণ, যা কৌশলগুলির ত্রুটি সহনশীলতা পরীক্ষা করতে, নেটওয়ার্ক বিলম্বের অনুকরণ, বাজারের আইকন আঁকা ইত্যাদির জন্য ব্যবহার করা যেতে পারে।
কেন শুধুমাত্র কয়েকটি ট্রেডিং জোড়া এবং এক্সচেঞ্জ ব্যাকটেস্টিংয়ের জন্য সমর্থিত?
বর্তমানে, মাত্র কয়েকটি সাধারণ ট্রেডিং জোড়া ডেটা রয়েছে। আসলে, কৌশল এবং পণ্যের মধ্যে সম্পর্ক খুব বেশি নয়, তবে কৌশল যাচাই করার জন্য এটি যথেষ্ট।
আপনি BitMEX দ্বারা চার্জ করা তহবিল হার অনুকরণ করতে পারেন?
হ্যাঁ, বিটমেক্স ব্যাকটেস্ট নির্বাচন করে ইভেন্ট রেকর্ডিং চালু করা যেতে পারে।

ব্যাকটেস্টিং কোথায় করা হয়?
জাভাস্ক্রিপ্ট কৌশলগুলির ব্যাকটেস্টিং ব্রাউজারে পরিচালিত হয় এবং পাইথন FMZ এর সার্ভার বা তার নিজস্ব হোস্ট বেছে নিতে পারে।
ব্যাকটেস্ট লগ ডাউনলোড করা যাবে?
হ্যাঁ, লগের উপরের ডানদিকে একটি ডাউনলোড বোতাম আছে।
আমি কি স্থানীয়ভাবে ব্যাকটেস্ট করতে পারি?
FMZ ওপেন সোর্স পাইথন ব্যাকটেস্টিং ইঞ্জিন। রেফারেন্স: https://www.fmz.com/bbs-topic/1687