0
ফোকাস
78
অনুসারী

টাইম সিরিজ ডেটা বিশ্লেষণ এবং টিক ডেটা ব্যাকটেস্টিং

তৈরি: 2019-08-08 10:05:45, আপডেট করা হয়েছে: 2024-12-19 00:24:00
comments   0
hits   5473

টাইম সিরিজ ডেটা বিশ্লেষণ এবং টিক ডেটা ব্যাকটেস্টিং

সময় সিরিজের তথ্য

টাইম সিরিজ বলতে পরপর সমানভাবে ব্যবধানযুক্ত সময়ের মধ্যে প্রাপ্ত ডেটার একটি ক্রম বোঝায়। পরিমাণগত বিনিয়োগে, এই ডেটাগুলি প্রধানত মূল্যের গতিবিধি এবং বিনিয়োগ লক্ষ্যগুলির ডেটা পয়েন্টগুলির দ্বারা ট্র্যাক করা হয়। উদাহরণস্বরূপ, একটি নির্দিষ্ট সময়ের মধ্যে নিয়মিতভাবে রেকর্ড করা স্টক মূল্য এবং টাইম সিরিজ ডেটা নিম্নলিখিত চিত্রটি উল্লেখ করতে পারে:

টাইম সিরিজ ডেটা বিশ্লেষণ এবং টিক ডেটা ব্যাকটেস্টিং

আপনি দেখতে পাচ্ছেন, তারিখটি x-অক্ষে এবং মূল্যটি y-অক্ষে রয়েছে। এই ক্ষেত্রে, “নিরবচ্ছিন্ন ব্যবধানের সময়কাল” এর অর্থ হল x-অক্ষের দিনগুলির মধ্যে 14 দিনের ব্যবধান রয়েছে: 7 মার্চ, 2005 এবং পরবর্তী বিন্দু, 31 মার্চ, 2005, এপ্রিল 2005 5 এবং 19 এপ্রিল, 2005 এর মধ্যে পার্থক্যটি নোট করুন .

যাইহোক, আপনি যখন টাইম সিরিজ ডেটা নিয়ে কাজ করেন, আপনি প্রায়শই মাত্র দুটি কলামের বেশি দেখতে পান: তারিখ এবং মূল্য৷ বেশিরভাগ ক্ষেত্রে, আপনি এমন ডেটা ব্যবহার করবেন যাতে পাঁচটি কলাম থাকে: ডেটা পিরিয়ড, খোলার মূল্য, উচ্চ মূল্য, কম দাম এবং বন্ধের মূল্য। এর মানে হল যে আপনার ডেটা পিরিয়ড যদি দৈনিক লেভেলে সেট করা থাকে, তাহলে দিনের হাই, খোলা, কম এবং ক্লোজিং দামের পরিবর্তন এই টাইম সিরিজ ডেটাতে প্রতিফলিত হবে।

টিক ডেটা কি

টিক ডেটা হল এক্সচেঞ্জের সবচেয়ে বিস্তারিত লেনদেন ডেটা কাঠামো। এটি উপরে উল্লিখিত টাইম সিরিজ ডেটার একটি বর্ধিত রূপও, যার মধ্যে রয়েছে: খোলার মূল্য, সর্বোচ্চ মূল্য, সর্বনিম্ন মূল্য, সর্বশেষ মূল্য, ট্রেডিং ভলিউম এবং ট্রেডিং পরিমাণ। যদি লেনদেনের ডেটা একটি নদীর সাথে তুলনা করা হয়, টিক ডেটা হল একটি নির্দিষ্ট ক্রস-সেকশনে এই নদীর ডেটা।

টাইম সিরিজ ডেটা বিশ্লেষণ এবং টিক ডেটা ব্যাকটেস্টিং

উপরের ছবিতে দেখানো হয়েছে, বৈদেশিক মুদ্রার প্রতিটি ক্রিয়া বাস্তব সময়ে বাজারে ঠেলে দেওয়া হবে। অন্যদিকে, দেশীয় এক্সচেঞ্জগুলি প্রতি সেকেন্ডে দুবার চেক করুন যদি সেই সময়ের মধ্যে কোনও কাজ হয়, একটি স্ন্যাপশট তৈরি হয় এবং পুশ করা হয়৷ তুলনামূলকভাবে, ডেটা পুশকে শুধুমাত্র অনটাইম হিসাবে সেরা হিসাবে বিবেচনা করা যেতে পারে, তবে অনটিক বলা যাবে না।

