من می خواهم سهام عملکرد قوی را در بین یک دسته از شرکت ها با ویژگی افزایش قیمت به مدت 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