داده ها - چندین بازه زمانی

ساخت وبلاگ

بعضی اوقات تصمیمات سرمایه گذاری با استفاده از بازه های زمانی مختلف گرفته می شود:

  • هفتگی برای ارزیابی روند
  • روزانه برای اجرای ورودی

یا 5 دقیقه در مقابل 60 دقیقه.

این بدان معنی است که ترکیب مجموعه داده های بازه های زمانی متعدد در Backtrader برای پشتیبانی از چنین ترکیبی مورد نیاز است.

پشتیبانی بومی از آن در حال حاضر ساخته شده است. کاربر نهایی فقط باید این قوانین را دنبال کند:

  • داده ها با کوچکترین بازه زمانی (و در نتیجه تعداد بیشتری از میله ها) باید 1 ST باشد که به نمونه Cerebro اضافه شود
  • داده ها باید به درستی تاریخ برای این سکو تراز شوند تا از آنها خارج شود

فراتر از آن ، کاربر نهایی برای استفاده از نشانگرهایی که در بازه های زمانی کوتاهتر و بزرگتر می خواستند ، رایگان است. البته:

  • شاخص های اعمال شده در بازه های زمانی بزرگتر ، میله های کمتری تولید می کنند

این پلتفرم همچنین موارد زیر را در نظر خواهد گرفت

  • حداقل دوره برای بازه های زمانی بزرگتر

حداقل دوره ای که احتمالاً قبل از اینکه یک استراتژی اضافه شود تا به عمل مغزی اضافه شود ، عارضه جانبی برای مصرف چندین مرتبه از میله های بازه زمانی کوچکتر خواهد داشت.

نمونه داخلی cerebro. resame برای ایجاد یک بازه زمانی بزرگتر استفاده می شود.

چند نمونه زیر ، اما ابتدا سس اسکریپت تست.

# داده ها را بارگیری کنید مسیر داده = استدلال.دیتان or '../../datas/2006-day-001. txt' داده ها = BTFEEDS.Backtradercsvdata(دیتان=مسیر داده) مغزی.adddata(داده ها) # ابتدا داده های اصلی را اضافه کنید - بازه زمانی کوچکتر تفرج ها = مدرک(روزانه=bt.دوره زمانی.روزها, هفتگی=bt.دوره زمانی.چند هفته, ماهانه=bt.دوره زمانی.ماه ها) # فرهنگ لغت مفید برای تبدیل بازه زمانی استدلال # داده ها را دوباره نمونه برداری کنید if استدلال.نمونه: مسیر داده = استدلال.dataname2 or '../../datas/2006-week-001. txt' data2 = BTFEEDS.Backtradercsvdata(دیتان=مسیر داده) # و سپس بازه زمانی بزرگ مغزی.adddata(data2) دیگر: مغزی.مجدداً(داده ها, دوره زمانی=تفرج ها[استدلال.دوره زمانی], تراکم=استدلال.تراکم) # همه چیز را اجرا کنید مغزی.اجرا کن() 
  • بارگیری یک داده
  • آن را با توجه به آرگومان های مشخص شده کاربر نمونه برداری کنید که اسکریپت همچنین امکان بارگیری یک داده دوم را فراهم می کند
  • داده ها را به Cerebro اضافه کنید
  • داده های مجدداً (بازه زمانی بزرگتر) را به Cerebro اضافه کنید
  • اجرا کن

مثال 1 - روزانه و هفتگی

دعوت از فیلمنامه:

دلار

و نمودار خروجی:

!image

مثال 2 - فشرده سازی روزانه و روزانه (2 میله تا 1)

دعوت از فیلمنامه:

دلار

و نمودار خروجی:

!image

مثال 3 - استراتژی با SMA

اگرچه نقشه برداری خوب است ، مسئله اصلی در اینجا نشان می دهد که چگونه بازه زمانی بزرگتر بر سیستم تأثیر می گذارد ، به خصوص وقتی که به نقطه شروع می رسد

