Python クオンツ株式 K 線チャート

私たちは~を使用してPython pyecharts モジュール株式 K 線チャートを描画します。

pyecharts は ECharts ベースの Python データ可視化ライブラリであり、ユーザーが Python 言語を使用してさまざまな種類のインタラクティブなチャートやデータ可視化を生成できるようにします。

Python pyecharts モジュールの内容を確認:Python pyecharts モジュール。

pyecharts では、K 線チャート(Kline)を使用して株価の動きを表示できます。K 線チャートは主に金融データを表示するために使用され、株式の始値、終値、最高値、最低値などの情報を表示します。

まず、pyecharts がインストールされていることを確認してください:

pip install pyecharts

ヤフーファイナンス(Yahoo Finance)のデータを使用して約1年間の株価データを取得します。yfinance ライブラリを使用できます:

pip install yfinance

K 線チャートの使用

関連モジュールをインポート:

from pyecharts import options as opts
from pyecharts.charts import Kline

データを準備:

Kline チャートのデータは通常、始値、終値、最高値、最低値を含む2次元配列です。例:

data = [
    [2320.26, 2320.26, 2287.3, 2362.94],
    [2300, 2291.3, 2288.26, 2308.38],
    # ...
]

Kline チャートを設定:

kline = (
    Kline()
    .add_xaxis(xaxis_data=["2017-10-24", "2017-10-25", "2017-10-26", "2017-10-27"])
    .add_yaxis(series_name="Kline", y_axis=data)
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(is_scale=True),
        yaxis_opts=opts.AxisOpts(is_scale=True),
        title_opts=opts.TitleOpts(title="Kline 示例"),
    )
)

ここでは、add_xaxis を使用して x 軸のデータを設定し、add_yaxis を使用して Kline データ系列を追加し、set_global_opts はタイトルなどのグローバル設定を構成するために使用されます。

グラフをレンダリング:

kline.render("kline_chart.html")

Kline チャートを HTML ファイルにレンダリングします。

例

from pyecharts import options as opts
from pyecharts.charts import Kline

# データを準備
data = [
    [2320.26, 2320.26, 2287.3, 2362.94],
    [2300, 2291.3, 2288.26, 2308.38],
    [2295.35, 2346.5, 2295.35, 2345.92],
    [2347.22, 2358.98, 2337.35, 2363.8],
    # ... more data
]

# Kline チャートを設定
kline = (
    Kline()
    .add_xaxis(xaxis_data=["2017-10-24", "2017-10-25", "2017-10-26", "2017-10-27"])
    .add_yaxis(series_name="Kline", y_axis=data)
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(is_scale=True),
        yaxis_opts=opts.AxisOpts(is_scale=True),
        title_opts=opts.TitleOpts(title="Kline の例"),
    )
)

# グラフをレンダリング
kline.render("kline_chart.html")

説明:

  • 私たちには~という名前のdataデータセットがあり、そこには毎日の金融データ(始値、終値、最高値、最低値)が含まれています。
  • 私たちは~を作成しましたKlineインスタンスを使用してadd_xaxisx 軸データ(この場合は日付)を設定し、~を使用してadd_yaxisKline データ系列を追加します。
  • ~を使用してset_global_optsグローバルオプションを設定します。例えば、x軸とy軸のズーム、およびグラフタイトルです。
  • 最後に、私たちは~を使用してrenderグラフを HTML ファイルにレンダリングします。

現在のディレクトリに kline_chart.html ファイルが生成されます。このファイルを開くと、グラフが次のように表示されます:

以下は、貴州茅台の株価データを取得して K 線チャートを生成する方法を示すサンプルコードです:

例

import yfinance as yf
from pyecharts import options as opts
from pyecharts.charts import Kline

# 貴州茅台の過去3年間の株価データを取得
symbol = '600519.SS'  # 600519.SS は貴州茅台の株式コードです
start_date = '2020-01-01'
end_date = '2022-12-31'

stock_data = yf.download(symbol, start=start_date, end=end_date)

# K 線チャートに必要なデータ形式を抽出
kline_data = []
for index, row in stock_data.iterrows():
    kline_data.append([row['Open'], row['Close'], row['Low'], row['High']])

# Kline チャートを設定
kline = (
    Kline()
    .add_xaxis(xaxis_data=stock_data.index.strftime('%Y-%m-%d').tolist())
    .add_yaxis(series_name="Kline", y_axis=kline_data)
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(is_scale=True),
        yaxis_opts=opts.AxisOpts(is_scale=True),
        title_opts=opts.TitleOpts(title="貴州茅台 Kline チャートの例"),
        datazoom_opts=[opts.DataZoomOpts()],
        toolbox_opts=opts.ToolboxOpts(
            feature={
                "dataZoom": {"yAxisIndex": "none"},
                "restore": {},
                "saveAsImage": {},
            }
        ),
    )
)

# グラフをレンダリング
kline.render("maotai_kline_chart.html")

現在のディレクトリに maotai_kline_chart.html ファイルが生成されます。このファイルを開くと、グラフが次のように表示されます:

折れ線グラフの描画

pyecharts を使用して株式の簡単な折れ線グラフを描くこともできます。茅台(600519.SH)を例にします:

例

import yfinance as yf
from pyecharts import options as opts
from pyecharts.charts import Line
from datetime import datetime, timedelta

# 茅台の株式コードを設定
stock_code = "600519.SS"

# 現在の日付を取得
end_date = datetime.now().strftime('%Y-%m-%d')

# 3年前の日付を計算
start_date = (datetime.now() - timedelta(days=3 * 365)).strftime('%Y-%m-%d')

# yfinance を使用して株価データを取得
df = yf.download(stock_code, start=start_date, end=end_date)

# データから日付と終値を抽出
dates = df.index.strftime('%Y-%m-%d').tolist()
closing_prices = df['Close'].tolist()

# Line チャートを作成
line_chart = Line()
line_chart.add_xaxis(xaxis_data=dates)
line_chart.add_yaxis(series_name="茅台の株価推移",
                     y_axis=closing_prices,
                     markline_opts=opts.MarkLineOpts(
                         data=[opts.MarkLineItem(type_="average", name="平均値")]
                     )
                     )
line_chart.set_global_opts(
    title_opts=opts.TitleOpts(title="茅台の株価推移チャート(過去3年間)"),
    xaxis_opts=opts.AxisOpts(type_="category"),
    yaxis_opts=opts.AxisOpts(is_scale=True),
    datazoom_opts=[opts.DataZoomOpts(pos_bottom="-2%")],
)

# グラフをレンダリング
line_chart.render("maotai_stock_trend_chart.html")

現在のディレクトリに maotai_stock_trend_chart.html ファイルが生成されます。このファイルを開くと、グラフが次のように表示されます:

グラフのツールを追加することを検討できます。例えば、データズームやデータビューなどで、ユーザーのインタラクティブな体験を向上させることができます。

以下は最適化後のコードで、データズームとデータビューの機能が追加されています:

例

import yfinance as yf
from pyecharts import options as opts
from pyecharts.charts import Line
from pyecharts.commons.utils import JsCode
from datetime import datetime, timedelta

# 茅台の株式コードを設定
stock_code = "600519.SS"

# 現在の日付を取得
end_date = datetime.now().strftime('%Y-%m-%d')

# 3年前の日付を計算
start_date = (datetime.now() - timedelta(days=3 * 365)).strftime('%Y-%m-%d')

# yfinance を使用して株価データを取得
df = yf.download(stock_code, start=start_date, end=end_date)

# データから日付と終値を抽出
dates = df.index.strftime('%Y-%m-%d').tolist()
closing_prices = df['Close'].tolist()

# Line チャートを作成
line_chart = Line()
line_chart.add_xaxis(xaxis_data=dates)
line_chart.add_yaxis(series_name="茅台の株価推移",
                     y_axis=closing_prices,
                     markline_opts=opts.MarkLineOpts(
                         data=[opts.MarkLineItem(type_="average", name="平均値")]
                     )
                     )
line_chart.set_global_opts(
    title_opts=opts.TitleOpts(title="茅台の株価推移チャート(過去3年間)"),
    xaxis_opts=opts.AxisOpts(type_="category"),
    yaxis_opts=opts.AxisOpts(is_scale=True),
    datazoom_opts=[
        opts.DataZoomOpts(
            pos_bottom="-2%",
            range_start=0,
            range_end=100,
            type_="inside"
        ),
        opts.DataZoomOpts(
            pos_bottom="-2%",
            range_start=0,
            range_end=100,
            type_="slider",
        ),
    ],
    toolbox_opts=opts.ToolboxOpts(
        feature={
            "dataZoom": {"yAxisIndex": "none"},
            "restore": {},
            "saveAsImage": {},
        }
    ),
)

# グラフをレンダリング
line_chart.render("maotai_stock_trend_chart2.html")

現在のディレクトリに maotai_stock_trend_chart2.html ファイルが生成されます。このファイルを開くと、グラフが次のように表示されます:

その他の拡張