من به روشی برای تشخیص معکوس برای داده های سری زمانی در SQL Server نیاز دارم. من شنیده ام که شاخص قدرت نسبی می تواند به عنوان شاخص معکوس در سری زمانی باشد. لطفاً به من نشان دهید که چگونه این نشانگر را با T-SQL محاسبه کنم. همچنین ، راه هایی را برای انجام محاسبات نسبتاً آسان برای سری های مختلف در محدوده های مختلف تاریخ برای داده های سری زمانی در SQL Server نشان دهید.
راه حل
وارونگی در یک سری زمانی ، یک چرخش در جهت مقادیر در یک سری زمانی را نشان می دهد. غالباً یادگیری در مورد معکوس ها در اسرع وقت مفید است تا تجارت شما بتواند از پیامدهای غیر منتظره جلوگیری کند. به عنوان مثال ، بهتر است قبل از اینکه مشتری ها به دلیل سفارشات غیرقابل استفاده از شرکت خود ، ترتیبات دیگری را برای سرویس دهی به مواد موجودی ارائه دهند ، برای خدمات سفارشات موجودی کافی داشته باشید. تشخیص واژگونی موضوعی مخصوصاً محبوب برای سری زمانی اوراق بهادار مالی است. قبل از اینکه دیگران آن را بخرند و قیمت را بالا ببرند ، می توانید با خرید سهام در یک شرکت ، با خرید سهام در یک شرکت ، از امنیت بیشتری برخوردار شوید. به همین ترتیب ، می توانید با فروش آن در مراحل اولیه کاهش قیمت ، ضرر را از قیمت امنیت به حداقل برسانید.
شاخص های مختلفی برای درخشش نور در معکوس های سری زمانی وجود دارد. یکی از شاخص هایی که در آزمون زمان ایستاده است ، شاخص قدرت نسبی (RSI) است. این شاخص در ابتدا در سال 1978 توسط J. Welles Wilder در کتابی با عنوان "مفاهیم جدید در سیستم های تجارت فنی" پیشنهاد شد. نویسندگان بی شماری در مورد نحوه محاسبه و یا استفاده از RSI (اینجا ، اینجا ، اینجا و اینجا) محتوا را ارائه دادند. این جریان مداوم محتوا در مورد RSI در طی ده ها سال است که نشان می دهد ارزش آن برای تشخیص روند برگشت روند است.
مقاله قبلی mssqltips.com از چند سال پیش نحوه محاسبه شاخص را با اسکریپت T-SQL و همچنین نشان دادن مورد استفاده برای RSI نشان داد. این نکته برای توصیف جزئیات یک الگوریتم برای محاسبه مقادیر RSI ، موضوع را مجدداً مورد بررسی قرار می دهد. سپس توضیحات به کد T-SQL مرتبط است تا بتوانید به وضوح درک کنید که چگونه بلوک های کد های مختلف به عناصر موجود در الگوریتم محاسباتی RSI پیوند می خورند. کد T-SQL قبلی برای محاسبات RSI بهبود یافته است تا دقت بیشتری داشته باشد و در اسکان نمادهای مختلف تیک و محدوده تاریخ متفاوت انعطاف پذیر تر باشد. فراتر از این اصلاحات ، این نکته نحوه محاسبه مقادیر RSI برای سری زمانی از منبع داده تاریخی Stooq.com را نشان می دهد ، که استفاده از سرور SQL رایگان و آسان است.
الگوریتم محاسباتی RSI
RSI نوسان ساز است. یعنی دامنه مقادیر آن از مقدار بالا 100 تا مقدار کم 0. افزایش می یابد. مقادیر RSI به نسبت افزایش درصد افزایش درصد به میانگین از دست دادن درصد در یک مجموعه از دوره ها در یک بازه زمانی بستگی دارد. مقدار بازه زمانی پیش فرض 14 روز معاملاتی به طور گسترده ای استفاده می شود ، اما برخی از تحلیلگران بازه های زمانی طولانی تر یا کوتاه تر را ترجیح می دهند. سایر تحلیلگران RSI را با بازه های زمانی متعدد اعمال می کنند تا تجزیه و تحلیل آنها از معکوس ها در سری زمانی را تسهیل کنند. این نکته بر نحوه محاسبه RSI با مقدار پیش فرض آن 14 دوره متمرکز است. نکته همچنین بر محاسبه و تأیید مقادیر RSI برای سه اوراق بهادار متمرکز است.
RSI بر اساس تغییر در برخی از ارزش معیار ، مانند قیمت های نزدیک ، از یک دوره به دوره دیگر در بازه زمانی خود محاسبه می شود. وقتی قیمت از یک دوره به دوره دیگر افزایش می یابد ، این یک سود است. وقتی قیمت از یک دوره به دوره دیگر کاهش می یابد ، این یک ضرر است. ضررها به عنوان مقادیر مثبت نشان داده می شوند ، بنابراین می توان سود و زیان را با یکدیگر مقایسه کرد. دو روش مختلف برای محاسبه میانگین سود و میانگین ضرر استفاده می شود.
- میانگین حسابی ساده اولین روش است. این روش برای محاسبه میانگین درصد افزایش درصد و میانگین از دست دادن درصد در دوره های اولیه در اولین نمونه بازه زمانی اعمال می شود. با مقدار پیش فرض 14 دوره برای یک بازه زمانی ، RSI برای دوره پانزدهم به طور غیرمستقیم به نسبت افزایش متوسط به میانگین ضرر در چهارده دوره اول بستگی دارد. قبل از دوره پانزدهم ، هیچ مقدار RSI وجود ندارد.
- برای تمام دوره های زمانی بعدی ، میانگین افزایش و میانگین از دست دادن به عنوان میانگین وزنی افزایش یا از دست دادن درصد دوره قبل و افزایش یا از دست دادن درصد دوره فعلی محاسبه می شود. هنگام استفاده از یک بازه زمانی 14 دوره ، عبارات برای افزایش متوسط و میانگین ضرر در دوره های بعدی به شرح زیر است.
میانگین افزایش = ((میانگین افزایش دوره قبلی) x 13) + (افزایش دوره فعلی)))/14 ضر
دو مرحله بعدی محاسبه RS و RSI است. RSI به Rs بستگی دارد و RS به عنوان نسبت متوسط افزایش به میانگین ضرر برای دوره فعلی محاسبه می شود. این ارزیابی می کند که چگونه دستاوردها نسبت به ضرر و زیان در بازه زمانی دوره های پایان یافته در دوره فعلی انجام می شود. بنابراین ، بیان Rs در دوره فعلی است
Rs = (متوسط افزایش در دوره فعلی)/(میانگین ضرر در دوره فعلی)
اگر میانگین ضرر برابر با 0 باشد زیرا تمام دوره های قبلی به دست آمده است ، بیان RS قبلی به دلیل یک تقسیم کننده 0 محاسبه نمی شود. در چنین شرایطی ، به RS باید مقدار 0 اختصاص داده شود.
RSI با عبارت زیر محاسبه می شود. این عبارت است که باعث می شود RSI بین 0 تا 100 متغیر باشد.
RSI = 100 - (100/(1 + RS))
در عمل ، RSI به ندرت به مقادیر شدید نظری خود از 0 و 100 می رسد. اگر RS برابر 0 باشد زیرا تمام دوره های موجود در بازه زمانی دارای 0 ضرر هستند ، پس RSI برابر با 0 است. افزایش متوسط ، RSI نسبت به حد نظری 100 افزایش می یابد.
دو مورد RSI استفاده می کند
از آنجا که مقادیر RSI جهت نزدیک شدن به یک مقدار بسیار بالا به نزدیک شدن به یک مقدار بسیار کم ، جهت را تغییر می دهد ، RSI نشان دهنده وارونگی از افزایش متوسط بالا به سمت نزدیک شدن به یک افزایش متوسط درصد است. در مقابل ، کاهش مقادیر RSI به سمت یک ارزش بسیار پایین ، که گاهی اوقات به قیمت بیش از حد گفته می شود ، و در جهت مقادیر RSI بسیار بالا ، که گاهی اوقات قیمت های بیش از حد نامیده می شود ، معکوس را از پایین یا کاهش قیمت ها به سمت افزایش قیمت ها نشان می دهد.
مقادیر RSI مرکزی در حدود 50 نیز گاهی اوقات در تجزیه و تحلیل معکوس استفاده می شود.
- هنگامی که RSI در ابتدا از قیمت های بیش از حد به سمت خط مرکزی بالا می رود ، اما پس از آن نتوانسته است ارزش خط مرکزی یا حتی یک ارزش بین ارزش خط مرکزی و یک ارزش RSI Oversold را سوراخ کند ، پس از آن می توان به یک معامله گر هشدار داد که امنیت را خریداری نکند زیرا ادامه سود نیستاحتمال دارد.
- برعکس ، هنگامی که RSI از سطح بیش از حد به سمت خط میانی سقوط می کند ، اما سپس در جهت سطح RSI Overbought معکوس می شود ، یک معامله گر می تواند امنیت را حفظ کند تا بتواند سود بیشتری از تجارت دریافت کند.
مجموعه داده های نمونه برای این نکته
مجموعه داده های نمونه برای این نکته شامل داده های سری زمانی انتخاب شده برای سه نماد تیک از جدول Stooq_prices در پایگاه داده Datascience است. سه پرونده CSV با داده های سری زمانی که مقادیر RSI برای آن محاسبه می شوند ، در بارگیری در این نکته درج شده اند. stooq.com یک پایگاه داده تاریخی رایگان برای قیمت سهام دارد. نکته قبلی متخصصان سرور SQL را با این منبع داده معرفی می کند.
پرس و جو در زیر به دنبال مجموعه نتایج آن ، سه نماد تیک را انتخاب می کند که مقادیر RSI در این نکته محاسبه می شوند.
- نمادهای تیک که در نوک ارجاع شده است ، نماد مجزا را از [Datascience] انتخاب کنید.

پرس و جو بعدی و نتایج آن ، پنج رکورد سری اول سری برای تیک AAPL را نشان می دهد که در این نکته گنجانده شده است.
- نمایش 5 ردیف سری زمانی اولیه برای AAPL 5 نماد برتر ، تاریخ ، [نزدیک] را از [Datascience] انتخاب کنید.

پرس و جو و تنظیم نتایج زیر پنج رکورد آخر را برای تیک GOOGL که در این نکته گنجانده شده است ، نشان می دهد.
- نمایش جدیدترین 5 ردیف سری زمانی برای جدول قطره Googl اگر وجود دارد #MOMM_REENT_FROM_GOOGL 5 نماد برتر ، تاریخ ، [نزدیک] را به #MOMM_REENT_FROM_GOOGL از [DATASCIENCE] انتخاب کنید. [DBO]. نماد ، DATE DESC * از #MOME_REENT_FROM_GOOGL سفارش را تا تاریخ انتخاب کنید

پرس و جو زیر نتیجه ای را با 82 ردیف برای 82 تاریخ معاملات از 2021-01-01 تا 2021-04-30 ایجاد می کند. دو گزیده زیر از نتایج مجموعه به ترتیب ، ده تاریخ اول و آخرین تاریخ از نتایج تعیین شده را نشان می دهد. توجه کنید که start_date اول ژانویه 2021 را به عنوان تاریخ شروع و 30 آوریل 2021 به عنوان تاریخ پایان مشخص می کند.
-- display time series rows for MSFT -- from 2021-01-01 through 2021-06-3011 declare @symbol varchar(5) = 'MSFT' ,@start_date date = '2021-01-01' ,@end_date date = '2021-04-30' select symbol, date, [close] from [DataScience].[dbo].[stooq_prices] where symbol = @symbol and date>= start_date و تاریخ
در اینجا گزیده ای با ده ردیف اول از نتایج تعیین شده برای پرس و جو قبلی ارائه شده است. توجه کنید که اولین تاریخ معاملات تا 4 ژانویه 2021 نیست. زیرا جمعه اول ژانویه 2021 تعطیلات بورس است و 2 و 3 ژانویه روزهای آخر هفته است که در طی آن بازار سهام بسته می شود ، اولین تاریخ معاملات تا 4 ژانویه نیست ،2021. 9 و 10 ژانویه تاریخ آخر هفته است. بنابراین ، این تاریخ ها نیز از سری زمانی گم شده اند.

در اینجا گزیده ای با ده ردیف آخر از نتایج تعیین شده برای پرس و جو قبلی ارائه شده است. شماره ردیف 73 تا 82 است. آخرین شماره ردیف 82 است زیرا 82 تاریخ معاملات در محدوده تاریخ برای این نکته وجود دارد. تاریخ تقویم 24 آوریل ، 2021 و 25 آوریل 2021 روزهای آخر هفته است که در آن بازار سهام ایالات متحده بسته شده است. بنابراین ، این دو تاریخ آخر هفته در سری زمانی ظاهر نمی شوند.

در اینجا سه نمایش داده شده دیگر وجود دارد که تعداد تاریخ معاملات را در این نکته برای هر یک از سه نماد تیک در نوک نشان می دهد. این نمایش داده ها سه متغیر محلی (symbol ، start_date و end_date) را از بالای پرس و جو قبلی ارجاع می دهند.
-- display count of MSFT time series dates in date range set @symbol = 'MSFT' select count(date) [count of MSFT dates in date range] from [DataScience].[dbo].[stooq_prices] where symbol = @symbol and date>= start_date و date = start_date و date = start_date و تاریخ
در اینجا نتایج از سه جمله انتخاب شده در گزیده کد قبلی تنظیم شده است. این پرس و جو تأیید می کند که هر نماد تیک در مجموعه داده برای این نکته دارای داده هایی برای 82 تاریخ معاملاتی است.

اسکریپت T-SQL برای محاسبه مقادیر RSI بر اساس یک سری زمانی از 82 ردیف
برای محاسبه مقادیر RSI دو بخش اصلی به کد T-SQL وجود دارد. قسمت اول یک جدول دما ایجاد می کند و مقادیر ستون انتخاب شده را در جدول 82 ردیف جمع می کند. بخش دوم بر محاسبه مقادیر ستون RSI برای جدول TEMP که در قسمت اول آغاز شده است ، متمرکز شده است. علاوه بر این ، بخش دوم همچنین ستون های دیگر را انتخاب می کند ، مانند متوسط افزایش و از دست دادن متوسط ، که برای محاسبه مقادیر RSI لازم است.
اولیه سازی یک جدول دما با مقادیر سری زمانی برای محاسبه مقادیر RSI
اسکریپت برای قسمت اول در بخش کد ذکر شده در زیر ظاهر می شود. یک بیانیه استفاده برای Datascience فیلمنامه را شروع می کند. بیانیه استفاده با بیانیه اعلامیه برای سه متغیر محلی به نام Symbol ، start_date و end_date دنبال می شود. با تغییر مقادیر اختصاص داده شده به متغیرهای محلی ، می توانید نماد تیکت و همچنین تاریخ شروع و پایان را که مقادیر RSI محاسبه می شود ، دوباره مشخص کنید.
گزیده فیلمنامه شامل یک پرس و جو بیرونی و پرس و جو داخلی است. پرس و جو داخلی داده های سری زمانی را برای پرس و جو بیرونی می کشد. پرس و جو بیرونی با یک بند دما به نام #for_all_avg_gain_loss با یک بند وارد و جمع می شود.
کوئری داخلی با نام for_14_row_avg_gain_loss داده ها را از جدولی به نام stooq_prices در پایگاه داده DataScience می کشد. جدول stooq_prices در بخش قبل جستجو شده است تا شما را با برخی از انواع داده های موجود در آن آشنا کنید. ستون های استخراج شده با پرس و جو داخلی شامل نماد، تاریخ و بسته می شود. علاوه بر این، چندین فیلد محاسبه شده در پرس و جوی فرعی پر شده و در پرس و جو بیرونی و همچنین برخی از کدهای انتهایی T-SQL اصلاح می شوند.
- فیلد row_number ارجاع ردیف ها بر اساس تاریخ را آسان می کند. ترتیب ردیف هنگام محاسبه مقادیر RSI اهمیت دارد.
- فیلدهای تغییر، سود و زیان به طور مستقیم یا غیرمستقیم از میدان بسته مشتق می شوند. فیلد تغییر مقدار بسته شدن ردیف فعلی منهای مقدار بسته ردیف قبلی است. این تعریف اجازه می دهد تا مقدار فیلد تغییر مثبت، منفی، صفر یا تهی باشد.
- فیلد تغییر زمانی مثبت است که مقدار بسته در ردیف فعلی بیشتر از مقدار بسته در ردیف قبل باشد.
- زمانی که بسته در ردیف فعلی کمتر از مقدار بسته در ردیف قبل باشد، فیلد تغییر منفی است.
- هنگامی که مقادیر نزدیک در ردیف های فعلی و قبل با یکدیگر برابر باشند، فیلد تغییر برابر با صفر است.
- فیلد تغییر برای سطر اول تهی است زیرا ردیف قبلی برای سطر اول وجود ندارد. کد موجود در اسکریپت زیر مقادیر null را با یک تابع isnull() به 0 تبدیل می کند.
- مقدار آن به ستون بهره نسبت داده می شود
- و 0 به ستون ضرر اختصاص داده می شود
- مقدار تابع مطلق آن به ستون ضرر اختصاص داده می شود
- و 0 به ستون بهره اختصاص داده می شود
- مقادیر تابع میانگین حسابی به ستون های avg_gain و avg_loss در ردیف چهاردهم جدول temp اختصاص داده می شود.
- برای سایر ردیف های جدول temp، مقادیر null به ستون های avg_gain و avg_loss اختصاص داده می شوند.
پرس و جو بیرونی مقادیر میانگین سود و ضرر متوسط را در چهارده ردیف اول جدول #برای_همه_متوسط_درآمد_زیان محاسبه می کند. کوئری بیرونی همچنین دو ستون به نام های «قدرت نسبی (rs)» و rsi را برای جدول #برای_همه_متوسط_درآمد_از دست دادن مشخص می کند. این ستون ها برای ذخیره مقادیر ستون RS و RSI محاسبه شده در قسمت دوم کد T-SQL هستند. در این مرحله از فرآیند، مقادیر برای این دو ستون مشخص می شود که حاوی مقادیر null باشد.
پس از جمله انتخاب اولیه با نمایش داده های داخلی و بیرونی ، یک جفت بیانیه به روزرسانی مقادیر AVG_GAIN و AVG_LOSS را از ردیف چهاردهم به ردیف پانزدهم منتقل می کند و مقادیر AVG_GAIN و AVG_LOSS را از ردیف چهاردهم پاک می کند. این حرکت دو مقدار ستون از چهاردهم به ردیف پانزدهم ضروری است زیرا میانگین چهارده ردیف اول در ستون های افزایش و از دست دادن با عملکرد پنجره SQL Server AVG محاسبه می شود. بند ردیف قبلی و فعلی عملکرد ، میانگین افزایش یا از دست دادن را محاسبه می کند و میانگین را در ردیف فعلی ذخیره می کند (ردیف 14). با این حال ، الگوریتم محاسباتی RSI برای اولین بار مقادیر افزایش و از دست دادن ستون در ردیف زیر (ردیف 15 با بازه زمانی پیش فرض از 14 دوره) ذخیره می شود.
جمله نهایی در اسکریپت زیر یک عبارت منتخب است که محتویات جدول #FOR_ALL_AVG_GAIN_LOSS را نشان می دهد.
از DataScience Go استفاده کنید-می توانید با استفاده از symbol ، start_date ، و end_date-برای تغییر داده های کشیده شده از یک پایگاه داده از سری زمانی delareSymbol varchar (5) = 'googl' ، @start_date date = '2021-01- تغییر دهید. 01 '،@end_date date =' 2021-04-30 '-ایجاد #for_all_avg_gain_loss-ردیف جمعیت 14 برای avg_gain و avg_loss-سپس AVG_GAIN و AVG_LOSS را حرکت دهید تا 15 جدول را ردیف کنید اگر #for_all_avg_gain_loss-برای avg_gain و avg_lossبرای ردیف 15 - و جدول پایه برای به روزرسانی SELECT ROW_NUMBER () بیش از (سفارش طبق تاریخ) Row_number ، نماد ، [تاریخ] ، [نزدیک] ، دور (isnull ([Close] - Lag ([Close] ، 1) Over (سفارش طبق تاریخ) ، 0) ، 5) تغییر ، دور (isnull (سود ، 0) ، 5) افزایش ، دور (isnull (از دست دادن) ، 0) ، 5) ضرر ، دور (موردی که row_number 0 سپس [نزدیک است]-(تاخیر ([نزدیک]) بیش از (سفارش طبق تاریخ)) وقتی ([[نزدیک]-(تاخیر ([نزدیک]) بیش از (سفارش طبق تاریخ))) = 0 و سپس 0 افزایش پایان ، مورد ([[نزدیک]-(تاخیر ([نزدیک]) بیش از (سفارش طبق تاریخ)))<0 then [close]-(lag([close]) over(order by date)) when ([close]-(lag([close]) over(order by date))) = 0 then 0 end loss from dbo.stooq_prices where symbol = @symbol and date>= start_date و تاریخ
در اینجا دو گزیده از نتایج تعیین شده برای عبارت SELECT در انتهای اسکریپت قبلی آورده شده است.
- اولین گزیده برای پانزده ردیف اول است.
- مقادیر نماد ، تاریخ و نزدیک ستون از stooq_prices استخراج می شود.
- مقادیر ستون row_number از یک تابع row_number () مشتق شده است.
- مقادیر ستون تغییر ، افزایش و از دست دادن بر اساس عبارات مربوط به نمایش داده های داخلی و بیرونی برای مقادیر نزدیک ستون است.
- مقادیر ستون AVG_GAIN و AVG_LOSS برای ردیف پانزدهم به ترتیب بر اساس میانگین حسابی مقادیر ستون افزایش و از دست دادن در چهارده ردیف اول جدول #for_all_avg_gain_loss است. این مقادیر از طریق یک عملکرد پنجره SQL Server AVG و چند بیانیه به روزرسانی که مقادیر محاسبه شده را از چهارده ردیف تا پانزده ردیف کپی می کنند ، مشتق می شوند.
- آخرین ردیف دارای یک مقدار row_number 82 است زیرا 82 ردیف داده منبع در هر سری زمانی در این نکته وجود دارد. هر نماد تیک با یک سری زمانی مشخص مطابقت دارد.
- ستون های AVG_GAIN و AVG_LOSS در این پنج ردیف آخر دارای مقادیر تهی هستند زیرا به عباراتی نیاز دارند که در قسمت دوم کد T-SQL برای مقادیر RSI اجرا شده اند.
- از نظر انتقادی ، ستونهای "قدرت نسبی (RS)" و RSI نیز در این گزیده و مورد قبلی مقادیر تهی دارند. کد محاسبه این مقادیر ستون در بخش بعدی ارائه و مورد بحث قرار می گیرد.


