نظارت بر عملکرد سهام با R و براق آسان است

ساخت وبلاگ

چگونه می توانید یک برنامه وب ایجاد کنید که سهام مورد علاقه شما را ردیابی کند

مقایسه عملکرد بسیاری از سهام در یک تجسم واحد می تواند وقت گیر باشد. اگر می خواهید این کار را بارها و بارها انجام دهید ، بسیار خسته کننده است. با کمک R و براق ، می توانید به راحتی یک سبد سهام را ایجاد و ردیابی کنید تا ببینید که چگونه سهام های فردی با گذشت زمان عملکرد دارند - همه در یک تجسم تعاملی.

در این مقاله ، ما مرحله به مرحله روند را طی خواهیم کرد و موارد زیر را انجام خواهیم داد:

  1. قیمت های بسته شدن سهام را برای یک دوره زمانی معین جمع کنید
  2. یک رابط کاربری ساده ایجاد کنید که به کاربر اجازه می دهد داده های نمایش داده شود
  3. توابع سرور را تعریف کنید

بیایید ابتدا بسته های R را که در برنامه خود استفاده خواهیم کرد بارگذاری کنیم. شما باید آنها را با استفاده از تابع install. packages () روی سیستم خود نصب کنید.

کتابخانه (براق)کتابخانه (ShinyWidgets)کتابخانه (shinthemes)کتابخانه (طرح ریزی)کتابخانه (Tidyverse)کتابخانه (Tidyquant)

دریافت داده ها

ما ابتدا نمادهای تیک و دو شاخص سهام خود را به عنوان معیار تعریف می کنیم. سپس ، ما از عملکرد TQ_GET () از بسته Tidyquant استفاده می کنیم تا قیمت سهام (بسته شدن) را از Finance Yahoo دریافت کنیم. از آرگومان و از آرگومان ها برای مشخص کردن محدوده تاریخ مورد نظر استفاده می شود.

تیک تیکمعیارهایقیمت ها = "Stock. Prices" دریافت می کنند ،از = امروز ()-ماه (12) ،به = امروز () ،complete_cases = F) %>% انتخاب کنید (نماد ، تاریخ ، بستن)نیمکت دریافت = "Stock. Prices" ،از = امروز ()-ماه (12) ،to = today()) %>% انتخاب کنید (نماد ، تاریخ ، بستن)

رابط کاربری

کد مشخص شده رابط کاربری در عملکرد FluidPage پیچیده و در متغیری ذخیره می شود که ما آن را UI می نامیم. این در پایین مقاله نشان داده شده است که ما همه آن را در کنار هم قرار خواهیم داد.

برنامه ما سه مؤلفه اصلی UI خواهد داشت:

  1. یک پانل عنوان
  2. نوار کناری که کاربران می توانند داده ها را انتخاب و فیلتر کنند
  3. یک پانل اصلی برای تجسم داده ها

پانل عنوان

این یکی آسان است. ما موارد زیر را ساده می نویسیم:

عنوان پانل ("نمونه کارها سهام فناوری من")

نوار کناری

این بخش به کار کمی بیشتر نیاز دارد ، زیرا این جایی است که ما مشخص می کنیم کاربر چه کاری می تواند انجام دهد. در برنامه ما به برخی از مؤلفه های ورودی نیاز خواهیم داشت که به کاربر اجازه می دهد بین سهام ، محدوده زمانی مورد نظر و انتخاب معیار را انتخاب و انتخاب کند. لطفاً به پایین مقاله نگاهی بیندازید تا ببینید که چگونه اجزای جداگانه را در نوار کناری خود قرار می دهیم.

ابتدا ، یک PickerInput به کاربر اجازه می دهد تا بین سهام انتخاب کند و همه را انتخاب و یا انتخاب کند. همه با استفاده از آرگومان انتخاب شده به طور پیش فرض انتخاب می شوند. نکته مهم ، ما InputID را به منظور مراجعه به سهام انتخاب شده در منطق سرور خود مشخص می کنیم.

pickerinput (inputId = "سهام" ،برچسب = H4 ("سهام") ،گزینه ها = C ("گرانش" = تیکرها [1] ،"Sea Limited" = Tickers [2] ،"Palantir" = Tickers [3] ،"وحدت" = Tickers [4] ،"Cloudflare" = Tickers [5] ،"Snowflake" = Tickers [6] ،"MongoDB" = Tickers [7]) ،انتخاب شده = تیکرها ،گزینه ها = لیست (`Actions-Box` = درست) ،چندگانه = t)

سپس ، Radiobuttons () محدوده زمانی متفاوتی را برای انتخاب فراهم می کند ، و همچنین اینکه آیا یک شاخص معیار در تجسم وجود دارد.

# محدوده زمانیرادیوبوتون (inputId = "دوره" ،برچسب = H4 ("دوره") ،انتخاب = لیست ("1 ماه" = 1 ، "3 ماه" = 2 ، "6 ماه" = 3 ، "12 ماه" = 4 ، "YTD" = 5)انتخاب شده = 4)# معیاررادیوبوتون (inputId = "معیار" ،label = H4 ("معیار") ،انتخاب = لیست ("SP500" = 1 ، "NASDAQ100" = 2 ، "هیچ یک" = 3)انتخاب شده = 3)

صفحه اصلی

اینجاست که طرح می رود. در مورد ما ، این بسیار ساده است.

MainPanel (plotlyoutput ("طرح" ، ارتفاع = 800))

توابع سرور

بر اساس ورودی کاربر ، باید نحوه رفتار برنامه ما را مشخص کنیم. این همه در قسمت سرور کد ما انجام شده است. از آنجا که ما می خواهیم برنامه ما پاسخگو باشد و تجسم را با توجه به ورودی کاربر تغییر دهد ، ما منطق را برای فیلتر کردن داده های موجود در ObserveEvent می پیچیم.

به خاطر کوتاه بودن ، تمام منطق ورودی در بخش کد زیر گنجانده نشده است. کد کامل این قسمت در پایان ارائه شده است.

ObserveEvent (C (دوره $ $ ، سهام $ ورودی ، معیار ورودی $) ،# نمادهای سهام فیلترقیمت ٪فیلتر (نماد ٪ در ٪ $ سهام)# دوره زمانی فیلتر (مثال)if (دوره $ $ == 1) قیمت ٪فیلتر (date>= today()-months(1))># معیار فیلتر (مثال)if (ورودی $ معیار == 1) نیمکت ٪فیلتر (نماد == "^GSPC" ،date>= حداقل (قیمت $ تاریخ))قیمت# منطق سرور بیشتری را در اینجا اضافه کنید ..>)

سرانجام ، ما می توانیم داده های خود را با ترکیب ggplot2 و plotly ترسیم کنیم. برای مقایسه بهتر سهام خود ، ما همچنین باید سطح قیمت آنها را برای فهرست بندی پایه 100 محاسبه کنیم.

چاپ $ $ چاپ (ggplotly(prices %>% # فهرست 100group_by(symbol) %>% جهش (init_close = if_else (date == min(date), close,NA_real_)) %>% جهش (value = round(100 * close / sum(init_close, na.rm=T),1)) %>% ungroup() %>% ggplot (AES (تاریخ ، مقدار ، رنگ = نماد)) +GEOM_LINE (اندازه = 1 ، آلفا = . 9) +خط #نام در زیر برای نشان دادن منطقه در زیر منحنی ها#geom_area (AES (پر = نماد) ، موقعیت = "هویت" ، آلفا = . 2) +theme_minimal (base_size = 16) +موضوع (Axis. Title = Element_Blank () ،plot. background = Element_rect (پر = "سیاه") ،panel. background = Element_rect (پر = "سیاه") ،panel. grid = Element_blank () ،Legend. Text = Element_Text (Color = "White"))) ) >)

همه اش را بگذار کنار هم

ما تقریباً هر آنچه را که برای ایجاد برنامه خود نیاز داریم ، طی کرده ایم. اکنون ، ما فقط باید قطعات را کنار هم قرار دهیم. در زیر کد کامل برای برنامه پرتفوی سهام جدید براق ما آورده شده است!

می توانید برنامه را از اینجا بررسی کنید

همانطور که می بینید ، من یک موضوع تاریک را که توسط بسته Shinthemes تهیه شده است انتخاب کرده ام.

استراتژی‌های اسکالپ...
ما را در سایت استراتژی‌های اسکالپ دنبال می کنید

برچسب : نویسنده : جعفر بدیعی بازدید : <-PostHit-> تاريخ : جمعه 20 مرداد 1402 ساعت: 14:51