در پست قبلی ، ما آموختیم که چگونه داده های ارزی را بر اساس فواصل زمانی معین برای تولید نمودارهای شمعدانی برای انجام تجزیه و تحلیل روند گروه بندی کنیم. در این مقاله ، ما می آموزیم که چگونه می توان میانگین متحرک را در داده های سری زمانی محاسبه کرد.
میانگین حرکت یک شاخص فنی شناخته شده مالی است که معمولاً به تنهایی یا در ترکیب با سایر شاخص ها استفاده می شود. علاوه بر این ، میانگین متحرک به عنوان پارامتر سایر شاخص های فنی مالی مانند MACD گنجانده شده است. دلیل اصلی استفاده از این شاخص ، صاف کردن به روزرسانی های قیمت برای منعکس کردن تغییرات قیمت اخیر بر این اساس است. انواع مختلفی از میانگین های متحرک وجود دارد اما در اینجا ما روی دو مورد از آنها تمرکز خواهیم کرد: میانگین حرکت ساده (SMA) و میانگین متحرک نمایی (EMA).
میانگین حرکت ساده (SMA)
این میانگین ارزش قیمت یک ارز/سهام در یک دوره معین است.
بیایید SMA را برای ارز BTC-USD در سه فواصل داده آخر ، از جمله داده های فعلی محاسبه کنیم. به یاد داشته باشید که هر چوب در نمودار شمعدان فواصل پنج دقیقه ای را نشان می دهد. بنابراین ، برای هر بازه ، ما به دنبال سه فواصل قبلی هستیم.
ابتدا داده های ارز BTC-USD را برای فواصل پنج دقیقه ای گروه بندی خواهیم کرد: و ، نمودار شمعدان زیر را خواهیم داشت:
ما برای هر بازه چهار معیار داریم و قیمت نزدیک را به عنوان مقدار عددی برای محاسبه متوسط متحرک خود انتخاب خواهیم کرد. ما فقط به _id (یک قسمت تو در تو که شامل نماد و اطلاعات زمان است) و قیمت نزدیک علاقه مند هستیم. بنابراین ، از آنجا که ما علاقه ای به قیمت های بالا ، پایین و باز برای محاسبه SMA نداریم ، ما آن را از خط لوله جمع آوری با مرحله جمع آوری پروژه $ حذف خواهیم کرد:
بعد از گروه بندی و برش دادن ، مجموعه داده های زیر را خواهیم داشت:
پس از داشتن مجموعه داده فوق ، می خواهیم داده های خود را با نشانگر متوسط حرکت ساده همانطور که در شکل زیر نشان داده شده است غنی کنیم. هر بازه ای در هر نماد یک زمینه دیگر (SMA) برای نشان دادن نشانگر SMA با شامل سه فواصل فعلی و آخر خواهد داشت:
چگونه محاسبه می شود؟برای زمان ، ساعت 17:00 ، محاسبه SMA بسیار ساده است. از آنجا که ما سه نقطه داده قبلی را نداریم ، می توانیم قیمت موجود (35050) را در آن زمان به طور متوسط بگیریم. اگر سه نقطه داده قبلی نداریم ، می توانیم تمام اطلاعات موجود در قیمت موجود را بدست آوریم و بر اساس تعداد داده های قیمت تقسیم کنیم.
قسمت سخت تر وقتی می آید که بیش از سه نقطه داده قبلی داشته باشیم. اگر بیش از سه نقطه داده قبلی داشته باشیم ، باید موارد قدیمی تر را حذف کنیم. و ، ما باید این کار را انجام دهیم زیرا داده های بیشتری برای یک نماد واحد داریم. بنابراین ، ما با در نظر گرفتن تنها سه نقطه داده قبلی ، میانگین را محاسبه خواهیم کرد. جدول زیر محاسبه گام به گام برای هر بازه ای را نشان می دهد:
| زمان | محاسبه SMA برای پنجره (3 نقطه داده قبلی + فعلی) |
| 17:00:00 | 35050/1 |
| 17:05:00 | (35050+35170)/2 |
| 17:10:00 | (35050+35170+35280)/3 |
| 17:15:00 | (35050+35170+35280+34910)/4 |
| 17:20:00 | (35170+35280+34910+35060)/4 *قدیمی ترین داده های قیمت (35050) از محاسبه دور ریخته شد |
| 17:25:00 | (35280+34910+35060+35150)/4 *قدیمی ترین داده های قیمت (35170) از محاسبه دور ریخته شد |
| 17:30:00 | (34190+35060+35150+35350)/4 *قدیمی ترین داده های قیمت (35280) از محاسبه دور ریخته شد |
همانطور که در بالا مشاهده می کنید ، پنجره برای محاسبه متوسط در حال حرکت است زیرا ما داده های بیشتری داریم.
توابع پنجره
تاکنون ، ما تئوری محاسبه میانگین حرکت را آموختیم. چگونه می توانیم از MongoDB برای انجام این محاسبه برای همه ارزها استفاده کنیم؟
MongoDB 5. 0 یک مرحله جمع آوری جدید ، $ setWindowfields را برای انجام عملیات در طیف مشخصی از اسناد (پنجره) در پارتیشن های تعریف شده معرفی کرد. از آنجا که همچنین از محاسبه متوسط در پنجره از طریق اپراتور AVG $ پشتیبانی می کند ، ما به راحتی می توانیم از آن برای محاسبه میانگین حرکت ساده استفاده کنیم:
ما زمینه نماد را به عنوان کلید پارتیشن انتخاب کردیم. برای هر ارز ، ما یک پارتیشن داریم و هر پارتیشن پنجره خاص خود را برای پردازش آن داده های ارز خاص خواهد داشت. بنابراین ، هنگامی که ما می خواهیم داده های متوالی یک ارز واحد را پردازش کنیم ، داده های دیگر ارز را در هم نمی آمیزیم.
پس از تنظیم قسمت پارتیشن ، ما برای پردازش داده ها به روش سفارش داده شده ، مرتب سازی را اعمال می کنیم. قسمت پارتیشن پردازش داده های واحد ارز را با هم فراهم می کند. با این حال ، ما می خواهیم داده ها را طبق سفارش زمان پردازش کنیم. همانطور که در نحوه محاسبه SMA بر روی مقاله می بینیم ، ترتیب داده ها اهمیت دارد و بنابراین ، باید زمینه را برای سفارش مشخص کنیم.
پس از تنظیم و مرتب سازی پارتیشن ها ، می توانیم داده ها را برای هر پارتیشن پردازش کنیم. ما یک زمینه دیگر ، "SMA" ایجاد می کنیم و روش محاسبه این زمینه مشتق شده را تعریف می کنیم. در اینجا ما سه چیز را تنظیم می کنیم:
اپراتوری که قرار است اجرا شود ($ avg). قسمت (قیمت $) که اپراتور در آن اجرا می شود. مرزهای پنجره ([-3،0]). [-3: "از 3 نقطه داده قبلی شروع کنید". 0] : "با گنجاندن نقطه داده فعلی پایان دهید".
همچنین می توانیم پارامتر دوم پنجره را به عنوان «جریان» تنظیم کنیم تا به جای دادن مقدار عددی، نقطه داده فعلی را در بر گیرد.
حرکت دادن پنجره روی داده های پارتیشن بندی شده و مرتب شده به شکل زیر خواهد بود. برای هر نماد، یک پارتیشن خواهیم داشت و تمام رکوردهای متعلق به آن پارتیشن بر اساس اطلاعات زمانی مرتب می شوند:
سپس فیلد sma را برای هر سند در جریان ورودی محاسبه خواهیم کرد. می توانید عملگر $round را برای برش به رقم اعشار مشخص شده در مرحله تجمع $set اعمال کنید:
اگر تمام مراحل تجمیع را با هم بیاوریم، به این خط لوله تجمع می رسیم:
ممکن است بخواهید فیلدهای محاسبه شده بیشتری را با گزینه های مختلف اضافه کنید. به عنوان مثال، شما می توانید دو محاسبه SMA با پارامترهای مختلف داشته باشید. یکی از آنها می تواند شامل سه امتیاز آخر باشد همانطور که قبلا انجام داده ایم، و دیگری می تواند شامل 10 امتیاز آخر باشد، و ممکن است بخواهید هر دو را با هم مقایسه کنید. پرس و جو زیر را بیابید:
در اینجا در کد بالا، دو فیلد مشتق شده را تنظیم می کنیم. فیلد sma_3 میانگین متحرک سه نقطه داده آخر را نشان می دهد و فیلد sma_10 میانگین متحرک 10 نقطه داده آخر را نشان می دهد. علاوه بر این، می توانید این دو میانگین متحرک را با هم مقایسه کنید تا در مورد ارز موضع بگیرید یا از آن برای پارامتری برای شاخص فنی خود استفاده کنید.
نمودار زیر دو محاسبه میانگین متحرک را نشان می دهد. خط با رنگ آبی نشان دهنده میانگین متحرک ساده با پنجره [-3, 0] است. خط با رنگ فیروزه ای نشان دهنده میانگین متحرک ساده با پنجره [-10, 0] است. همانطور که می بینید، وقتی پنجره بزرگتر است، واکنش به تغییر قیمت کندتر می شود:
حتی می توانید با عملیات اضافی مانند کوواریانس، انحراف معیار و غیره آن را غنی تر کنید. گزینه های کامل پشتیبانی شده را اینجا بررسی کنید. ما در اینجا میانگین متحرک نمایی را به عنوان یک عملیات اضافی پوشش خواهیم داد.
میانگین متحرک نمایی (EMA)
EMA نوعی میانگین متحرک است. با این حال، وزن داده های اخیر را بیشتر می کند. در محاسبه میانگین متحرک ساده، همه پارامترهای ورودی را به یک اندازه وزن می کنیم. با این حال، در میانگین متحرک نمایی، بر اساس پارامتر داده شده، داده های اخیر اهمیت بیشتری پیدا می کنند. بنابراین، میانگین متحرک نمایی سریعتر از میانگین متحرک ساده به به روز رسانی های اخیر قیمت در پنجره اندازه مشابه واکنش نشان می دهد.
$ expmovingavg در MongoDB 5. 0 معرفی شده است. این دو پارامتر طول می کشد: نام فیلد که شامل مقدار عددی برای محاسبه و مقدار N یا آلفا است. ما پارامتر N را تنظیم خواهیم کرد تا هنگام محاسبه میانگین متحرک ، چند نقطه داده قبلی را ارزیابی کنیم و بنابراین ، سوابق اخیر در نقاط داده N وزن بیشتری نسبت به داده های قدیمی تر خواهد داشت. برای اطلاعات بیشتر می توانید به مستندات مراجعه کنید:
در نمودار زیر ، SMA با خط آبی نشان داده شده است و EMA با خط قرمز نشان داده شده است ، و هر دو توسط پنج نقطه داده اخیر محاسبه می شوند. می توانید ببینید که چگونه میانگین متحرک ساده نسبت به میانگین متحرک نمایی واکنش کندتر نسبت به میانگین متحرک نمایی واکنش نشان می دهد ، حتی اگر هر دو در محاسبه سوابق یکسانی داشته باشند:
نتیجه
MongoDB 5. 0 ، با معرفی عملکرد پنجره ، محاسبات را در یک پنجره بسیار ساده تر می کند. بسیاری از اپراتورهای جمع آوری وجود دارند که می توانند از طریق یک پنجره اجرا شوند ، و ما در این مقاله شاهد AVG $ و $ expmovingavg هستیم.
در اینجا در مثال های داده شده ، مرزهای پنجره را با درج اسناد موقعیتی تنظیم می کنیم. به عبارت دیگر ، ما شروع به درج اسناد از سه نقطه داده قبلی به نقطه داده فعلی می کنیم (اسناد: [-3،0]). همچنین می توانید به جای تعیین موقعیت ، طیف وسیعی از اسناد را تنظیم کنید.
به عنوان مثال ، اگر پنجره به موقع مرتب شده باشد ، می توانید با مشخص کردن گزینه دامنه به شرح زیر ، 30 دقیقه آخر داده (هر تعداد از اسناد موجود) را درج کنید: دامنه: [-30،0] ، واحد: "دقیقه"بشراکنون ، ما ممکن است صدها سند در پنجره داشته باشیم اما می دانیم که فقط اسنادی را که از 30 دقیقه قدیمی تر از داده های فعلی نیستند ، درج می کنیم.
همچنین می توانید از طریق مراحل جمع آوری $ et out یا $ ادغام ، خروجی پرس و جو را به مجموعه دیگری تحقق بخشید. و علاوه بر این ، شما می توانید جریان های تغییر یا محرک های پایگاه داده را در نمای مادی فعال کنید تا به طور خودکار اقدامات خرید و فروش را بر اساس نتیجه تغییرات نشانگر فنی تحریک کنند.
اخبار رمز ارزها...
ما را در سایت اخبار رمز ارزها دنبال می کنید
برچسب :
نویسنده : منیژه سلیمی
بازدید : <-PostHit->
تاريخ : چهارشنبه
25 مرداد
1402 ساعت: 17:00