تجزیه و تحلیل بازار سهام با پایتون پانداس ، Plotly و Griddb

ساخت وبلاگ

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

قیمت سهام روزانه ذخیره می شود. بنابراین ، داده های سهام روزانه می توانند بسیار بزرگ شوند. ما از GRIDDB به عنوان بانک اطلاعاتی برای ذخیره داده های خود استفاده خواهیم کرد زیرا شناخته شده است که مجموعه داده های بزرگ را به خوبی اداره می کند. GRIDDB عملکرد بالایی را در عین حال مقیاس پذیر و قابل اعتماد در همان زمان تضمین می کند. GRIDDB برای استفاده آسان است و با اکثر زبان های برنامه نویسی مدرن کار می کند. در این پست ، ما با استفاده از پایتون ، تجزیه و تحلیل قیمت سهام اساسی را اجرا خواهیم کرد و نتایج خود را تجسم می کنیم.

برپایی

تنظیم GRIDDB

راه اندازی برای مشتری Griddb Python را می توانید در این ویدیو پیدا کنید. قبل از شروع ، باید نقاط پایانی زیر را به درستی تعریف کنیم.

صادرات کتابخانه_Path =$ کتابخانه_Path:/usr/share/doc/griddb-c-client[درج مسیر به c_client] صادرات pythonpath =$ PythonPath:[وارد کردن مسیر به python_client] صادرات کتابخانه_Path =$ ld_library_path:[مسیر را به C_CLIENT/BIN وارد کنید] 

کتابخانه های پایتون

ما برای این تجزیه و تحلیل از Python 3. 6 استفاده خواهیم کرد. برای نصب کتابخانه ها از PIP استفاده خواهیم کرد.

پودرنصبPANDAS PIPنصببا طرح 

جمع آوری داده ها

GRIDDB یک رابط عالی برای دسترسی به داده ها فراهم می کند. وبلاگ مشتری GRIDDB Python در مورد پیوند دادن یک پایگاه داده GRIDDB و فشار دادن تمام داده ها به یک قاب داده Pandas به جزئیات بسیار خوبی می پردازد. ما از Finance Yahoo برای دریافت داده برای سهام Google استفاده خواهیم کرد. داده ها را می توان در: Yahoo! مالی ما داده ها را برای یک سال در goog. csv ذخیره می کنیم.

ما می توانیم این داده ها را با نمایش داده های SQL در GRIDDB وارد و بازیابی کنیم.

وارد كردنgriddb_python به عنوان griddbوارد كردنپاندا به عنوان PD# ظروف اولیه را اولیه کنید سرود= factory. get_store (میزبان =میزبانبندر = بندر ، CLUSTER_NAME = CLUSTER_NAME ، نام کاربری = UNAME ، رمز عبور = PWD) قصبه= griddb. containerinfo ("گوگل", [["تاریخ"، griddb. type. timestamp] ، ["باز کن"، griddb. type. long] ، ["بالا"، griddb. type. long] ، ["کم"، griddb. type. long] ["بستن"، griddb. type. long] ["adj. close"، griddb. type. long] ["جلد"، griddb. type. long]] ، griddb. containertype. collection ، true)حاکم= gridstore. put_container (coninfo) cont. create_index ("تاریخ"، griddb. indextype. default)داده ها= pd. read. csv ("goog. csv") #داده های ADDبرای منinدامنه (LEN (داده)):با استفاده از= cont. put (data. iloc [i ،:]) 

توجه داشته باشید که این فرآیند می تواند Automa باشد ، برای پرس و جو از Regualrly از Yahoo! Finacne نیزما می توانیم داده های GRIDDB را با استفاده از پرس و جو SQL زیر بازیابی کنیم:

query = cont. query ("انتخاب کنید * جایی که تاریخ> تناقضات(سال, اکنون(), -1)") 

تحلیل داده ها

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

وارد كردنپانداaspd googf = pd. read_csv ("goog. csv") 

این همان چیزی است که داده های سهام به نظر می رسد:

ستون ها به این صورت تعبیر می شوند:

  • تاریخ: تاریخ روز تجارت.
  • باز: اولین قیمت تجارت در تاریخ.
  • بالا: بالاترین قیمتی که سهام در تاریخ معامله می شود.
  • کم: کمترین قیمت که در آن سهام در تاریخ معامله می شود.
  • بستن: آخرین قیمت تجارت در تاریخ
  • Adj Close: این به عنوان قیمت بسته شدن پس از تقسیم تمام سود سهام تعریف شده است.
  • حجم: تعداد سهام معامله شده در تاریخ.

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

گوگ[["Close"]]. طرح() 
گوگ[["Volume"]]. طرح() 

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

در مرحله بعد ، می توانیم از نمودار OHLC برای تجسم داده ها استفاده کنیم. نمودار OLHC (باز ، بالا ، پایین و نزدیک) یک نمودار مالی است که مقادیر باز ، بالا ، کم و نزدیک را برای یک تاریخ معین توصیف می کند.

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

ما برای ترسیم این مورد از طرح ریزی استفاده خواهیم کرد.

وارد كردنplotly. graph_objectsasرفتنشکل= بروشکل(داده ها= بروOHLC(x=گوگ['تاریخ'], باز کن=گوگ['باز کن'], عالی=گوگ['عالی'], کم=گوگ['کم'], بستن=گوگ['بستن'])) شکل. show () 

ما می بینیم که در ماه مارس در سهام Google افت کرده است. علاوه بر این ، خطوط قرمز در نیمه اولیه سال برجسته تر از دومی است. به عنوان مثال این می تواند به دلیل عوامل مختلفی مانند بیماری همه گیر Covid باشد. در پست بعدی ، ما سعی خواهیم کرد که روند سهام را با داده های پخش Covid تجزیه و تحلیل کنیم.

در مرحله بعد ، ما در ماه مارس از کشویی دامنه برای بزرگنمایی استفاده می کنیم.

می بینیم که میله های عمودی طولانی تر هستند و این نشان دهنده تفاوت گسترده بین باز و بسته شدن است. این نشان می دهد که در آن زمان نوسانات زیادی در بازار وجود داشته است.

این نمودارها بسیار بصری تر از توطئه های خط معمولی هستند.

تجزیه و تحلیل روند بازار

میانگین حرکت

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

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

  • کوتاه مدت: فریم های زمانی بین 5-20 روز است و برای شناسایی روندهایی که می تواند چند روز تا چند هفته طول بکشد ، استفاده می شود.
  • واسطه: فریم های زمانی بین 20 تا 65 روز است و برای شناسایی روندهایی که می توانند چند ماه طول بکشد ، استفاده می شود.
  • طولانی: فریم های زمانی بین 65-200 روز است و برای شناسایی روندهایی که می تواند سالهای گذشته باشد استفاده می شود.

از آنجا که فقط یک سال داده داریم ، به روندهای کوتاه خواهیم پرداخت. ما میانگین های متحرک را به مدت 5 ، 20 و 50 روز محاسبه می کنیم و از آنها برای تجزیه و تحلیل روند استفاده می کنیم.

برای محاسبه میانگین متحرک در پایتون ، از عملکرد نورد استفاده می کنیم.

میانگین حرکت ساده

میانگین متحرک ساده روز n می تواند به عنوان میانگین قیمت بسته شدن برای روزهای n تعریف شود. ما دوره را یک روز تغییر می دهیم و محاسبه میانگین او را برای هر محدوده N ادامه می دهیم. در اینجا کد است:

googf ['sma5'] = googf. بستن. متحرک(5) . Mean () googf ["SMA20"] = googf. بستن. متحرک(20) . Mean () googf ["SMA50"] = googf. بستن. متحرک(50) . mean () شکل = go. figure (data = [go. ohlc (x = googf ['تاریخ'] ، باز = googf ['باز کن'] ، بالا = googf ["بالا"] ، کم = googf ['کم'] ، بستن = googf ['بستن'] ، name ="OHLC") ، go. scatter (x = googf. تاریخ، y = googf. sma5، خط = دیکته (رنگ='نارنجی'، عرض =1) ، name ="SMA5") ، go. scatter (x = googf. تاریخ، y = googf. sma20، خط = دیکته (رنگ='سبز'، عرض =1) ، name ="SMA20") ، go. scatter (x = googf. تاریخ، y = googf. sma50، خط = دیکته (رنگ='آبی'، عرض =1) ، name ="SMA50"))) fig. show () 

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

میانگین های متحرک ساده می توانند برای پاسخ به نوسانات قیمت بزرگ آهسته باشند. برای سنجش این اثر ، سرمایه گذاران از میانگین های متحرک نمایی استفاده می کنند.

میانگین متحرک نمایی

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

ما از عملکرد EWM استفاده می کنیم و میانگین حرکت نمایی را به مدت پنج روز ، 20 روز و 50 روز دریافت می کنیم. در اینجا کد است:

 googf ['ema5'] = googf. بستن. ewm(دهانه =5، تنظیم = نادرست) . mean () googf ['ema20'] = googf. بستن. ewm(دهانه =20، تنظیم = نادرست) . mean () شکل = go. figure (data = [go. ohlc (x = googf [['تاریخ'] ، باز = googf ['باز کن'] ، بالا = googf ["بالا"] ، کم = googf ['کم'] ، بستن = googf ['بستن'] ، name ="OHLC") ، go. scatter (x = googf. تاریخ، y = googf. ema5، خط = دیکته (رنگ='نارنجی'، عرض =1) ، name ="ema5") ، go. scatter (x = googf. تاریخ، y = googf. ema20، خط = دیکته (رنگ='سبز'، عرض =1) ، name ="ema20"))) fig. show () 

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

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

نتیجه

در این پست ابتدا یاد گرفتیم که چگونه می توان تجزیه و تحلیل روند بازار را با GRIDDB و پایتون انجام داد. ما یاد گرفتیم که چگونه توطئه های OHLP را ترسیم کنیم و مقداری تجزیه و تحلیل متوسط در حال حرکت انجام دهیم.

تجارت با گزینه‌‌های باینری...
ما را در سایت تجارت با گزینه‌‌های باینری دنبال می کنید

برچسب : نویسنده : حمیدرضا پگاه بازدید : 24 تاريخ : يکشنبه 22 مرداد 1402 ساعت: 11:47