[不确定Candlestick
,但是在熊猫中,您可以尝试类似的方法。 注意:我假设数据在每个工作日已经有一行,并且已经进行了排序。
我正在使用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()
我正在寻找的模式只是每天连续四次红蜡烛交易的第一盘。
红色蜡烛可以定义为:
close < open & close < prev.close
因此,在这种情况下,我没有交易前的第一分钟就无法使用prev.close
,因为我没有盘前/盘后交易数据。
我想知道是否有可能访问绘制的图形数据,因为如果是这样,我可以只提取第一组四个连续的red
蜡烛和它们的数据-但是,如果不行,我只能定义我的图案并用熊猫提取它,但还没走那么远。
使用plotly或pandas这样做会更容易,简单的实现会是什么样?
我正在使用Ameritrade API和pandas / plotly以分钟为单位绘制简单的股价图表,我想使用生成的图表的某些属性来识别和提取特定的......>] >
[不确定Candlestick
,但是在熊猫中,您可以尝试类似的方法。 注意:我假设数据在每个工作日已经有一行,并且已经进行了排序。
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天减少,所以不确定在这种情况下是否要两个日期
[不确定Candlestick
,但是在熊猫中,您可以尝试类似的方法。 注意:我假设数据在每个工作日已经有一行,并且已经进行了排序。