こんにちは前回の記事では酒田五法を紹介しました。その中でダミーのデータを使って三空をビジュアライズしましたが、やはり実データでどのくらい三空が出現しているか見てみたいですよね!
今回はS&P500の過去一年間のデータを使って三空がどのくらい出現するのかを見てみます。
ライブラリのインポートとデータのダウンロード
いつもと嗜好を変えてデータのダウンロードをしてくれる関数を定義してみました。
import yfinance as yf
import pandas as pd
import mplfinance as mpf
def download_data():
# S&P 500のシンボルは'^GSPC'
ticker = "^GSPC"
# 一年分の日足データをダウンロード
data = yf.download(ticker, period="1y")
return data
def main():
# データのダウンロード
data = download_data()
print(data.head()) # データの最初の5行を表示して確認
if __name__ == "__main__":
main()
「三空」のパターンを検出
main.py
に続けて、以下の関数を追加して「三空」のパターンを探します。終値と翌日の始値で大きく窓が空いている足が3連続している「三空」のパターンを探し、その情報を処理するコードを実装します。ここでは「窓」が空いているとは、翌日の始値が前日の終値よりも大きく下がっている(または上がっている)状態を指します
def find_san_ku(data):
data['Gap'] = data['Open'].shift(-1) - data['Close']
# 「三空」を見つけるためのマーカー(フラグ)リストを初期化
markers = []
# データをループして「三空」パターンを探す
for i in range(len(data) - 3):
# 3連続で窓が空いているかをチェック
if data['Gap'].iloc[i] < 0 and data['Gap'].iloc[i + 1] < 0 and data['Gap'].iloc[i + 2] < 0:
# 「三空」パターンが見つかった場合、その位置(日付)をマーカーに追加
markers.append(data.index[i + 2])
return markers
def main():
# データのダウンロード
data = download_data()
# 「三空」パターンを探す
san_ku_markers = find_san_ku(data)
print("三空のパターンが見つかった日付:", san_ku_markers)
mplfinanceを使ってビジュアライズ
やっぱりビジュアライズが一番大事ですね!mplfinanceを使用して「三空」のパターンがある箇所をマーキングします。main
関数に以下のコードを追加して、ビジュアライズの処理を実装します。
def visualize_san_ku(data, markers):
# 「三空」の位置に線を引くためのリストを生成
alines = []
for marker in markers:
# 各「三空」の日に対して、その日の高値と安値を結ぶ線を設定
high = data.loc[marker, 'High']
low = data.loc[marker, 'Low']
alines.append([(marker, low), (marker, high)])
# mplfinanceのプロット設定
mpf.plot(data, type='candle', figscale=1.2, style='charles',
alines=dict(alines=alines, colors=['r'], linewidths=2),
show_nontrading=True)
def main():
# データのダウンロード
data = download_data()
# 「三空」パターンを探す
san_ku_markers = find_san_ku(data)
print("三空のパターンが見つかった日付:", san_ku_markers)
# 「三空」をビジュアライズ
visualize_san_ku(data, san_ku_markers)
if __name__ == "__main__":
main()
赤色の縦棒が書いてある部分がプログラムが三空を発見している場所です。この90日間で7回三空が発生していますね。実際にS&P500はこの期間(常に?)は上昇トレンドだったので調整下げの底を見つけるには三空はかなり使えたかもしれませんね。
皆さまもプログラムで是非遊んでみてくださいね!
是非クリックお願いします!