এই টিউটোরিয়ালের জন্য সমস্ত কোড এবং টাইম সিরিজ ডেটা অর্জন ইনভেন্টর কোয়ান্টিটেটিভ প্ল্যাটফর্মে সম্পন্ন হয়েছে।

উদ্ভাবক দ্বারা টিক ডেটা পরিমাপ করা হয়েছে

যদিও ঘরোয়া টিক ডেটা আসল টিক নয়, ব্যাকটেস্টিংয়ের জন্য এই ডেটা ব্যবহার করে অন্তত অসীমভাবে বাস্তবতার কাছাকাছি হতে পারে এবং পুনরুদ্ধার করতে পারে। প্রতিটি টিক সেই সময়ে বাজারে থাকা পণ্যের প্রধান প্যারামিটারগুলি প্রদর্শন করে এবং বাস্তব ব্যবসায়, আমাদের কোড প্রতি সেকেন্ডে 2 বার তাত্ত্বিক টিক-এর উপর ভিত্তি করে গণনা করা হয়।

টাইম সিরিজ ডেটা বিশ্লেষণ এবং টিক ডেটা ব্যাকটেস্টিং

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

টাইম সিরিজ ডেটা বিশ্লেষণ এবং টিক ডেটা ব্যাকটেস্টিং

এই টিউটোরিয়ালটি সম্পূর্ণ করার জন্য আপনার যে মৌলিক ধারণাগুলি জানা প্রয়োজন, সেগুলি এখন আপনার বোধগম্য হয়ে গেছে। আমরা শীঘ্রই এই ধারণাগুলিতে ফিরে আসব, এবং আপনি এই টিউটোরিয়ালে পরে এগুলি সম্পর্কে আরও শিখবেন।

এই অংশের বিষয়বস্তু সম্পর্কে, আগ্রহী বন্ধুরা আরও তথ্যের জন্য এখানে যান: https://www.fmz.com/bbs-topic/1651

আপনার কাজের পরিবেশ সেট আপ করুন

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

  • ইনভেনটর কোয়ান্টিটেটিভ প্ল্যাটফর্মের কাস্টোডিয়ান সিস্টেমের স্থাপনা

হোস্ট স্থাপন করার দুটি উপায় রয়েছে:

পদ্ধতি A: ব্যবহারকারীরা নিজেরাই সার্ভার ভাড়া নেয় বা ক্রয় করে এবং সেগুলিকে AWS, Alibaba ক্লাউড, ডিজিটাল ওশান এবং Google ক্লাউডের মতো প্রধান ক্লাউড কম্পিউটিং প্ল্যাটফর্মে স্থাপন করে। সুবিধা হল যে উদ্ভাবক পরিমাণগত প্ল্যাটফর্মের জন্য, ব্যবহারকারীদের এই পদ্ধতিটি ব্যবহার করার জন্য উত্সাহিত করা হয় (হয় গ্রাহক বা প্ল্যাটফর্মের দ্বারা) আক্রমণের লুকানো বিপদ দূর করে৷

বিষয়বস্তুর এই অংশের জন্য, পাঠকরা উল্লেখ করতে পারেন: https://www.fmz.com/bbs-topic/2848

পদ্ধতি B: উদ্ভাবক কোয়ান্টিফিকেশন প্ল্যাটফর্মের সর্বজনীন সার্ভার ব্যবহার করুন প্ল্যাটফর্মটি হংকং, লন্ডন এবং হ্যাংঝোতে স্থাপনা প্রদান করে যে তারা বিনিময় করতে চায় তার অবস্থানের উপর ভিত্তি করে। এই দিকটির সুবিধা হল এটি সহজ এবং সহজ, এবং এটি এক ক্লিকে সম্পন্ন করা যায় বিশেষ করে নতুন ব্যবহারকারীদের জন্য একটি লিনাক্স সার্ভার কেনার সময় তাদের অনেক বিষয় বোঝার প্রয়োজন হয় না এবং তারা সময়ও বাঁচায় লিনাক্স কমান্ড শেখার শক্তিও তুলনামূলকভাবে সস্তা, যা তাদের জন্য উপযোগী যারা প্রচুর পরিমাণে তহবিল নেই এবং প্ল্যাটফর্ম ব্যবহার করার পরামর্শ দেওয়া হচ্ছে।