محاسبات RS و RSI و همچنین AVG_GAIN و AVG_LOSS برای ردیف های بعد از ردیف 15 در #FOR_ALL_AVG_GAIN_LOSS
پس از ردیف 15th ، مقادیر ستون AVG_GAIN و AVG_LOSS به جای میانگین حسابی 14 ردیف قبلی به میانگین وزنی دو ردیف بستگی دارد. به عنوان مثال ، مقدار ستون AVG_LOSS برای ردیف شانزدهم به میانگین وزنی مقدار ستون AVG_LOSS برای ردیف 15th و مقدار ستون از دست دادن برای ردیف 16 بستگی دارد. از آنجا که مقادیر ستون RS به مقادیر AVG_GAIN و AVG_LOSS از ردیف های جریان و مقادیر قبلی و مقادیر ستون RSI بستگی دارد ، به مقادیر ستون RS بستگی دارد ، هر سطر بعد از ردیف 15 به مقادیر ستون از دو ردیف بستگی دارد. به همین دلایل ، لازم است مقادیر ستون RS و RSI را در یک حلقه محاسبه کنید که در آن هر یک از مقادیر حلقه از دو ردیف عبور می کند.
اسکریپت زیر T-SQL را برای اجرای این نوع وابستگی به دو ردیف برای مقادیر ستون AVG_GAIN و AVG_LOSS نشان می دهد. این فیلمنامه برای جزئیات بیشتر به شدت اظهار نظر می شود تا این تفسیر کد این نکته فقط بر روی موضوعات مهم متمرکز شود.
- اسکریپت با دنباله ای از اعلامیه های متغیر محلی برای کمک به محاسبه مقادیر ستون AVG_GAIN ، AVG_LOSS ، RS و RSI شروع می شود. علاوه بر این ، متغیر محلی Row_Number به 15. تنظیم می شود. Row_number متغیر محلی در مدیریت عبور از یک حلقه مدتی کمک می کند تا دسترسی به جفت های پی در پی ردیف ها ، مانند (15 و 16) ، (16 و 17) و ((16 و 17) را کنترل کند. 17 و 18).
- پس از اعلان متغیرها، یک حلقه while از متغیر محلی @row_number برای کنترل دسترسی به جفت ردیف های متوالی در جدول temp #for_all_avg_gain_loss استفاده می کند. اولین جفت یا سطرهایی که به آنها دسترسی دارید 15 و 16 است و آخرین جفت سطرهایی که به آنها دسترسی دارید 81 و 82 است. به یاد داشته باشید که آخرین ردیف داده در این نمایش محاسباتی RSI ردیف 82 است.
- در حلقه while، ردیف قبلی به عضو اول هر جفت و ردیف فعلی به عضو دوم هر جفت اشاره دارد.
- بنابراین، در اولین عبور از حلقه، ردیف قبلی برای ردیف 15 و ردیف فعلی برای ردیف 16 است.
- در گذر نهایی از حلقه، ردیف قبلی برای ردیف 81 و ردیف فعلی برای ردیف 82 است.
-- declare local variables for Relative Strength -- and Relative Strength Index (rsi) computation declare @date_cnt int = (select count(date) from #for_all_avg_gain_loss) ,@row_number int = 15 ,@gain_prior money ,@loss_prior money ,@avg_gain_prior money ,@avg_loss_prior money ,@gain_current money ,@loss_current money ,@avg_gain_current money ,@avg_loss_current money ,@rs_prior real ,@rsi_prior real ,@rs_current real ,@rsi_current real --------------------------------------------------------------------------- -- start looping through rows after 14th row until last row -- process rows iteratively two at a time while @row_number>14 و @row_number = 15 سفارش بر اساس تاریخ
در اینجا دو گزیده از نتایج تعیین شده برای عبارت SELECT در انتهای اسکریپت قبلی آورده شده است.
- اولین گزیده مجموعه نتایج، مقادیر RS و RSI را به همراه سایر مقادیر ستونی که به طور مستقیم یا غیرمستقیم به مقادیر RS و RSI کمک می کنند، نشان می دهد.
- این نتایج برای سطرهایی با مقادیر row_number از 15 تا 29 است.
- به یاد داشته باشید که الگوریتم مورد استفاده برای محاسبه مقادیر RSI تا ردیف پانزدهم نتایجی ایجاد نمی کند.
- همچنین می توانید ردیفی را با مقدار row_number 15 در این بخش با ردیفی با همان مقدار row_number از اولین نتایج تنظیم شده در زیربخش قبلی مقایسه کنید. همانطور که می بینید، مقادیر در هر دو گزیده مجموعه نتایج به استثنای ستون های RS و RSI یکسان هستند. کد زیربخش قبلی مقادیر این دو ستون را محاسبه نکرده است.
- مقدار ستون تاریخ برای آخرین ردیف در این گزیده 2021-04-30 است که برای ردیف نهایی در داده های منبع است.
- همچنین، مقادیر ستون بسته دقیقاً در این گزیده مجموعه نتایج با گزیده مجموعه نتایج دوم در زیربخش قبلی مطابقت دارند.
- البته مهمترین ویژگی گزیده مجموعه نتایج دوم زیر این است که مقادیر ستونی RS و RSI عددی دارد. گزیده مجموعه نتایج دوم از زیربخش قبلی دارای مقادیر تهی در ستون های RS و RSI است. علاوه بر این، مقادیر ستون RS و RSI با مقادیر تولید شده برای این شاخص ها توسط معادلات آنها در بخش "الگوریتم محاسباتی RSI" مطابقت دارد.


اعتبار سنجی کد T-SQL برای مقادیر RSI
این بخش نکته نهایی با هدف اعتبار سنجی کد T-SQL برای محاسبه مقادیر RSI با مقایسه نتایج حاصل از کد T-SQL از این نکته با منبع دیگری بر اساس صفحه گسترده. صفحه گسترده به همراه یک نکته تجاری فنی از Stockcharts.com منتشر شد. نتایج برای سه نماد تیک (AAPL ، GOOGL ، MSFT) برای تاریخ معاملات از 4 ژانویه 2021 تا 30 آوریل 2021 مقایسه می شود. قیمت های نزدیک از پایگاه داده stooq.com حاصل می شود. اگر هر یک از این شرایط را تغییر دهید ، می توانید نتایج متفاوتی بدست آورید.
- به عنوان مثال ، الگوریتم های تکراری برای شاخص های فنی مانند RSI و میانگین های متحرک نمایی ، نتایج مختلفی را برای مقادیر مختلف داده های تاریخی باز می گردانند.
- قیمت Stooq.com دقیقاً با قیمت سهام تاریخی یاهو برای همه نمادها برای همه تاریخ های معاملاتی مطابقت ندارد. این احتمالاً در مورد سایر منابع داده قیمت سهام تاریخی صادق است.
- سرانجام ، صفحات گسترده و پایگاه داده های SQL می توانند همان قیمت سهام زیرین را با درجات مختلف دقت و گرد نشان دهند. به همین دلیل ، بسیار نزدیک به یک مسابقه کامل به همان اندازه خوب است که می توانید برای این نوع کار انتظار داشته باشید.
دو عکس صفحه نمایش زیر 26 ردیف اول و آخر برگه Googl RSIS را در پرونده "RSI برای پرونده GOOGL و AAPL و MSFT. XLSX" نشان می دهد.
- ستون C حاوی مقادیر نزدیک قیمت برای مقادیر تاریخ در ستون B است.
- ستون های D از طریق H مقادیر را نشان می دهند ، اما سلولهای موجود در این ستون ها حاوی عباراتی برای پشتیبانی از محاسبه مقادیر شاخص RSI بر اساس بازه زمانی 14 دوره هستند.
- ستون های I و J مقادیر نشانگر RS و RSI را بر اساس ستون های قبلی در صفحه گسترده محاسبه می کنند.
- ستون K مقادیر RSI را که از T-SQL در بخش قبل محاسبه می شود ، نشان می دهد.


در اینجا تصویری از یک پراکندگی از مقادیر RSI از اسکریپت های T-SQL در بخش قبلی در مقابل مقادیر RSI از صفحه گسترده آورده شده است. شیب ، رهگیری و R 2 برای یک خط روند از طریق نقاط ScatterGram در نمودار صفحه گسترده ظاهر می شود.
- مقدار R 2 1 است. این بدان معنی است که تمام واریانس از مقادیر T-SQL RSI توسط مقادیر اکسل RSI حساب می شود. به عبارت دیگر ، خط از طریق نقاط scattergram مناسب است.
- شیب و رهگیری X برای خط روند به ترتیب 0. 9997 و 0. 0128 است. این مقادیر نشان دهنده تناسب تقریباً کامل از خط از طریق نقاط است.

در جدول زیر آمار خط روند برای هر یک از سه نماد نشان داده شده است. نکته اصلی این جدول این است که برای هر سه نماد واریانس مقادیر T-SQL RSI کاملاً توسط واریانس پرونده کتاب کار اکسل (زیرا R2 = 1) به حساب می آید. T-SQL ارائه شده در این نکته با نتایج مربوط به پرونده صفحه گسترده موجود از سایت Stockcharts.com و همچنین از بارگیری برای این نکته مطابقت دارد.

مراحل بعدی
RSI ابزاری قدرتمند برای تشخیص معکوس در داده های سری زمانی است. تحلیلگران و معامله گران فنی مختلف سهام از RSI به روش های مختلف برای تشخیص معکوس در سری های زمانی ، مانند قیمت های نزدیک روزانه برای سهام استفاده می کنند. معکوس ها با سری زمان سهام مفید هستند زیرا ممکن است به مواقعی اشاره کنند که خرید و فروش امنیت با سود سودآور باشد. می توانید در مورد چگونگی استفاده از مقادیر RSI برای تشخیص واژگونی در این نکته قبلی MSSQLTIPS.com و همچنین این منابع اینترنتی دیگر (اینجا ، اینجا ، اینجا و اینجا) اطلاعات بیشتری کسب کنید.
مراحل بعدی شما با این نکته تأیید این است که می توانید معکوس را برای هرگونه امنیت مالی در هر محدوده تاریخ که ترجیح می دهید تجزیه و تحلیل کنید ، تشخیص دهید. با بررسی چگونگی عملکرد تشخیص RSI در گذشته برای شناسایی معاملات سودآور ، می توانید کشف کنید که چگونه ممکن است در آینده کار کند.
بارگیری این نکته شامل سه پرونده است که به شما امکان می دهد نتایج تهیه شده در این نکته را تکرار کنید. بارگیری شامل:
- دو پرونده اسکریپت T-SQL-یکی برای محاسبه مقادیر RSI و دیگری برای نمایش داده ها با داده های سری زمانی خام در این نکته
- سه پرونده CSV با قیمت و تاریخ نزدیک برای هر یک از سه نماد تیک تیک
- یک فایل کتاب کار اکسل با عبارات داخلی برای محاسبه مقادیر RSI از مجموعه ای از قیمت های نزدیک در محدوده تاریخ. کتاب کار دارای سه برگه است - یکی برای هر یک از نمادهای تیک که در این نکته استفاده می شود
بهترین استراتژی معاملات...
ما را در سایت بهترین استراتژی معاملات دنبال می کنید
برچسب :
نویسنده : صدرا ذوالریاستین
بازدید : 45
تاريخ : چهارشنبه
27 ارديبهشت
1402 ساعت: 17:27