小编cJc*_*cJc的帖子

如何计算和绘制时间序列的多个线性趋势?

将线性趋势拟合到一组数据是直接的。但是如何将多条趋势线拟合到一个时间序列中?我将上涨和下跌趋势定义为高于或低于指数移动平均线的价格。当价格高于 EMA 时,我需要适应一个积极的趋势,当趋势转为消极时,一个新的消极趋势线等等。在我的market_data['Signal']熊猫数据框中下面的代码中,我告诉我趋势是上升 +1 还是下降 -1。

我猜我需要某种循环,但我无法弄清楚逻辑......

import pandas as pd
import pandas_datareader.data as web
import datetime as dt
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import matplotlib.dates as mdates

#Colecting data
market = '^DJI'
end = dt.datetime(2016, 12, 31)
start = dt.date(end.year-10, end.month, end.day)
market_data = web.DataReader(market, 'yahoo', start, end)

#Calculating EMA and difference
market_data['ema'] = market_data['Close'].ewm(200).mean()
market_data['diff_pc'] = (market_data['Close'] / market_data['ema']) - 1

#Defining bull/bear signal
TH = 0
market_data['Signal'] = …
Run Code Online (Sandbox Code Playgroud)

python for-loop numpy time-series trend

6
推荐指数
1
解决办法
3691
查看次数

如何重新取样pandas df数据到5分钟OHLC数据

我有一个带有刻度数据的pandas df'instr_bar'如下:

time
2016-07-29 16:07:24     5.72
2016-07-29 16:07:24     5.72
2016-07-29 16:07:24     5.72
2016-07-29 16:07:58     5.72
2016-07-29 16:07:58     5.72
2016-07-29 16:09:49     5.70
2016-07-29 16:09:50     5.73
2016-07-29 16:11:14     5.73
2016-07-29 16:11:14     5.73
2016-07-29 16:14:53     5.77
2016-07-29 16:14:53     5.77
2016-07-29 16:17:27     5.75
2016-07-29 16:17:43     5.76
2016-07-29 16:17:43     5.76
Run Code Online (Sandbox Code Playgroud)

我想把它变成5分钟的OHLC.在许多情况下,索引不是唯一的.

然后我使用以下代码: instr_bar = instr_bar.resample('5Min').ohlc()

然后我得到以下df:

                     open   high    low  close
time                                           
2016-07-29 15:40:00   5.74   5.74   5.74   5.74
2016-07-29 15:45:00    NaN    NaN    NaN    NaN
2016-07-29 15:50:00   5.75   5.75   5.75   5.75
2016-07-29 15:55:00   5.75   5.75   5.72   5.72 …
Run Code Online (Sandbox Code Playgroud)

resampling dataframe python-3.x pandas

5
推荐指数
1
解决办法
4011
查看次数

如何使用groupby计算vwap(交易量加权平均价格)并申请?

我已经阅读了类似于我的问题的多个帖子,但我仍然无法弄明白.我有一个pandas df看起来如下(多天):

Out[1]: 
                     price  quantity
time                                
2016-06-08 09:00:22  32.30    1960.0
2016-06-08 09:00:22  32.30     142.0
2016-06-08 09:00:22  32.30    3857.0
2016-06-08 09:00:22  32.30    1000.0
2016-06-08 09:00:22  32.35     991.0
2016-06-08 09:00:22  32.30     447.0
...
Run Code Online (Sandbox Code Playgroud)

要计算我能做的vwap:

df['vwap'] = (np.cumsum(df.quantity * df.price) / np.cumsum(df.quantity))
Run Code Online (Sandbox Code Playgroud)

但是,我想重新开始每天(groupby),但我无法弄清楚如何使用(lambda?)函数.

df['vwap_day'] = df.groupby(df.index.date)['vwap'].apply(lambda ...
Run Code Online (Sandbox Code Playgroud)

速度至关重要.不胜感激任何帮助:)

python lambda pandas pandas-groupby

3
推荐指数
2
解决办法
5005
查看次数