Plotly 黃金分析

      在〈Plotly 黃金分析〉中尚無留言

黃金期貨

本例可列出每日價格、5 日均線及 10 日均線。

from G import G
import pandas as pd
import plotly.graph_objects as go
import numpy as np
conn, cursor=G.connect()

#cursor.execute("select * from 台銀黃金 where 日期 >='2025-01-01' order by 日期")
cursor.execute("select * from 台灣股市 where 代號 ='GC=F' and 日期 >='2025-01-01' order by 日期")
rs=cursor.fetchall()
columns=[d[0] for d in cursor.description]
df=pd.DataFrame(rs,columns=columns)
data=pd.DataFrame(df)

print(df)
ma05=5
ma10=10
deg=20
y="收盤"
fig=go.Figure()
fig.add_trace(
    go.Scatter(
        x=data["日期"],
        y=data[y],
        mode='lines',
        name='實際價格',
        line=dict(color='green', width=2)
    )
)

df["ma05"]=df[[y]].rolling(ma05).mean()
df["ma10"]=df[[y]].rolling(ma10).mean()
data=pd.DataFrame(df).dropna()

x=range(len(data))
fig.add_trace(
    go.Scatter(
        x=data["日期"],
        y=data["ma05"],
        mode='lines',
        name='5日均線',
        line=dict(color='orange', width=2)
    )
)
fig.add_trace(
    go.Scatter(
        x=data["日期"],
        y=data["ma10"],
        mode='lines',
        name='10日均線',
        line=dict(color='lightblue', width=2)
    )
)
fig.show()

黃金存摺

此代碼使用plotly列出台灣銀行黃金存摺的所有歷史價格

#!/usr/bin/python3
import datetime

import plotly
import plotly.graph_objects as go
import numpy as np
import mysql.connector as mysql


file='plotly_gold.html'
conn=mysql.connect(host="mahaljsp.ddns.net",user="thomas", password="Mahal$0507", database="cloud")
d=datetime.datetime.now()
cmd="select * from 台銀黃金 where 日期  >= '2018/01/01'order by 日期"
cursor=conn.cursor()
cursor.execute(cmd)
rows=cursor.fetchall()
x=range(len(rows))
sale=[]
buy=[]
dates=[]
for row in rows:
    dates.append(row[1])
    buy.append(row[2])
    sale.append(row[3])
f=np.poly1d(np.polyfit(x,sale,15))
reg=f(x)
fig=go.Figure()

fig.add_trace(
    go.Scatter(
        x=dates,
        y=sale,
        mode='lines',
        name='黃金賣出',
        line=dict(color='royalblue', width=2)
    )
)
fig.add_trace(
    go.Scatter(
        x=dates,
        y=buy,
        mode='lines',
        name='黃金買進',
        line=dict(color='green', width=2)
    )
)
fig.add_trace(
    go.Scatter(
        x=dates,
        y=reg,
        mode='lines',
        name='趨勢線',
        line=dict(color='orange', width=2)
    )
)
fig.update_layout(
    dragmode="pan",
    title_text="台灣黃金存摺歷史價格",
    xaxis=go.layout.XAxis(
        rangeselector=dict(
            buttons=list([
                dict(count=1,
                     label="1 month",
                     step="month",
                     stepmode="backward"),
                dict(count=6,
                     label="6 month",
                     step="month",
                     stepmode="backward"),
                dict(count=1,
                     label="1 year",
                     step="year",
                     stepmode="backward"),
                dict(count=1,
                     label="1 day",
                     step="day",
                     stepmode="todate"),
                dict(step="all")
            ])
        ),
        rangeslider=dict(
            visible=True
        ),
        #range=[datetime.datetime(d.year, 1,1),datetime.datetime(d.year, d.month, d.day)],
        type="date"
    ),
    yaxis=dict(fixedrange=False)
)
fig.show()
plotly.offline.plot(fig,filename="plotly29.html", auto_open=False)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *