ホームページ > バックエンド開発 > Python チュートリアル > Python コードを使用して複雑な財務チャートを作成するにはどうすればよいですか?

Python コードを使用して複雑な財務チャートを作成するにはどうすればよいですか?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2023-04-24 18:28:08
転載
1454 人が閲覧しました

Python コードを使用して複雑な財務チャートを作成するにはどうすればよいですか?

はじめに

金融に適用されるプログラミングとテクノロジーの急増は避けられず、成長が衰えることはないようです。応用プログラミングの最も興味深い部分の 1 つは、過去またはリアルタイムの株式データの解釈と視覚化です。

Python で一般的なデータを視覚化するには、matplotlib、seaborn などのモジュールが活躍しますが、財務データの視覚化に関しては、インタラクティブなビジュアルを提供する Plotly が最初の選択肢になります。組み込み関数。ここで、mplfinance ライブラリ matplotlib の兄弟ライブラリにすぎない縁の下の力持ちを紹介したいと思います。

matplotlib パッケージがいかに多用途で、あらゆる種類のデータを簡単にプロットできることは誰もが知っています。ローソク足のような金融チャートも matplotlib パッケージを使用して描画できますが、最初から開始する必要があります。

最近、高度な財務視覚化の作成専用の mplfinance という別のモジュールがあることを知りました。この記事では、この Python ライブラリを詳しく見て、さまざまなタイプのグラフを生成するその機能を探っていきます。

パッケージのインポート

必要なパッケージを Python 環境にインポートすることは重要な手順です。この記事では、データ フレームを処理するパンダ、API を呼び出して株価データを抽出するリクエスト、財務チャートを作成する mplfinance の 3 つのパッケージが必要です。これらのパッケージをまだインストールしていない方は、次のコードをターミナルにコピーしてください:

pip install pandas
pip install requests
pip install mplfinance
ログイン後にコピー

パッケージのインストールが完了したら、パッケージを Python 環境にインポートします。

import pandas as pd
import requests
import mplfinance as mf
ログイン後にコピー

ストック データの抽出

これで、必要なパッケージがすべてインポートされました。 12data.com[1] が提供する API エンドポイントを使用して、Amazon の過去の株価データを取得してみましょう。それまでは、12data.com に関するメモ: 12data は、あらゆる種類の市場データに対応する多数の API エンドポイントを備えた、主要な市場データ プロバイダーの 1 つです。 Twelve Data が提供する API の操作は非常に簡単で、これまでで最高のドキュメントの 1 つが提供されています。また、12data.com のアカウントを持っていることを確認してください。そうすることでのみ、API キー (API を使用してデータを抽出するための重要な要素) にアクセスできるようになります。

Python 実装

def get_historical_data(symbol, start_date):
api_key = 'YOUR API KEY'
api_url = f'https://api.twelvedata.com/time_series?symbol={symbol}&interval=1day&outputsize=5000&apikey={api_key}'
raw_df = requests. get(api_url).json()
df = pd.DataFrame(raw_df['values']).iloc[::-1].set_index('datetime').astype(float)
df = df[df.index >= start_date]
df.index = pd.to_datetime(df.index)
return df
amzn = get_historical_data('AMZN', '2021-01-01')
amzn.tail()
ログイン後にコピー

出力:

Python コードを使用して複雑な財務チャートを作成するにはどうすればよいですか?

コードの説明

最初に行うことは、株式銘柄 ('symbol') と履歴データの開始日 ('start_date') をパラメーターとして受け取る 'get_historyal_data' という関数を定義することです。

関数内で API キーと URL を定義し、それぞれの変数に格納します。

次に、「get」関数を使用して履歴データを JSON 形式で抽出し、「raw_df」変数に保存します。生の JSON データのクリーニングとフォーマットを行った後、それを空の Pandas DataFrame として返します。

最後に、作成した関数を呼び出して、2021 年の初めから始まる Amazon の履歴データを取得し、「amzn」変数に保存します。

OHLC チャート

OHLC チャートは、各期間の始値、高値、安値、終値を示す棒グラフです。

OHLC チャートは、一定期間にわたる 4 つの主要なデータ ポイントを表示するため便利であり、多くのトレーダーは終値が最も重要であると考えています。また、勢いの増加または減少を示すのにも役立ちます。オープニングとクロージングが離れている場合はパフォーマンスが強く、オープニングとクロージングが近い場合はパフォーマンスが優柔不断または弱いと言えます。

高値と安値は期間の全価格帯を示し、ボラティリティの評価に役立ちます1[2]。 mplfinance を使用して OHLC チャートを作成するには、1 行のコードを実行するだけです。

mf.plot(amzn.iloc[:-50,:])
ログイン後にコピー

上記のコードでは、最初にプロット関数を呼び出し、その中で Amazon OHLC を抽出します。データは最後の 50 件の測定値にスライスされます。これの目的は、要素が見えるようにチャートを明確にすることだけです。上記の 1 行のコードにより、次のような出力が生成されます。

Python コードを使用して複雑な財務チャートを作成するにはどうすればよいですか?

OHLC チャート

ローソク足チャート

トレーダーはローソク足チャートを使用します。過去に基づいてパターンが起こり得る価格変動を決定します。ローソク足は、トレーダーが指定した期間を通じて 4 つの価格ポイント (始値、終値、高値、安値) を表示するため、取引に役立ちます。

このタイプのチャートの最も興味深い点は、トレーダーが市場自体の主な要因であるセンチメントを読み取るのにも役立つことです2[3]。 mplfinance を使用してローソク足チャートを生成するには、別のパラメーターを追加するだけです。関数の型パラメーター プロットには、ローソク足が記述されています。コードは次のようになります:

mf.plot(amzn.iloc[:-50,:], type = 'candle')
ログイン後にコピー

上記のコードは次のようなローソク足チャートを生成します:

Python コードを使用して複雑な財務チャートを作成するにはどうすればよいですか?

烛台图

砖形图

砖形图( Renko chart)是一种使用价格变动构建的图表,而不是像大多数图表那样同时使用价格和标准化时间间隔。该图表看起来像一系列砖块,当价格移动指定的价格金额时会创建一个新砖块,并且每个块都与前一个砖块成 45 度角(向上或向下)。Renko 图表的主要用途是过滤掉噪音并帮助交易者更清楚地看到趋势,因为所有小于框大小的运动都被过滤掉 3[4] 。

据我所知,mplfinance 是唯一提供 Renko 图表的 Python 库,也是我们接下来要看到的,这就是为什么这个包在金融可视化方面具有强大优势的原因。现在要创建一个 Renko,我们只需要在函数renko的type参数中指定plot。Renko 图表的代码如下所示:

mf.plot(amzn, type = 'renko')
ログイン後にコピー

我们还可以向plot函数添加一个额外的参数,该参数是根据renko_params我们的需要和其他类似类型修改砖块大小的参数,但我更喜欢默认的。上面的代码生成了一个看起来像这样的砖形图:

Python コードを使用して複雑な財務チャートを作成するにはどうすればよいですか?

砖形图

点数图

点数图,简称 P&F 图,类似于 Renko 图,它在不考虑时间流逝的情况下绘制资产的价格走势。与其他一些类型的图表(例如烛台)相反,烛台标志着资产在设定的时间段内的变动程度,而 P&F 图表使用由堆叠的 X 或 O 组成的列,每个列代表一定数量的价格变动。X 代表价格上涨,而 O 代表价格下跌。当价格反转反转量 4[5] 时,会在 O 之后形成新的 X 列或在 X 之后形成新的 O 列。

支持点数图的函数在其他地方找不到,只能在 mplfinance 库中找到,而且它还使我们可以通过仅pnf在函数的type参数中指定来创建图表的过程更容易plot。代码如下所示:

mf.plot(amzn, type = 'pnf')
ログイン後にコピー

Python コードを使用して複雑な財務チャートを作成するにはどうすればよいですか?

点数图

添加更多信息

mplfinance 包不仅限于生成不同类型的图表,还使我们能够通过添加简单移动平均线 (SMA) 和交易量等附加指标使这些图表更具洞察力。对于那些不知道这两者的人来说,成交量是交易者在特定时间范围内买卖的股票数量,而简单移动平均线 (SMA) 只不过是特定时间段的平均价格。它是一种技术指标,广泛用于创建交易策略。

