如何绘制从 Pandas 到图表的移动平均线?

How can I plot a moving average from Pandas to a chart?

给出如下所示的 table:

ts,open,high,low,close,adj_close,volume
2014-08-20T12:00:00.123456Z,198.119995,199.160004,198.080002,198.919998,180.141846,72763000
2014-08-21T12:00:00.123456Z,199.089996,199.759995,198.929993,199.500000,180.667160,67791000
2014-08-22T12:00:00.123456Z,199.339996,199.690002,198.740005,199.190002,180.386368,76107000
2014-08-25T12:00:00.123456Z,200.139999,200.589996,199.149994,200.199997,181.301010,63855000
2014-08-26T12:00:00.123456Z,200.330002,200.820007,200.279999,200.330002,181.418716,47298000
2014-08-27T12:00:00.123456Z,200.429993,200.570007,199.940002,200.250000,181.346298,47874000
2014-08-28T12:00:00.123456Z,199.589996,200.270004,199.389999,200.139999,181.246689,58330000
2014-08-29T12:00:00.123456Z,200.449997,200.729996,199.820007,200.710007,181.762909,65907000
2014-09-02T12:00:00.123456Z,200.970001,201.000000,199.860001,200.610001,181.672318,72426000

如何绘制结果的移动平均值?我正在连接到数据库并将结果加载到具有以下内容的数据框中:

import psycopg2
import pandas as pd

df_trades = pd.DataFrame()

try:
    connection = psycopg2.connect(user="admin",
                                  password="quest",
                                  host="127.0.0.1",
                                  port="8812",
                                  database="qdb")
    cursor = connection.cursor()
    df_trades = pd.read_sql_query("select * from my_table",connection)

except (Exception, psycopg2.Error) as error:
    print("Error while connecting to QuestDB", error)
finally:
    if (connection):
        cursor.close()
        connection.close()
        print("QuestDB connection closed")

print(df_trades.head())
# moving average
df_trades['10point_ma'] = df_trades['close'].rolling(window=10).mean()

在这种情况下你可以做的是 plotly:

import psycopg2
import pandas as pd
import plotly.graph_objects as go

df_trades = pd.DataFrame()

try:
    connection = psycopg2.connect(user="admin",
                                  password="quest",
                                  host="127.0.0.1",
                                  port="8812",
                                  database="qdb")
    cursor = connection.cursor()
    df_trades = pd.read_sql_query("select * from my_table",connection)

except (Exception, psycopg2.Error) as error:
    print("Error while connecting to QuestDB", error)
finally:
    if (connection):
        cursor.close()
        connection.close()
        print("QuestDB connection closed")

print(df_trades.head())

fig = go.Figure()

fig.update_layout(title_text="Table candlestick")

df_trades['10point_ma'] = df_trades['close'].rolling(window=10).mean()

fig.add_trace(go.Scatter(x=df_trades['ts'], y=df_trades['10point_ma'], 
                            name='10 point moving average',
                            mode='lines',
                            opacity=1,
                            marker=dict(color='MediumPurple',
                            size=1)))

# original table as candlestick chart
fig.add_trace(go.Candlestick(x=df_trades['ts'],
                            open=df_trades['open'],
                            high=df_trades['high'],
                            low=df_trades['low'],
                            close=df_trades['close'],
                            name='My Awesome Chart'))

fig.update(layout_xaxis_rangeslider_visible=False)
fig.show()

这将生成以下图表: