Graphique K-line d'actions quantitatives en Python

Nous pouvons utiliserle module Python pyechartspour dessiner des graphiques en chandeliers japonais boursiers.

pyecharts est une bibliothèque de visualisation de données Python basée sur ECharts. Elle permet aux utilisateurs d'utiliser Python pour générer divers types de graphiques interactifs et de visualisations de données.

Afficher le contenu du module Python pyecharts :module Python pyecharts。

Dans pyecharts, vous pouvez utiliser le graphique en chandeliers (Kline) pour afficher les tendances boursières. Les graphiques en chandeliers sont principalement utilisés pour afficher des données financières, telles que le prix d'ouverture, le prix de clôture, le prix le plus haut et le prix le plus bas d'une action.

Tout d'abord, assurez-vous d'avoir installé pyecharts :

pip install pyecharts

Nous utilisons les données de Yahoo Finance pour obtenir les données boursières de l'année écoulée. Nous pouvons utiliser la bibliothèque yfinance :

pip install yfinance

Utilisation du graphique Kline

Importer les modules concernés :

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

Préparer les données :

Les données d'un graphique Kline se présentent généralement sous la forme d'un tableau bidimensionnel contenant le prix d'ouverture, le prix de clôture, le prix le plus haut et le prix le plus bas, par exemple :

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

Configurer le graphique 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 示例"),
    )
)

Ici, add_xaxis est utilisé pour définir les données de l'axe des x, add_yaxis est utilisé pour ajouter la série de données Kline, et set_global_opts est utilisé pour définir les configurations globales, y compris le titre, etc.

Générer le graphique :

kline.render("kline_chart.html")

Générer le graphique Kline dans un fichier HTML.

Exemple

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

# Préparer les données
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],
    # ... plus de données
]

# Configurer le graphique 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="Exemple Kline"),
    )
)

# Rendre le graphique
kline.render("kline_chart.html")

Explication :

  • Nous avons un jeu de données nommédata, qui contient des données financières quotidiennes, notamment le prix d'ouverture, le prix de clôture, le prix le plus élevé et le prix le plus bas.
  • Nous avons créé uneKlineinstance, utiliséeadd_xaxispour définir les données de l'axe des x (dans ce cas, les dates), et utiliséeadd_yaxispour ajouter la série de données Kline.
  • Utiliserset_global_optspour définir les options globales, telles que le zoom sur l'axe des x et l'axe des y, et le titre du graphique.
  • Enfin, nous utilisonsrenderpour rendre le graphique dans un fichier HTML.

Un fichier kline_chart.html sera généré dans le répertoire courant. Ouvrez le fichier et le graphique s'affichera comme suit :

Voici un exemple de code qui montre comment obtenir les données boursières de Kweichow Moutai et générer un graphique en chandeliers japonais :

Exemple

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

# Obtenir les données boursières de Kweichow Moutai pour les trois dernières années
symbol = '600519.SS'  # 600519.SS est le code boursier de Kweichow Moutai
start_date = '2020-01-01'
end_date = '2022-12-31'

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

# Extraire le format de données requis pour le graphique en chandeliers
kline_data = []
for index, row in stock_data.iterrows():
    kline_data.append([row['Open'], row['Close'], row['Low'], row['High']])

# Configurer le graphique 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="Exemple de graphique Kline de Kweichow Moutai"),
        datazoom_opts=[opts.DataZoomOpts()],
        toolbox_opts=opts.ToolboxOpts(
            Fonctionnalité={
                "dataZoom": {"yAxisIndex": "none"},
                "restore": {},
                "saveAsImage": {},
            }
        ),
    )
)

# Rendre le graphique
kline.render("maotai_kline_chart.html")

Un fichier maotai_kline_chart.html sera généré dans le répertoire courant. Ouvrez le fichier et le graphique s'affichera comme suit :

Tracé d'un graphique linéaire

Nous pouvons également utiliser pyecharts pour tracer un graphique linéaire simple d'une action, en prenant Moutai (600519.SH) comme exemple :

Exemple

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

# Définir le code boursier de Moutai
stock_code = "600519.SS"

# Obtenir la date actuelle
end_date = datetime.now().strftime('%Y-%m-%d')

# Calculer la date d'il y a trois ans
start_date = (datetime.now() - timedelta(days=3 * 365)).strftime('%Y-%m-%d')

# Utiliser yfinance pour obtenir les données boursières
df = yf.download(stock_code, start=start_date, end=end_date)

# Extraire les dates et les prix de clôture des données
dates = df.index.strftime('%Y-%m-%d').tolist()
closing_prices = df['Close'].tolist()

# Créer un graphique en courbes
line_chart = Line()
line_chart.add_xaxis(xaxis_data=dates)
line_chart.add_yaxis(series_name="Tendance du cours de l'action Moutai",
                     y_axis=closing_prices,
                     markline_opts=opts.MarkLineOpts(
                         data=[opts.MarkLineItem(type_="average", name="Moyenne")]
                     )
                     )
line_chart.set_global_opts(
    title_opts=opts.TitleOpts(title="Graphique de tendance du cours de l'action Moutai (trois dernières années)"),
    xaxis_opts=opts.AxisOpts(type_="category"),
    yaxis_opts=opts.AxisOpts(is_scale=True),
    datazoom_opts=[opts.DataZoomOpts(pos_bottom="-2%")],
)

# Rendre le graphique
line_chart.render("maotai_stock_trend_chart.html")

Un fichier maotai_stock_trend_chart.html sera généré dans le répertoire courant. Ouvrez le fichier et le graphique s'affichera comme suit :

Vous pouvez envisager d'ajouter des outils de graphique, tels que le zoom de données, la vue des données, etc., pour améliorer l'expérience interactive de l'utilisateur.

Voici le code optimisé, avec les fonctionnalités de zoom de données et de vue des données ajoutées :

Exemple

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

# Définir le code boursier de Moutai
stock_code = "600519.SS"

# Obtenir la date actuelle
end_date = datetime.now().strftime('%Y-%m-%d')

# Calculer la date d'il y a trois ans
start_date = (datetime.now() - timedelta(days=3 * 365)).strftime('%Y-%m-%d')

# Utiliser yfinance pour obtenir les données boursières
df = yf.download(stock_code, start=start_date, end=end_date)

# Extraire les dates et les prix de clôture des données
dates = df.index.strftime('%Y-%m-%d').tolist()
closing_prices = df['Close'].tolist()

# Créer un graphique en courbes
line_chart = Line()
line_chart.add_xaxis(xaxis_data=dates)
line_chart.add_yaxis(series_name="Tendance du cours de l'action Moutai",
                     y_axis=closing_prices,
                     markline_opts=opts.MarkLineOpts(
                         data=[opts.MarkLineItem(type_="average", name="Moyenne")]
                     )
                     )
line_chart.set_global_opts(
    title_opts=opts.TitleOpts(title="Graphique de tendance du cours de l'action Moutai (trois dernières années)"),
    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(
        Fonctionnalité={
            "dataZoom": {"yAxisIndex": "none"},
            "restore": {},
            "saveAsImage": {},
        }
    ),
)

# Rendre le graphique
line_chart.render("maotai_stock_trend_chart2.html")

Un fichier maotai_stock_trend_chart2.html sera généré dans le répertoire courant. Ouvrez le fichier et le graphique s'affichera comme suit :

Autres extensions