使用散点图或大熊猫识别并提取烛台图上的OHLC模式吗?

问题描述 投票:1回答:1

我正在使用Ameritrade API和pandas / plotly以分钟为单位绘制简单的股价图表,我想使用生成的图表的某些属性来识别和提取特定的烛形图。

我在这里建立数据框并将其绘制为烛台:

frame = pd.DataFrame({'open': pd.json_normalize(df, 'candles').open,
                     'high': pd.json_normalize(df, 'candles').high,
                     'low': pd.json_normalize(df, 'candles').low,
                     'close': pd.json_normalize(df, 'candles').close,
                     'datetime': pd.DatetimeIndex(pd.to_datetime(pd.json_normalize(df, 'candles').datetime, unit='ms')).tz_localize('UTC').tz_convert('US/Eastern')})


fig = go.Figure(data=[go.Candlestick(x=frame['datetime'],
                                    open=frame['open'],
                                    high=frame['high'],
                                    low=frame['low'],
                                    close=frame['close'])])
fig.update_layout(xaxis_rangeslider_visible=False)
fig.show()

The plot

我正在寻找的模式只是每天连续四次红蜡烛交易的第一盘。

红色蜡烛可以定义为:

close < open & close < prev.close

因此,在这种情况下,我没有交易前的第一分钟就无法使用prev.close,因为我没有盘前/盘后交易数据。

我想知道是否有可能访问绘制的图形数据,因为如果是这样,我可以只提取第一组四个连续的red蜡烛和它们的数据-但是,如果不行,我只能定义我的图案并用熊猫提取它,但还没走那么远。

使用plotly或pandas这样做会更容易,简单的实现会是什么样?

我正在使用Ameritrade API和pandas / plotly以分钟为单位绘制简单的股价图表,我想使用生成的图表的某些属性来识别和提取特定的......>] >

[不确定Candlestick,但是在熊猫中,您可以尝试类似的方法。 注意:我假设数据在每个工作日已经有一行,并且已经进行了排序。

第一件事是创建一个名为true的列red,其中问题中描述的红色蜡烛的条件为True:] >
df['red'] = df['close'].lt(df['open'])&df['close'].lt(df['close'].shift())

然后您要查看它是否连续4天发生,并假设数据按升序排列(通常),那么想法是使用[::-1]反转数据框,使用rolling并使用4的窗口,sum在上方创建的红色列,并检查它等于4的位置。

df['next_4days_red'] = df[::-1].rolling(4)['red'].sum().eq(4)

然后,如果您想要连续四个红色交易日开始的那一天,请执行loc

df.loc[df['next_4days_red'], 'datetime'].tolist()

这里有一个带有虚拟变量的小例子:

df = pd.DataFrame({'close': [10,12,11,10,9,8,7,10,9,10], 
                   'datetime':pd.bdate_range('2020-04-01', periods=10 )})\
       .assign(open=lambda x: x['close']+0.5)
df['red'] = df['close'].lt(df['open'])&df['close'].lt(df['close'].shift())
df['next_4days_red'] = df[::-1].rolling(4)['red'].sum().eq(4)

print (df.loc[df['next_4days_red'], 'datetime'].tolist())
[Timestamp('2020-04-03 00:00:00'), Timestamp('2020-04-06 00:00:00')]

注意:它捕获两个连续的日期,因为它连续5天减少,所以不确定在这种情况下是否要两个日期

python-3.x pandas plotly finance candlestick-chart
1个回答
0
投票

[不确定Candlestick,但是在熊猫中,您可以尝试类似的方法。 注意:我假设数据在每个工作日已经有一行,并且已经进行了排序。

© www.soinside.com 2019 - 2024. All rights reserved.