টাইম সিরিজ ডেটা বিশ্লেষণ এবং টিক ডেটা ব্যাকটেস্টিং

নতুনদের বোঝার যত্ন নেওয়ার জন্য, এই নিবন্ধটি পদ্ধতি B গ্রহণ করবে।

নির্দিষ্ট অপারেশন হল: FMZ.COM-এ লগ ইন করুন, কন্ট্রোল সেন্টার, হোস্টে ক্লিক করুন এবং হোস্ট পৃষ্ঠায় হোস্ট ভাড়া করতে এক-ক্লিক করুন।

পাসওয়ার্ড লিখুন সফল স্থাপনার পরে, নীচে দেখানো হয়েছে:

টাইম সিরিজ ডেটা বিশ্লেষণ এবং টিক ডেটা ব্যাকটেস্টিং

  • রোবট সিস্টেমের ধারণা এবং হোস্টের সাথে এর সম্পর্ক

উপরে উল্লিখিত হিসাবে, একটি হোস্ট একটি ডকার সিস্টেমের মতো, এবং একটি ডকার সিস্টেম মানগুলির একটি সেটের মতো, আমরা এই মানগুলির জন্য একটি “উদাহরণ” তৈরি করতে হবে এবং এই “উদাহরণ” হল। একটি রোবট

একটি রোবট তৈরি করা খুব সহজ হোস্ট স্থাপন করার পরে, বাম দিকের রোবট কলামে ক্লিক করুন, রোবট তৈরি করুন ক্লিক করুন, লেবেল নামের একটি নাম পূরণ করুন এবং পরিচালিত হোস্টগুলির মধ্যে আপনি যে হোস্টটি স্থাপন করেছেন তা নির্বাচন করুন৷ নীচের ডায়ালগ বক্সে প্যারামিটার নির্বাচন এবং কে-লাইন চক্র নির্দিষ্ট পরিস্থিতি অনুযায়ী নির্বাচন করা যেতে পারে, প্রধানত ট্রেডিং কৌশল নির্বাচনের সাথে সহযোগিতা করার জন্য।

টাইম সিরিজ ডেটা বিশ্লেষণ এবং টিক ডেটা ব্যাকটেস্টিং

এই মুহুর্তে, আমাদের কাজের পরিবেশ সেট আপ করা হয়েছে আপনি দেখতে পাচ্ছেন যে এটি খুব সহজ এবং কার্যকর, এবং প্রতিটি ফাংশন তার দায়িত্ব পালন করে। এর পরে, আমাদের পরিমাণগত কৌশল লিখতে শুরু করতে হবে।

পাইথন ব্যবহার করে একটি সাধারণ চলমান গড় কৌশল প্রয়োগ করুন

উপরে আমরা টাইম সিরিজ ডেটা এবং টিক ডেটার ধারণাগুলি উল্লেখ করেছি, আমরা এই দুটি ধারণাকে লিঙ্ক করার জন্য একটি সাধারণ চলমান গড় কৌশল ব্যবহার করি।

  • চলমান গড় কৌশলের মূল নীতি

একটি ধীর সময়ের মুভিং এভারেজের মাধ্যমে, যেমন 7-দিনের মুভিং এভারেজ, এবং একটি ফাস্ট পিরিয়ড মুভিং এভারেজ, যেমন 3-দিনের মুভিং এভারেজ। একই কে-লাইন চার্টে তাদের প্রয়োগ করে, যখন ফাস্ট পিরিয়ড মুভিং এভারেজ স্লো পিরিয়ড মুভিং এভারেজ অতিক্রম করে, তখন আমরা একে গোল্ডেন ক্রস বলি যখন স্লো পিরিয়ড মুভিং এভারেজ ফাস্ট পিরিয়ড মুভিং এভারেজের নিচে চলে যায়, আমরা একে ডেড ক্রস বলি .

একটি পজিশন খোলার ভিত্তি হল একটি সুবর্ণ ক্রস এবং একটি মৃত ক্রসের জন্য একটি ছোট অর্ডার খোলার জন্য একই নীতিটি একটি অবস্থান বন্ধ করার ক্ষেত্রে প্রযোজ্য।

আসুন FMZ.COM খুলি, অ্যাকাউন্ট, কন্ট্রোল সেন্টার, স্ট্র্যাটেজি লাইব্রেরিতে লগ ইন করি, একটি নতুন স্ট্র্যাটেজি তৈরি করি এবং উপরের বাম কোণে স্ট্র্যাটেজি লেখার ভাষায় পাইথন নির্বাচন করি। নিচের এই কৌশলটির প্রতিটি লাইনে খুব বিস্তারিত মন্তব্য রয়েছে। এই কৌশলটি একটি বাস্তব ট্রেডিং কৌশল নয়, এটি মূলত প্রত্যেককে কৌশল লেখার জন্য একটি সাধারণ ধারণা এবং শেখার টেমপ্লেট দেওয়ার জন্য।

import types # 导入Types模块库,这是为了应对代码中将要用到的各种数据类型

def main(): # 主函数,策略逻辑从这里开始
    STATE_IDLE = -1 # 标记持仓状态变量
    state = STATE_IDLE # 标记当前持仓状态
    initAccount = ext.GetAccount() #这里用到了现货数字货币交易类库(python版),编写策略时记得勾选上,作用是获得账户初始信息
    while True: # 进入循环
        if state == STATE_IDLE : # 这里开始开仓逻辑
            n = ext.Cross(FastPeriod,SlowPeriod) # 这里用到了指标交叉函数,详情请查看https://www.fmz.com/strategy/21104
            if abs(n) >= EnterPeriod : # 如果n大于等于入市观察期,这里的入市观察期是为了防止一开盘就胡乱开仓。
                opAmount = _N(initAccount.Stocks * PositionRatio,3) # 开仓量,关于_N的用法,请查看官方API文档
                Dict = ext.Buy(opAmount) if n > 0 else ext.Sell(opAmount) # 建立一个变量,用于存储开仓状态,并执行开仓操作
                if Dict :  # 查看dict变量的情况,为下面的日志输出做准备
                    opAmount = Dict['amount']
                    state = PD_LONG if n > 0 else PD_SHORT # PD_LONG和PD_SHORT均为全局常量,分别用来表示多头和空头仓位。
                    Log("开仓详情",Dict,"交叉周期",n) # 日志信息
        else: # 这里开始平仓逻辑
            n = ext.Cross(ExitFastPeriod,ExitSlowPeriod) # 指标交叉函数,
            if abs(n) >= ExitPeriod and ((state == PD_LONG and n < 0) or (state == PD_SHORT and n > 0)) : # 如果经过了离市观察期且当前账户状态为持仓状态,进而判断金叉或者死叉
                nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                Dict2 = ext.Sell(nowAccount.Stocks - initAccount.Stocks) if state == PD_LONG else ext.Buy(initAccount.Stocks - nowAccount.Stocks) # 平仓逻辑,是多头就平多头,是空头就平空头。
                state = STATE_IDLE # 标记平仓后持仓状态。
                nowAccount = ext.GetAccount() # 再次刷新和获取账户信息
                LogProfit(nowAccount.Balance - initAccount.Balance,'钱:',nowAccount.Balance,'币:',nowAccount.Stocks,'平仓详情:',Dict2,'交叉周期:',n) # 日志信息
        Sleep(Interval * 1000) # 循环暂停一秒,防止API访问频率过快导致账户被限制。

  • চলমান গড় কৌশলগুলির ব্যাকটেস্টিং

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

সিমুলেটেড ব্যাকটেস্টে ক্লিক করুন, আপনি দেখতে পাবেন যে অনেকগুলি সামঞ্জস্যযোগ্য পরামিতি রয়েছে, যা ভবিষ্যতে কৌশলটি আরও জটিল হয়ে উঠবে এবং এইভাবে আরও বেশি পরিমার্জন সাহায্য করতে পারে ব্যবহারকারীরা একের পর এক কোডে যাওয়া এড়িয়ে যান, এটি পরিবর্তনের ঝামেলা দূর করে, সুবিধাজনক, দ্রুত এবং পরিষ্কারভাবে সংগঠিত।

টাইম সিরিজ ডেটা বিশ্লেষণ এবং টিক ডেটা ব্যাকটেস্টিং

পরবর্তী টিউনিং বিকল্পগুলি স্বয়ংক্রিয়ভাবে সেট পরামিতিগুলিকে অপ্টিমাইজ করতে পারে এবং কৌশল বিকাশকারীদের সর্বোত্তম পছন্দ খুঁজে পেতে সিস্টেমটি বিভিন্ন সর্বোত্তম পরামিতি চেষ্টা করবে।

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