0
پر توجہ دیں
78
پیروکار

ٹائم سیریز ڈیٹا تجزیہ اور ٹک ڈیٹا بیک ٹیسٹنگ

میں تخلیق کیا: 2019-08-08 10:05:45, تازہ کاری: 2024-12-19 00:24:00
comments   0
hits   5473

ٹائم سیریز ڈیٹا تجزیہ اور ٹک ڈیٹا بیک ٹیسٹنگ

ٹائم سیریز ڈیٹا

ٹائم سیریز لگاتار یکساں وقفہ وقفہ وقفہ وقفہ سے حاصل کردہ ڈیٹا کا ایک سلسلہ ہے۔ مقداری سرمایہ کاری میں، یہ ڈیٹا بنیادی طور پر قیمتوں کی نقل و حرکت اور سرمایہ کاری کے اہداف کے ڈیٹا پوائنٹس کے طور پر ظاہر ہوتا ہے۔ مثال کے طور پر، اسٹاک کی قیمتیں، ایک مخصوص مدت کے دوران باقاعدگی سے ریکارڈ کیے جانے والے ٹائم سیریز کے ڈیٹا کو درج ذیل اعداد و شمار میں دیکھا جا سکتا ہے، جو قارئین کو ایک واضح فہم فراہم کرے گا:

ٹائم سیریز ڈیٹا تجزیہ اور ٹک ڈیٹا بیک ٹیسٹنگ

جیسا کہ آپ دیکھ سکتے ہیں، تاریخ x-axis پر ہے اور قیمت y-axis پر ہے۔ اس صورت میں، “مسلسل وقفے” کا مطلب ہے کہ ایکس محور پر دنوں میں 14 دن کا فرق ہے: 7 مارچ 2005 اور اگلے پوائنٹ، 31 مارچ 2005 اور اپریل 2005 کے درمیان فرق کو نوٹ کریں۔ 5 اور 19 اپریل 2005۔

تاہم، جب آپ ٹائم سیریز کے ڈیٹا کے ساتھ کام کرتے ہیں، تو آپ کو اکثر تاریخ اور قیمت کے کالم سے زیادہ نظر آئیں گے۔ زیادہ تر وقت آپ ڈیٹا کے ساتھ کام کر رہے ہوں گے جس میں پانچ کالم ہوں: ڈیٹا پیریڈ، اوپن، ہائی، لو، اور کلوز۔ اس کا مطلب ہے کہ اگر آپ کے ڈیٹا کا دورانیہ روزانہ کی سطح پر سیٹ کیا جاتا ہے، تو اس دن کی اعلی، کھلی، کم اور بند قیمت کی تبدیلیاں اس ٹائم سیریز کے ڈیٹا میں ظاہر ہوں گی۔

ٹک ڈیٹا کیا ہے؟

ٹک ڈیٹا ایکسچینج میں لین دین کا سب سے تفصیلی ڈیٹا ڈھانچہ ہے۔ یہ اوپر بیان کردہ ٹائم سیریز ڈیٹا کی ایک توسیعی شکل بھی ہے، بشمول: افتتاحی قیمت، سب سے زیادہ قیمت، سب سے کم قیمت، تازہ ترین قیمت، تجارتی حجم، اور لین دین کی رقم۔ اگر تجارتی ڈیٹا کو دریا سے تشبیہ دی جاتی ہے، تو ٹک ڈیٹا ایک مخصوص کراس سیکشن پر دریا کا ڈیٹا ہوتا ہے۔

ٹائم سیریز ڈیٹا تجزیہ اور ٹک ڈیٹا بیک ٹیسٹنگ

جیسا کہ مندرجہ بالا اعداد و شمار میں دکھایا گیا ہے، غیر ملکی زرمبادلہ کے ہر عمل کو حقیقی وقت میں مارکیٹ میں دھکیل دیا جائے گا۔ گھریلو تبادلے سیکنڈ میں دو بار چیک کرتے ہیں، اگر اس مدت کے دوران کوئی کارروائی ہوتی ہے، تو ایک سنیپ شاٹ تیار کیا جاتا ہے اور باہر نکال دیا جاتا ہے۔ اس کے مقابلے میں، ڈیٹا پش کو صرف آن ٹائم ہی بہترین سمجھا جا سکتا ہے، اور اسے OnTick نہیں کہا جا سکتا۔

اس ٹیوٹوریل کے لیے تمام کوڈز اور ٹائم سیریز کا ڈیٹا انوینٹر کوانٹیٹیو پلیٹ فارم پر حاصل کیا گیا ہے۔

موجد نے ٹک ڈیٹا کو کوانٹیفائیڈ کیا۔

اگرچہ گھریلو ٹک ڈیٹا ایک حقیقی ٹک نہیں ہے، اس ڈیٹا کو بیک ٹیسٹنگ کے لیے استعمال کرنے سے کم از کم حقیقت کے لامحدود قریب پہنچ سکتا ہے اور اسے بحال کر سکتا ہے۔ ہر ٹک اس وقت مارکیٹ میں پروڈکٹ کے بنیادی پیرامیٹرز دکھاتا ہے، اور اصل مارکیٹ میں، ہمارے کوڈ کا حساب 2 بار فی سیکنڈ کی تھیوریٹیکل ٹک ریٹ کے مطابق کیا جاتا ہے۔

ٹائم سیریز ڈیٹا تجزیہ اور ٹک ڈیٹا بیک ٹیسٹنگ

صرف یہی نہیں، Inventor Quantification میں، یہاں تک کہ اگر آپ 1 گھنٹے کی مدت کے لیے ڈیٹا لوڈ کرتے ہیں، تب بھی آپ ڈیٹا گرانولریٹی کو ایڈجسٹ کر سکتے ہیں، جیسے کہ ڈیٹا گرینولریٹی کو 1 منٹ میں ایڈجسٹ کرنا۔ اس وقت، 1 گھنٹے کی K-لائن 1 منٹ کے ڈیٹا پر مشتمل ہے۔ بلاشبہ، ذرہ کا سائز جتنا چھوٹا ہوگا، درستگی اتنی ہی زیادہ ہوگی۔ اس سے بھی زیادہ طاقتور بات یہ ہے کہ اگر آپ ڈیٹا کو ریئل ٹائم ٹِکس میں تبدیل کرتے ہیں، تو آپ بغیر کسی رکاوٹ کے حقیقی وقت کے ماحول کو بحال کر سکتے ہیں۔ یعنی ایکسچینج کے حقیقی ڈیٹا کو فی سیکنڈ میں دو بار ٹک کیا جاتا ہے۔

ٹائم سیریز ڈیٹا تجزیہ اور ٹک ڈیٹا بیک ٹیسٹنگ

اس ٹیوٹوریل کو مکمل کرنے کے لیے اب آپ کو بنیادی تصورات کی سمجھ ہے۔ ہم جلد ہی ان تصورات پر واپس جائیں گے، اور آپ اس ٹیوٹوریل میں بعد میں ان کے بارے میں مزید جانیں گے۔

اس حصے کے بارے میں مزید معلومات کے لیے ملاحظہ کیجیے: https://www.fmz.com/bbs-topic/1651

اپنے کام کے ماحول کو ترتیب دینا

کسی کے کام کو اچھی طرح سے کرنے کے لیے، ہمیں انوینٹر کوانٹیٹیو پلیٹ فارم پر ایک نگہبان تعینات کرنے کی ضرورت ہے، پروگرامنگ کے تجربے کے حامل قارئین اس کے بارے میں سوچ سکتے ہیں۔ مختلف مرکزی دھارے کے تبادلے کے عوامی API انٹرفیس اور حکمت عملی لکھنے اور بیک ٹیسٹنگ کے لیے تفصیلی تکنیکی تفصیلات کو شامل کیا گیا۔ اس نظام کو قائم کرنے کا اصل مقصد مقداری تاجروں کو انوینٹر کوانٹیٹیو پلیٹ فارم کا استعمال کرتے وقت حکمت عملی لکھنے اور ڈیزائن پر توجہ مرکوز کرنے کی ضرورت سے نجات دلانا ہے تاکہ یہ تکنیکی تفصیلات حکمت عملی کے مصنفین کو بہت ساری پریشانیوں سے بچانے کے لیے پیش کی جائیں۔ وقت اور توانائی.

  • موجد مقداری پلیٹ فارم کے محافظ نظام کی تعیناتی۔

میزبان کو تعینات کرنے کے دو طریقے ہیں:

طریقہ A: صارف خود سرور کرایہ پر لیتے ہیں یا خریدتے ہیں اور انہیں بڑے کلاؤڈ کمپیوٹنگ پلیٹ فارمز جیسے AWS، Alibaba Cloud، Digital Ocean، اور Google Cloud پر تعینات کرتے ہیں۔ فائدہ یہ ہے کہ انوینٹر کوانٹیٹیو پلیٹ فارم کے لیے حکمت عملی کی حفاظت اور نظام کی حفاظت کی ضمانت دی جاتی ہے، اس طرح کی تقسیم شدہ تعیناتی سرور کے حملوں کے خطرے کو ختم کرتی ہے۔