این اسکریپت می تواند ی ک-مؤلفان را برای اضافه کردن یک استراتژی که میانگین حرکت ساده دوره 10 را در مجموعه داده های زمانی بزرگتر ایجاد می کند ، ایجاد کند.

اگر فقط بازه زمانی کوچکتر در نظر گرفته شد:

  • بعد از 10 میله اول خوانده می شود ، این زمانی است که میانگین حرکت ساده برای تولید یک نکته ارزش نیاز دارد: به یاد داشته باشید که مانیتورهای استراتژی باعث ایجاد شاخص ها می شوند و فقط وقتی همه شاخص ها یک ارزش تولید کرده اند ، فقط تماس می گیرند. دلیل منطقی این است که کاربر نهایی شاخص ها را برای استفاده از آنها در منطق اضافه کرده است و بنابراین اگر شاخص ها هیچ مقداری تولید نکرده باشند ، نباید منطقی اتفاق بیفتد

اما در این حالت ، بازه زمانی بزرگتر (هفتگی) فراخوانی بعدی را تا زمانی که میانگین حرکت ساده در حال حرکت باشد ، داده های هفتگی را به دست می آورد ، ارزش خود را تولید می کند ، که 10 هفته طول می کشد.

این فیلمنامه از NextStart که فقط یک بار خوانده می شود ، غلبه می کند و در هنگام اولین بار از آن به طور پیش فرض برای تماس با هم فراخوانی می شود.

دعوت 1:

فقط بازه زمانی کوچکتر ، روزانه ، میانگین حرکت ساده ای دریافت می کند

خط فرمان و خروجی

$ ./multitimeframe-example. py-Timeframe Weekly-compression 1-indicators-onlydaily ------------------------------------------------------------ NextStart با لن 10 تماس گرفت --------------------------------------------------------

!image

دعوت 2:

هر دو بازه زمانی میانگین متحرک ساده را دریافت می کنند

خط فرمان:

$ ./multitimeframe-example. py-Timeframe Weekly-Compression 1-indicators --------------------------------------------------------------------------------------------------------------------------------------- NextStart با لن 50 تماس گرفت ---------------------------------------------------- ---------------------------------------------------------- NextStart با لن 51 تماس گرفت ------------------------------------------------------ ------------------------------------------------------ NextStart با لن 52 تماس گرفت ---------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- NextStart با لن 54 تماس گرفت ----------------------------------------------------------

دو مورد برای توجه به اینجا:

  • به جای اینکه پس از 10 دوره فراخوانی شود ، استراتژی 1 st پس از 50 دوره است. این به این دلیل است که میانگین متحرک ساده اعمال شده در بازه زمانی بزرگتر (هفتگی) پس از 10 هفته ارزش تولید می کند ... و این 10 هفته * 5 روز در هفته است ... 50 روز
  • NextStart 5 بار به جای تنها 1 نامیده می شود. این یک عارضه جانبی طبیعی برای مخلوط کردن بازه زمانی و داشتن شاخص های (در این مورد فقط یک) است که برای بازه زمانی بزرگتر اعمال می شود. بازه زمانی بزرگتر میانگین متحرک ساده 5 برابر همان مقدار را تولید می کند در حالی که 5 میله روزانه مصرف می شوند. و از آنجا که شروع دوره توسط بازه زمانی بزرگتر کنترل می شود 5 بار نامیده می شود.

!image

نتیجه

داده های مختلف بازه زمانی را می توان در Backtrader بدون هیچ اشیاء خاص و یا تغییر دادن استفاده کرد: فقط ابتدا بازه های زمانی کوچکتر را اضافه کنید.

اسکریپت آزمون.

