iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 20
1
Software Development

Python 程式交易 30 天新手入門系列 第 20

Day-20 計算指標:分 K 收價均線

指標描述

到目前已經透過 pandas 的 resample 和 rolling 以取得 K 棒和均線資訊,但還有一種指標是透過每根 K 棒的收價計算均線,一樣可以透過 resample 和 rolling 計算取得。

技術整合

前情提要

  1. Day-11 資料保存:取得 2019 年每日加權指數盤後資訊並繪製線圖
  2. Day-14 券商串接:串接元大期貨行情 API(一)
  3. Day-17 計算指標:從 Tick 換算分 K 與分 MA
  4. Day-18 計算指標:從 Tick 及盤後資訊換算時 K 與周 K

計算分 K 收價均線

import pandas
import plotly.graph_objects

TXF_TICKS = pandas.read_csv('TXFJ9-20191001.csv')
TXF_TICKS = TXF_TICKS[1:]

TXF_TICKS = TXF_TICKS.rename(
    columns={
        '成交時間': 'time',
        '成交價位': 'price'
    }
)
TXF_TICKS = TXF_TICKS.filter([
    'time',
    'price'
], axis=1)
TXF_TICKS['time'] = pandas.to_datetime(TXF_TICKS['time'], format='%Y%m%d%H%M%S%f')

TXF_TICKS = TXF_TICKS.set_index('time')

# 1MINK
TXF_1MINK = TXF_TICKS['price'].resample('1MIN').ohlc()

# 1MINK 5MA
TXF_1MINK5MA = TXF_1MINK['close'].rolling('5MIN').mean()

# 1MINK 20MA
TXF_1MINK20MA = TXF_1MINK['close'].rolling('20MIN').mean()

figure = plotly.graph_objects.Figure(
    data=[
        # 1MIN K
        plotly.graph_objects.Candlestick(
            x=TXF_1MINK.index,
            open=TXF_1MINK['open'],
            high=TXF_1MINK['high'],
            low=TXF_1MINK['low'],
            close=TXF_1MINK['close'],
            name='1MINK',
        ),
        # 1MINK 5MA
        plotly.graph_objects.Scatter(
            x=TXF_1MINK5MA.index,
            y=TXF_1MINK5MA,
            name='1MINK 5MA',
            mode='lines',
            line=plotly.graph_objects.scatter.Line(
                color='#E58B6B'
            )
        ),
        # 1MINK 20MA
        plotly.graph_objects.Scatter(
            x=TXF_1MINK20MA.index,
            y=TXF_1MINK20MA,
            name='1MINK 20MA',
            mode='lines',
            line=plotly.graph_objects.scatter.Line(
                color='#6FC37B'
            )
        )
    ],
    # 設定 XY 顯示格式
    layout=plotly.graph_objects.Layout(
        xaxis=plotly.graph_objects.layout.XAxis(
            tickformat='%Y-%m-%d %H:%M'
        ),
        yaxis=plotly.graph_objects.layout.YAxis(
            tickformat='.2f'
        )
    )
)
figure.show()

分 K 均線

日 K 收價均線就是 SMA 指標,所以會算分 K 收價均線就可用同樣的邏輯取得 SMA 指標


團隊系列文:

CSScoke - 金魚都能懂的這個網頁畫面怎麼切 - 金魚都能懂了你還怕學不會嗎
Clarence - LINE bot 好好玩 30 天玩轉 LINE API
Hina Hina - 陣列大亂鬥
King Tzeng - IoT沒那麼難!新手用JavaScript入門做自己的玩具
Vita Ora - 好 Js 不學嗎 !? JavaScript 入門中的入門。
TaTaMo - 用Python開發的網頁不能放到Github上?Lektor說可以!!


上一篇
Day-19 指標判斷:交叉
下一篇
Day-21 計算指標:KD
系列文
Python 程式交易 30 天新手入門30

尚未有邦友留言

立即登入留言