股市分析

      在〈股市分析〉中尚無留言

底下說明在 d:\server\pyweb下產生一個網頁,用來顯示歷年來的台灣股市資料。開啟的網頁為

http://localhost:7000/twstock

新增 templates

templates是置放 html 文件的地方,請先在d:\server\pyweb 下新增 templates目錄,然後 settings.py 新增如下藍色的地方

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates').replace('\\','/')],
'APP_DIRS': True,
'OPTIONS': {

新增app

每一個網頁都是一個 app,每個 app可能由好幾個  .py檔所組成,這個觀念一定要記住。請進入 d:\server\pyweb下,執行如下指令

python manager.py startapp twstock

todo

設定連結

urls.py 修改如下

import twstock.views as twstock
urlpatterns = [
path('admin/', admin.site.urls),
path("", index.html),
path("twstock/", twstock.html),
]

todo

views.py

twstock/views.py 代碼如下

todo

import plotly
from django.shortcuts import render
import mysql.connector as mysql
import plotly.graph_objects as go
import numpy as np
def html(request):
    conn=mysql.connect(host="ip"
                       ,user="account",
                       password="password",
                       database="db")
    cursor=conn.cursor()
    cursor.execute("select * from 台灣股市 order by 日期")
    rs=cursor.fetchall()
    point=[r[5] for r in rs]
    dates=[r[1] for r in rs]
    x=list(range(len(rs)))
    f=np.poly1d(np.polyfit(x, point, 10))
    reg=f(x)
    fig = go.Figure()

    fig.add_trace(
        go.Scatter(
            x=dates,
            y=point,
            mode='lines+markers',
            name='大盤指數',
            line=dict(color='royalblue', width=2)
        )
    )
    fig.add_trace(
        go.Scatter(
            x=dates,
            y=reg,
            mode='lines',
            name='日K線',
            line=dict(color='orange', width=2))
    )
    fig.update_layout(
        dragmode="pan",
        title_text="台灣股市分析",
        xaxis=go.layout.XAxis(
            rangeselector=dict(
                buttons=[
                    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),
            type="date"
        ),
        yaxis=dict(fixedrange=False)
    )
    plotly.offline.plot(fig, filename="c:/server/pyweb/templates/stock.html", auto_open=False)
    return render(request, 'stock.html')

發佈留言

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