اس حصے کے لیے قارئین ملاحظہ فرما سکتے ہیں: https://www.fmz.com/bbs-topic/2848

طریقہ B: انوینٹر کوانٹیٹیو پلیٹ فارم کی پبلک سرور تعیناتی کا استعمال کریں یہ پلیٹ فارم ہانگ کانگ، لندن اور ہانگزو میں تعیناتی کے اصول کے مطابق ایکسچینج کے مقام کی بنیاد پر تعینات کر سکتا ہے۔ اس پہلو کا فائدہ یہ ہے کہ یہ سادہ اور آسان ہے، اور یہ خاص طور پر ابتدائی صارفین کے لیے موزوں ہے، انہیں لینکس سرور خریدنے کے لیے بہت سے مسائل کو سمجھنے کی ضرورت نہیں ہے، اور یہ وقت اور توانائی کی بچت بھی کرتے ہیں۔ لینکس کمانڈز سیکھنے میں قیمت بھی نسبتاً سستی ہے، جو کہ چھوٹے فنڈز والے صارفین کے لیے موزوں ہے، پلیٹ فارم اس تعیناتی کا طریقہ استعمال کرنے کی تجویز کرتا ہے۔

ٹائم سیریز ڈیٹا تجزیہ اور ٹک ڈیٹا بیک ٹیسٹنگ

ابتدائیوں کی سمجھ کا خیال رکھنے کے لیے، یہ مضمون طریقہ B اختیار کرے گا۔

مخصوص کارروائیاں یہ ہیں: FMZ.COM میں لاگ ان کریں، کنٹرول سینٹر، میزبان پر کلک کریں، اور میزبان صفحہ پر میزبان کے ایک کلک رینٹل پر کلک کریں۔

کامیاب تعیناتی کے بعد پاس ورڈ درج کریں۔

ٹائم سیریز ڈیٹا تجزیہ اور ٹک ڈیٹا بیک ٹیسٹنگ

  • روبوٹ سسٹم کا تصور اور میزبان سے اس کا تعلق

جیسا کہ اوپر ذکر کیا گیا ہے، میزبان ایک ڈاکر سسٹم کی طرح ہے، اور ایک ڈوکر سسٹم معیارات کے اس سیٹ کو متعین کرنے کے بعد، ہمیں اس معیار کے لیے ایک “مثال” بنانے کی ضرورت ہے، اور یہ “مثال” ایک ہے۔ روبوٹ

ایک روبوٹ بنانا بہت آسان ہے میزبان کو تعینات کرنے کے بعد، بائیں طرف روبوٹ کالم پر کلک کریں، روبوٹ بنائیں پر کلک کریں، لیبل کے نام میں ایک نام بھریں، اور ہوسٹنگ ہوسٹ میں آپ نے جو میزبان ابھی تعینات کیا ہے اسے منتخب کریں۔ نیچے دیے گئے ڈائیلاگ باکس میں پیرامیٹر کا انتخاب اور K-لائن کی مدت کو مخصوص صورتحال کے مطابق منتخب کیا جا سکتا ہے، بنیادی طور پر تجارتی حکمت عملی کے انتخاب میں تعاون کرنے کے لیے۔

ٹائم سیریز ڈیٹا تجزیہ اور ٹک ڈیٹا بیک ٹیسٹنگ

اس مقام پر، ہمارا کام کرنے کا ماحول ترتیب دیا گیا ہے جیسا کہ آپ دیکھ سکتے ہیں، یہ بہت آسان اور موثر ہے، اور ہر فنکشن اپنا کام انجام دیتا ہے۔ اگلا، ہم مقداری حکمت عملی لکھنا شروع کریں گے۔

Python کے ساتھ ایک سادہ حرکت پذیر اوسط حکمت عملی کو نافذ کرنا

اوپر ہم نے ٹائم سیریز ڈیٹا اور ٹک ڈیٹا کے تصورات کا ذکر کیا ہے، ہم ان دونوں تصورات کو جوڑنے کے لیے ایک سادہ حرکت پذیری کی حکمت عملی استعمال کریں گے۔

  • حرکت اوسط حکمت عملی کا بنیادی اصول

ایک سست مدت کی موونگ ایوریج کے ذریعے، جیسے کہ 7 دن کی موونگ ایوریج، اور تیز مدت کی موونگ ایوریج، جیسے کہ 3 دن کی موونگ ایوریج۔ انہیں اسی K-line چارٹ پر لاگو کرتے ہوئے، جب تیز رفتار حرکت کی اوسط سست حرکت اوسط کو عبور کرتی ہے، تو ہم اسے گولڈن کراس کہتے ہیں، جب سست حرکت اوسط تیز رفتار حرکت پذیری کو عبور کرتی ہے، تو ہم اسے ڈیتھ کراس کہتے ہیں۔

پوزیشن کھولنے کی بنیاد گولڈن کراس کے ظاہر ہونے پر لمبا آرڈر کھولنا ہے اور جب گولڈن کراس ظاہر ہوتا ہے تو ایک ہی اصول پوزیشن کو بند کرنے پر لاگو ہوتا ہے۔

آئیے FMZ.COM کھولیں، اکاؤنٹ، کنٹرول سینٹر، حکمت عملی لائبریری میں لاگ ان کریں، ایک نئی حکمت عملی بنائیں، اور اوپری بائیں کونے میں حکمت عملی لکھنے کی زبان میں Python کو منتخب کریں۔ اس حکمت عملی کا کوڈ درج ذیل ہے ہر لائن میں بہت تفصیلی تبصرے ہیں۔ یہ حکمت عملی ایک لائیو حکمت عملی نہیں ہے، لہذا براہ کرم حقیقی رقم کے ساتھ تجربہ نہ کریں یہ بنیادی طور پر ہر ایک کو حکمت عملی لکھنے اور سیکھنے کے سانچے کے بارے میں ایک عام خیال دینا ہے۔

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访问频率过快导致账户被限制。

  • موونگ ایوریج اسٹریٹجی کی بیک ٹیسٹنگ

حکمت عملی میں ترمیم کرنے والے صفحہ پر، ہم نے اس حکمت عملی کو بیک ٹیسٹ کرنے کی ضرورت ہے تاکہ یہ معلوم ہو سکے کہ یہ کس طرح کی تاریخی مارکیٹ کے حالات میں کارکردگی کا مظاہرہ کرتی ہے، لیکن یہ صرف یہ ہے۔ بیک ٹیسٹنگ ایک اہم حوالہ کے طور پر کام کر سکتی ہے، کیونکہ مارکیٹ مسلسل بدلتی رہتی ہے۔

نقلی بیک ٹیسٹ پر کلک کریں، اور آپ دیکھ سکتے ہیں کہ بہت سے ایڈجسٹ پیرامیٹرز ہیں، جن میں براہ راست ترمیم کی جا سکتی ہے جیسے جیسے حکمت عملی زیادہ سے زیادہ پیچیدہ ہوتی جاتی ہے اور پیرامیٹرز کی تعداد میں اضافہ ہوتا ہے، ترمیم کا یہ طریقہ صارفین کو اس سے بچنے میں مدد دے سکتا ہے۔ کوڈ میں ایک ایک کرکے ان میں ترمیم کریں۔

ٹائم سیریز ڈیٹا تجزیہ اور ٹک ڈیٹا بیک ٹیسٹنگ

بعد میں ٹیوننگ کے اختیارات سیٹ پیرامیٹرز کو خود بخود بہتر بنا سکتے ہیں نظام حکمت عملی کے ڈویلپرز کو بہترین انتخاب تلاش کرنے میں مدد کے لیے مختلف بہترین پیرامیٹرز آزمائے گا۔

مندرجہ بالا مثالوں سے، ہم دیکھ سکتے ہیں کہ مقداری تجارت کی بنیاد ٹائم سیریز ڈیٹا کے تجزیہ اور ٹک ڈیٹا کی بیک ٹیسٹنگ کے درمیان تعامل ہے، چاہے منطق کتنی ہی پیچیدہ کیوں نہ ہو، یہ ان دو بنیادی عناصر سے الگ نہیں ہے۔ فرق صرف طول و عرض کا ہے، مثال کے طور پر، ہائی فریکوئنسی ٹریڈنگ کے لیے زیادہ تفصیلی ڈیٹا سیکشنز اور امیر ٹائم سیریز ڈیٹا کی ضرورت ہوتی ہے۔ مثال کے طور پر، ثالثی ٹریڈنگ کو بیک ٹیسٹ نمونوں کے لیے نسبتاً زیادہ ڈیٹا درکار ہوتا ہے، اس کے لیے دو تجارتی اہداف پر دس سال سے زیادہ مسلسل گہرائی والے ڈیٹا کی ضرورت ہوتی ہے تاکہ ان کے سود کی شرح کے پھیلاؤ میں توسیع اور سکڑاؤ کے شماریاتی نتائج معلوم ہوں۔ مستقبل کے مضامین میں، میں ہائی فریکوئنسی ٹریڈنگ اور آربیٹریج ٹریڈنگ کی حکمت عملیوں کو متعارف کرواؤں گا، اس لیے دیکھتے رہیں۔