AIとファイナンス

AIとファイナンスの架け橋、それがこのブログの目指すところです。兼業投資家向けに、Pythonを駆使して株やFXの分析を「自分で」行えるようになるための情報を提供します。ニューラルネットワークを活用した市場予測から、実証済みの金融理論まで、全てのコードを公開し、誰もが活用できるように!是非色々なコードで遊んでみてください!

【FX】レジスタンス・サポートとは?Pythonを使って自動化・視覚化!【テクニカル分析】

さて、以前の記事ではトレンドラインの重要性を書きましたが今回はトレンドラインを語る上で重要なレジスタンスとサポートについてです。

サポートとレジスタンスは、FXにおいて価格動向の分析に不可欠な概念です。サポートレベルは価格が下落する際に、それ以上価格が落ちにくいとされる水準を指します。これは一種の「床」のような役割を果たし、買い手が強い関心を示すポイントです。逆にレジスタンスレベルは、価格が上昇する際に、それ以上上がりにくいとされる水準であり、「天井」としての役割を持ちます。ここでは売り手が顕著に現れやすいです。これらのレベルは過去の価格動向やトレーダーの心理に基づいており、将来の取引戦略を立てる際の重要な指標となります。サポートが破られると、それは新しいレジスタンスレベルに変わることが多く、同様にレジスタンスが破られると新しいサポートレベルになることがあります。

さて、このよくある説明だけ書いても面白くないと思うので実際にPythonを使ってレジスタンスとサポートの把握を自動化できないかやってみましょう!

1.必要なライブラリのインポート:

まずはおなじみの必要なライブラリのインポートですね。今日はいつものプラスSciPyというライブラリを使用します。SciPyは高度な微分積分などの高度な数学的処理を行えるライブラリです。

import yfinance as yf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import argrelextrema

2.データのダウンロード:

# EURUSDデータのダウンロード
data = yf.download("EURUSD=X", start="2020-01-01", end="2023-01-01")

3.サポートとレジスタンスレベルの特定:

ここが今回のポイントです!今回はarglextremaを使って極値を調べていきます。この際何日分のデータの中で最大値、最小値を探すか、ということでウィンドウサイズを指定しています。このパラメーターは自分のお好みで変えてくださいね!

# 局所的な最小値と最大値を見つけるためのウィンドウサイズを設定
window_size = 10

# 局所的な最大値と最小値のインデックスを見つける
minima_indices = argrelextrema(data['Close'].values, np.less_equal, order=window_size)[0]
maxima_indices = argrelextrema(data['Close'].values, np.greater_equal, order=window_size)[0]

# サポートとレジスタンスレベルを抽出
support_levels = data['Close'].iloc[minima_indices]
resistance_levels = data['Close'].iloc[maxima_indices]

4.サポートとレジスタンスレベルのプロット:

plt.figure(figsize=(14, 7))
plt.plot(data['Close'], label='Close Price', alpha=0.5)
plt.scatter(data.index[minima_indices], data['Close'].iloc[minima_indices], color='green', label='Support', marker='^', alpha=1)
plt.scatter(data.index[maxima_indices], data['Close'].iloc[maxima_indices], color='red', label='Resistance', marker='v', alpha=1)
plt.title('EURUSD Close Price with Support and Resistance')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()
plt.show()

ここでは、matplotlibを使用して、取得した「EURUSD」のクローズ価格をプロットし、特定したサポートレベルとレジスタンスレベルをそれぞれ緑色の上向き三角と赤色の下向き三角でマーキングしています。これにより、重要な価格レベルを視覚的に識別することが可能になります。やはり視覚化が一番重要ですよね!

さて、実際に視覚化したものが以下の通りになります。

EURUSDの過去三年間のサポートとレジスタンス

いかがでしょうか?よく見ると平行チャネルのようになっているところが多くありますよね!!特に2022年一月からの下落は平行チャネルを追ってきているように見えます。

皆さまも好きな通貨ペアで試してみてください!

 

 

是非クリックお願いします!