用 matplotlib 绘制这些数据需要一千年,而 mplfinance 允许我们只用一行代码就可以完成这项任务。除了type参数之外,我们只需要引入另外两个参数,一个是mav我们必须指定每个 SMA 的回溯期的参数,另一个是volume我们必须提到的参数,True 如果我们想将成交量图添加到我们的图表中,或者False 我们不想。这两个指标的代码如下所示:

mf.plot(amzn, mav = (10, 20), type = 'candle', volume = True)
ログイン後にコピー

可以通过两种方式修改和试验上述代码。第一种方法显然是尝试不同类型的图表。在上述代码中,我们提到我们的图表类型是烛台,但你可以将其更改为 OHLC、Renko 甚至 P&F 图表,并观察每个图表及其两个附加指标的外观。下一个方法是使用mav我们可以添加任意数量的具有不同回顾期的 SMA的参数。上述代码的输出如下所示:

Python コードを使用して複雑な財務チャートを作成するにはどうすればよいですか?

保存图片

如果你想知道如何保存这些财务可视化中的任何一个,只需添加另一个参数,savefig即你只需提及其文件名的参数,其余部分将被处理。假设你想保存上面的图,那么你必须遵循的代码如下所示:

mf.plot(amzn,
mav = (10, 20),
type = 'candle',
volume = True,
savefig = 'amzn.png')
ログイン後にコピー

这就是你为保存精彩的财务可视化所需要做的全部工作。很容易,对吧?

写在最后

在我看来,与Plotly或Altair等库相比,mplfinance是绘制金融数据最强大的库。本文只是简单介绍了使用mplfinance可以实现的功能,但是这个了不起的库附带了许多新特性。它允许我们添加自定义的技术指标数据,并与实际的图表一起绘制,我们可以自定义整个模板,甚至图表中的每一个元素,添加趋势线,等等。

这个库最好的部分是它的易用性,并帮助我们用一行代码生成高级的财务可视化。虽然像Plotly这样的包有创建这些图表的内置函数,但不可能在一行代码中完成。

mplfinance现在唯一的缺点是它糟糕的文档,这使得人们甚至不知道这个包是关于什么的。文档是一个至关重要的方面,当涉及到开源项目时,文档应该被认为是至关重要的。特别像mplfinance这样的关键和有用的项目必须有清晰文档,对其提供的工具和功能有明确的解释。

到这里,你看完了这篇文章。如果你忘记了图表的代码,不要担心,最后我提供了完整的源代码。你也可以收藏本文,等需要用到的时候再查看。

完整代码

import pandas as pd
import requests
import mplfinance as mf
# Extracting stock data
def get_historical_data(symbol, start_date):
api_key = 'YOUR API KEY'
api_url = f'https://api.twelvedata.com/time_series?symbol={symbol}&interval=1day&outputsize=5000&apikey={api_key}'
raw_df = requests.get(api_url).json()
df = pd.DataFrame(raw_df['values']).iloc[::-1].set_index('datetime').astype(float)
df = df[df.index >= start_date]
df.index = pd.to_datetime(df.index)
return df
amzn = get_historical_data('AMZN', '2021-01-01')
amzn.tail()
# 1. OHLC Chart
mf.plot(amzn.iloc[:-50,:])
# 2. Candlestick Chart
mf.plot(amzn.iloc[:-50,:], type = 'candle')
# 3. Renko Chart
mf.plot(amzn, type = 'renko')
# 4. Point and Figure Chart
mf.plot(amzn, type = 'pnf')
# 5. Technical chart
mf.plot(amzn, mav = (10, 20), type = 'candle', volume = True)
# 6. Plot customization
mf.plot(amzn, mav = (5, 10, 20), type = 'candle',
volume = True, figratio = (10,5),
style = 'binance', title = 'AMZN STOCK PRICE',
tight_layout = True)
# 7. Saving the plot
mf.plot(amzn, mav = (5, 10, 20), type = 'candle',
volume = True, figratio = (10,5),
style = 'binance', title = 'AMZN STOCK PRICE',
tight_layout = True, savefig = 'amzn.png')
ログイン後にコピー

以上がPython コードを使用して複雑な財務チャートを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート