黃金期貨
本例可列出每日價格、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)
