Python仕事術

Python FXで役立つコード

  • Pythonを使用した移動平均線及び移動平均線の傾きの算出方法
  • Pythonを使用したボリンジャーバンドのグラフ作成方法
  • 無料のAPIを使ったFXチャートのリアルタイム更新方法

(本記事のコードを作成した開発環境はGoogle Colaboratory Python 3.10.12 となります。)

FX為替トレードの際に使用するテクニカルチャート(移動平均線、ボリンジャーバンド)をPythonを使ってグラフに表示する方法を解説します。また、本記事の後半では無料のAPIを使ってリアルタイムに為替レートを取得し、テクニカルチャートを付与してグラフに表示する方法を解説します。

目次

●テクニカルチャートをPythonを使ってグラフに表示する

  • 移動平均線の算出コード
  • 移動平均線の傾きの算出コード
  • ボリンジャーバンドの算出コード
  • グラフの出力コード
  • プログラム全体

●APIを使ってリアルタイムに為替レートを取得し、グラフに表示する

  • Alpha Vantage API
  • プログラム全体

テクニカルチャートをPythonを使ってグラフに表示する

練習用としてエクセルデータ(data)を添付します。本記事では添付したデータをもとにテクニカルチャートを作っていきます。DataFrameにして開くと下記のようになっています。

移動平均線

今回は移動平均線の中で最もメジャーな単純移動平均を求めていきます。単純移動平均は、指定された期間内の価格の平均を計算して表示するものです。各期間の価格を合計し、期間で割ることで平均を求めます。トレンドの方向性や傾向を把握することができます。

下記コードでは5期間及び20期間の移動平均線を算出し、DataFrame「df」に追加できます。rolling()の引数を変更することで期間をコントロールできます。

移動平均線の傾き

移動平均線の傾きを求めることでトレンドの向きや強弱が数値で読み取れるようになります。NumPyライブラリのgradient関数を使って移動平均線の傾きを算出ます。

上記コードで「移動平均_5」の行に対し、前後の傾きを求められます。最後の列については後の列がないので前の列との傾きになります。最初の列についても同様で前の列がないので後の列との傾きになります。

ボリンジャーバンド

ボリンジャーバンドは移動平均線と移動平均線に対して標準偏差の1~3倍を加算もしくは除算した線を引くテクニカルチャートです。

下記コードで「移動平均_20」に対して、標準偏差の1倍及び2倍のボリンジャーバンドを作成することができます。

グラフの出力

グラフの表示方法については別記事にて紹介しています。

[Python Matplotlibでグラフを作る]

プログラム全体

APIを使ってリアルタイムに為替レートを取得し、グラフに表示する

Alpha Vantage API

Alpha Vantageは、株式、為替、仮想通貨、指数、テクニカル指標など、さまざまな金融市場に関するデータを取得することができます。

無料枠では下記のような制限があります。

  • 1分あたり5回のAPIリクエスト
  • 1日あたり500回のAPIリクエスト

下記コードでAlpha Vantageからドル円の為替レートを取得することができます。

リアルタイム更新時のプログラム全体

下記コードは1分に1度更新されるプログラムになります。テクニカルチャートの作成やグラフの表示については前項で紹介したコードの応用になります。