【Python】為替チャートのゴールデンクロス・デッドクロスを明示する
以下の記事で為替チャートから簡単に移動平均を算出する方法について解説しました。
せっかく2つの移動平均線(SMA5、SMA21)を描いたので、今回は交わる点(ゴールデンクロス・デッドクロス)をデータ上で明示できるようにしたいと思います。投資チャートにおいてこれらクロスがトレードする上で重要な位置になるので、そのタイミングをデータ上ではっきり示すことがとても大事になります。
以下が完成形となります。SMA5>SMA21は「1」、SMA5<SMA21は「-1」とした場合以下のようなグラフを描きます。この切り替わりのラインがちょうどクロスする点を示しますのでデータ解析の際に簡単に捕まえることができます。
それではソースコードを紹介します。np.whereで条件に応じた値(-1, 1)を振り分けます。np.whereの詳細は前回の記事をご覧ください。
import pandas as pd import numpy as np import matplotlib.pyplot as plt fname = 'csv/DAT_ASCII_USDJPY_M1_2022.csv' book = pd.read_csv(fname, header=None, sep=";") data = pd.DataFrame() data['Date'] = book[0] data['Rate'] = book[1] # 移動平均線(SMA5) data['SMA5'] = book[1].rolling(7200).mean() # 移動平均線(SMA21) data['SMA21'] = book[1].rolling(30240).mean() # 条件に応じた-1, 1への振り分け data['POS'] = np.where(data['SMA5'] > data['SMA21'],1,-1) x = np.array(range(len(book))) y1 = np.array(data['Rate']) y2 = np.array(data['SMA5']) y3 = np.array(data['SMA21']) y4 = np.array(data['POS']) fig, ax1 = plt.subplots(figsize=(10,6)) ax2 = ax1.twinx() ax1.plot(x, y1) ax1.plot(x, y2) ax1.plot(x, y3) ax2.plot(x, y4) plt.show()
スポンサーリンク