چگونه می توان سهام را فیلتر کرد که قیمت آنها به مدت 3 روز متوالی افزایش یافته است

ساخت وبلاگ

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

واردات پاندا به عنوان pd واردات numpy به عنوان np واردات matplotlib. pyplot به عنوان plt واردات pandas_datareader به عنوان وب کنه = ['amzn' ، 'aapl' ، 'nflx' ، 'xom' ، 't'] df = web. get_data_yahoo (تیک شروع کنید ، شروع کنید ، شروع کنید.= '2020-01-01' ، پایان = '2020-12-16') ['adj Close'] 

دنبال کردن Algo11111111 از 16 دسامبر 2020 ساعت 3:41 پرسید Algo11111111111111111 13 3 3 نشان های برنز آیا می توانید نیاز خود را روشن کنید؟ 16 دسامبر 2020 در 4:02

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

16 دسامبر 2020 در 4:31

2 پاسخ 2

مرتب شده توسط: تنظیم مجدد به طور پیش فرض

شما می توانید مقایسه کنید که آیا تفاوت به طور فزاینده ای با استفاده از یک رویکرد نورد تغییر می کند:

increase_table = df.rolling(3).apply(lambda x: np.all(np.diff(x)>0)). Astype ("بولی") 

خروجی برای 10 ردیف اول:

نمادها AAPL NFLX XOM T DATE 2020-01-02 2020-01-03 2020-01-06 FALSE FALSE FALSE TRUE TRUE 2020-01-07 TRUE FALSE FALSE TRUE TRUE 2020-01-08 FALSE FALSE FALSE FALSE FALSE FALSE TRUE 2020-01 2020-01-09 False true false false false 2020-01-10 false true false false false 2020-01-13 false false false false false 2020-01-14 false false false false 2020-01-15 false false false false 

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

rege_table. sum () 
نمادها AMZN 74 AAPL 59 NFLX 57 XOM 40 T 58 DTYPE: INT64 

به طوری که می دانیم که "AMZN" روزهای بیشتری با افزایش در 3 روز گذشته دارد.

توجه: برای تفسیر صحیح ، مقادیر واقعی در اینجا به ما می گوید که دو مقدار آخر و خود (مقدار فعلی ؛ کل = 3 مقادیر) در حال افزایش هستند. برای قرار دادن صحیح مقادیر واقعی برای نشان دادن اینکه سه ردیف آخر (و خود ردیف) در حال افزایش هستند ، فقط rege_table. shift () را افزایش دهید.

دنبال کردن در 16 دسامبر 2020 در 5:30 پاسخ داد Cainà Max Couto-Silva Cainà Max Couto-Silva 4،739 1 1 نشان طلا 11 11 نشان نقره 35 35 نشان برنز از پاسخ خود قدردانی کنیداین برای مشکل من کار می کند~ 19 دسامبر 2020 در 6:05

def compute_consecutive_increase(tick_data, window_size=3): # Make sure the time series is sorted by date (assuming that date is the index) tick_data = tick_data.sort_index() # Put side-by-side the comparison of current day ('t-0') with previous day ('t-1'), # then 't-1' with 't-2', etc. shifted_comparison = pd.concat(': tick_data.shift(i)> tick_data.shift(i+1)  for i in range(window_size)>، محور = 1) # فروپاشی افقی (براساس تاریخ) و برای هر ردیف که تمام مقادیر # صحیح هستند ، برگردانید ، یعنی آخرین روزهای "پنجره_سیز" دارای افزایش مثبت بازده تغییر یافته_ comparison. all (محور = 1) df. transform (compute_consepive_increase)# برای سقوط برای هر تیک ، اگر حداقل یک دنباله 3 روزه با افزایش df. transform (compute_consew_increase) وجود داشته باشد. 

دنبال کردن در 16 دسامبر 2020 در ساعت 4:41 پاسخ داد یون لسن یون لیان 317 3 3 نشان نقره 4 4 نشان برنز

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

19 دسامبر 2020 در 6:20

@algo111111 من دوباره بررسی کرده ام ، مطمئن نیستم که به چه چیزی مراجعه می کنید ، اگر 3 روز گذشته که به آن مراجعه می کنید ، 14 تا شانزدهم دسامبر است ، پس بله ، AMZN برای همه این 3 روز در حال افزایش است: 2020-111= 3116. 419922 ، 2020-14 = 3156. 969971 ، 2020-15 = 3165. 120117 ، 2020-16 = 3240. 959961 و خط df. transform (Compute_Consepive_Increase) برای 2020-12-16 بازگردد. دیدن هم؟

فارکس وکسب درامد...
ما را در سایت فارکس وکسب درامد دنبال می کنید

برچسب : نویسنده : آرش اصل زاد بازدید : <-PostHit-> تاريخ : پنجشنبه 9 شهريور 1402 ساعت: 0:07