از جانب __آینده__ وارد كردن (مطلق_پورت, بخش, کاربرد_ کار, unicode_literals) وارد كردن دارای مجله وارد كردن پیشرو as bt وارد كردن backtrader. Feeds as BTFEEDS وارد كردن backtrader. Indicators as باج طبقه وصله(bt.استراتژی): پارامت = ( ('دوره زمانی', 10), ("فقط روزانه", دروغ), ) دنباله __init__(خود): خود.sma_small_tf = باج.SMA(خود.داده ها, دوره زمانی=خود.p.دوره زمانی) if نه خود.p.فقط روزانه: خود.sma_large_tf = باج.SMA(خود.data1, دوره زمانی=خود.p.دوره زمانی) دنباله شبانه روزی(خود): چاپ('--------------------------------------------------') چاپ("NextStart با لن تماس گرفت", لن(خود)) چاپ('--------------------------------------------------') فوق العاده(وصله, خود).شبانه روزی() دنباله جبهه(): استدلال = parse_args() # یک موجود Cerebro ایجاد کنید مغزی = bt.مغزی(stdstats=دروغ) # یک استراتژی اضافه کنید if نه استدلال.شاخص ها: مغزی.افزودنی(bt.استراتژی) دیگر: مغزی.افزودنی( وصله, # برای استراتژی استدلال می کند دوره زمانی=استدلال.دوره زمانی, فقط روزانه=استدلال.فقط روزانه, ) # داده ها را بارگیری کنید مسیر داده = استدلال.دیتان or '../../datas/2006-day-001. txt' داده ها = BTFEEDS.Backtradercsvdata(دیتان=مسیر داده) مغزی.adddata(داده ها) # ابتدا داده های اصلی را اضافه کنید - بازه زمانی کوچکتر تفرج ها = مدرک(روزانه=bt.دوره زمانی.روزها, هفتگی=bt.دوره زمانی.چند هفته, ماهانه=bt.دوره زمانی.ماه ها) # فرهنگ لغت مفید برای تبدیل بازه زمانی استدلال # داده ها را دوباره نمونه برداری کنید if استدلال.نمونه: مسیر داده = استدلال.dataname2 or '../../datas/2006-week-001. txt' data2 = BTFEEDS.Backtradercsvdata(دیتان=مسیر داده) # و سپس بازه زمانی بزرگ مغزی.adddata(data2) دیگر: مغزی.مجدداً(داده ها, دوره زمانی=تفرج ها[استدلال.دوره زمانی], تراکم=استدلال.تراکم) # همه چیز را اجرا کنید مغزی.اجرا کن() # نتیجه را ترسیم کنید مغزی.طرح(سبک='بار') دنباله parse_args(): تجزیه کننده = دارای مجله.مشاجره( شرح="آزمون چندتایی") تجزیه کننده.add_argument('-نامگذاری', پیش فرض='', ضروری=دروغ, کمک="داده های پرونده برای بارگیری") تجزیه کننده.add_argument('-Dataname2', پیش فرض='', ضروری=دروغ, کمک="پرونده بازه زمانی بزرگتر برای بارگیری") تجزیه کننده.add_argument('-نمونه ", عمل='Store_true', کمک="نمونه برداری نکنید ، بلکه بازه زمانی بزرگتر را بارگیری کنید") تجزیه کننده.add_argument('--دوره زمانی', پیش فرض="هفتگی", ضروری=دروغ, انتخاب=['روزانه', "هفتگی", 'Monhtly'], کمک="بازه زمانی برای نمونه برداری به") تجزیه کننده.add_argument("-افسردگی", پیش فرض=1, ضروری=دروغ, نوع=در نظر گرفتن, کمک="نوارهای کمپرس N را به 1") تجزیه کننده.add_argument('--شاخص ها', عمل='Store_true', کمک="مرطوب کردن استراتژی با شاخص ها") تجزیه کننده.add_argument('-Onlydaily', عمل='Store_true', کمک="نشانگر فقط برای بازه زمانی روزانه اعمال می شود") تجزیه کننده.add_argument('--دوره زمانی', پیش فرض=10, ضروری=دروغ, نوع=در نظر گرفتن, کمک="دوره برای درخواست به شاخص") برگشت تجزیه کننده.parse_args() if __نام__ == '__main__': جبهه() 
اخبار رمز ارزها...
ما را در سایت اخبار رمز ارزها دنبال می کنید

برچسب : نویسنده : منیژه سلیمی بازدید : <-PostHit-> تاريخ : شنبه 10 تير 1402 ساعت: 11:53