مشابه میانگین های متحرک ساده/وزنی، میانگین های متحرک نمایی (EMA) مقادیر داده های مشاهده شده را صاف می کنند. تفاوت این است که این روش ها از مقدار EMA محاسبه شده قبلی به عنوان مبنا استفاده می کنند تا از مقدار داده اصلی (غیر صاف). از آنجایی که EMA بر روی خود ساخته می شود، تمام مقادیر داده های قبلی تا حدی بر EMA جدید تأثیر می گذارند، اگرچه این اثر به سرعت با گذشت زمان کاهش می یابد.
1. ریاضی
معادله EMA بازگشتی است، به عنوان مثال، مقادیر جدید از مقادیر EMA محاسبه شده قبلی استفاده می کنند:
| متغیر | توضیح |
| مشاهده فعلی در . |
| EMA فعلی در، یعنی EMA که باید محاسبه شود. |
| عامل هموارسازی که تعیین می کند چه مقدار وزن به آخرین مقدار مشاهده شده در مقابل آخرین EMA محاسبه شده می دهیم. بین 1 و 0 است. مقدار 0. 5 هر دو طرف را به طور مساوی وزن می کند. |
| آخرین EMA محاسبه شده، با مقدار ویژه برابر با اولین نقطه داده است. |
2. SQL با پرس و جو بازگشتی PostgreSQL
برای پیاده سازی این در SQL، اجازه دهید یک مثال گویا را در نظر بگیریم: داده های ما داده های فروش هستند که یک جزء فصلی قوی را نشان می دهند. علاوه بر این، روند افزایشی در دوره بیش از دوره است.

جدول دارای دو ستون است: dt یک مهر زمانی و فروش به عنوان یک عدد.
برای حل معادله بازگشتی، از پرس و جوهای بازگشتی PostgreSQL استفاده می کنیم. پرس وجوهای PostgreSQL می توانند یک بند WITH داشته باشند، که به شما اجازه می دهد از عباراتی استفاده کنید - که به عنوان عبارات جدول رایج (CTE) شناخته می شوند - که مانند جداول موقتی رفتار می کنند که فقط در طول اجرای پرس وجو وجود دارند.
اگر CTE حاوی یک مولفه بازگشتی باشد، این یک پرس و جو بازگشتی است. پرس و جوهای بازگشتی برای پرس و جوی داده هایی که ماهیت سلسله مراتبی را نشان می دهند مفید هستند.
برای تعریف یک پرس و جو بازگشتی، به دو بخش نیاز داریم - یک پرس و جو اولیه که غیر بازگشتی است و یک قسمت بازگشتی. شکل کلی یک پرس و جو بازگشتی به شرح زیر است:
با cte_name ( cte_query_definition -- unrecursive part union [همه] cte_query_definion -- recursive part ) * را از cte_name انتخاب کنید.
برای بخش غیر بازگشتی، ردیف اول داده های فروش را انتخاب می کنیم. با شماره گذاری نتایج با تابع پنجره row_number و اضافه کردن یک عبارت WHERE می توانیم ردیف اول را بدست آوریم:
* از (انتخاب dt، sales، row_number() روی () from sales_data) w که در آن row_number = 1;
برای بخش غیر بازگشتی، ما از یک خود الحاقی استفاده می کنیم که ردیف ها با 1 فاصله دارند تا ردیف قبلی را به دست آوریم (به علاوه، گرفتن ستون ها از جدول را به صورت t تغییر می دهیم)
با t به عنوان (انتخاب dt ، فروش ، row_number () بیش از ()) * را از t join t t2 در t2. row_number = t. row_number - 1 انتخاب کنید.
اکنون ، این مسئله پر کردن معادله برای محاسبه EMA ، اتحادیه با قسمت غیر قابل تکرار و اطمینان از هر دو بخش دارای تعداد ستون های یکسان است.
با بازگشتی t به عنوان (انتخاب dt ، 0. 5 به عنوان alpha ، row_number () بیش از () ، فروش از sales_data) ، ema as (انتخاب *، فروش به عنوان sales_ema از t where row_number = 1 اتحادیه همه t2. dt ، t2. alpha ،t2. row_number ، t2. sales ، t2. alpha * t2. sales + (1. 0 - t2. alpha) * ema. sales as sales_ema از ema به t2 در ema. row_number = t2. row_number - 1) dt ، sales ، sales ، sales را انتخاب کنید. sales_ema از EMA ؛

2000 و FISCAL_YEAR
راهنمای تجارت فارکس...
ما را در سایت راهنمای تجارت فارکس دنبال می کنید
برچسب :
نویسنده : نسیم خاکسار
بازدید : <-PostHit->
تاريخ : چهارشنبه
7 تير
1402 ساعت: 20:47