システムトレードを自作する part.1
今回の進捗:チャートの表示
久々に投資系なんか触りたいなと思いました。
せっかく自分はプログラマーなんで、
システムトレード自作してみたいと思います。
今回はチャートを表示するところまで。
以前はTradingViewを使ってたんだけど有料なんでね。
全部作っちゃいます。
チャートの表示はPythonが一番簡単そうだったんでPythonのmplfinaceで。
ローソク足での価格推移は当然、テクニカルも表示できるらしい。
コード(チャート表示)
import mplfinance as mpf
from pandas_datareader import data
from pandas.tseries.offsets import BDay
import pandas as pd
######################################
# 株価データを取得
df = data.DataReader('7203.JP', 'stooq')
# 日付の古い順に並び替え
df.sort_index(inplace=True)
# 営業日の範囲を指定
start_date = df.index[-50].strftime('%Y-%m-%d')
end_date = df.index[-1].strftime('%Y-%m-%d')
business_dates = pd.date_range(start=start_date, end=end_date, freq=BDay())
# 営業日のデータのみを抽出
df_business_days = df[df.index.isin(business_dates)]
# ローソクの色の設定
marketcolors = mpf.make_marketcolors(
up='#00BFFF', # 上昇時のろうそくの塗りつぶし色
down='#DC143C', # 下降時のろうそくの塗りつぶし色
edge='lightgray', # ろうそくの端の線の色
wick={
# 辞書形式で、ろうそく足の真の色を指定
'up':'#00BFFF', # 上昇時のろうそくの芯の色
'down':'#DC143C' # 下降時のろうそくの芯の色
}
)
# グラフ全体の設定
custom_style = mpf.make_mpf_style(
marketcolors=marketcolors,
gridcolor='lightgray', # チャートのグリッドの色
facecolor='white', # チャートの背景の色
edgecolor='black', # チャートの外枠の色
figcolor='white', # チャートの外側の色
gridstyle='-', # チャートのグリッドの種類 "--":実線, "--":破線, ":":点線, "-.":破線と点線の組み合わせ
gridaxis='both', # チャートのグリッドの有無を指定 both:縦横双方, horizontal:横線のみ, vertical:縦線のみ
y_on_right=False, # y軸を右に表示するかどうかを指定
rc = {
'xtick.color': 'black', # X軸の色
'xtick.labelsize': 8, # X軸の文字サイズ
'ytick.color': 'black', # Y軸の色
'ytick.labelsize': 8, # Y軸の文字サイズ
'axes.labelsize': 10, # 軸ラベルの文字サイズ
'axes.labelcolor': 'black', # 軸ラベルの色
# 'font.family': 'IPAexGothic', # タイトル,ラベルのフォントを指定
}
)
# 移動平均の期間
mav_periods = [5, 10, 20]
# ローソク足チャートのプロット設定
plot_config = {
'style': custom_style, # カスタムテーマを指定
'type': 'candle', # ローソク足チャート
'volume': True, # 出来高の表示
'show_nontrading': False, # 非取引日の非表示
# 軸の設定
'datetime_format': '%Y-%m-%d', # X軸の日付フォーマット
'xrotation': 45, # X軸の日付の回転角度
# ラベルの設定
'title':'TBD', # チャートのタイトル
'ylabel': 'Price', # チャートのY軸ラベル
'ylabel_lower': 'Volume', # ボリュームを表示する場合は、ボリュームのグラフのY軸ラベル
# テクニカル指標
'mav': mav_periods, # 移動平均線の期間を指定
}
# ローソク足チャートをプロット
mpf.plot(df_business_days, **plot_config)
実行結果
こんなライブラリ関数のオプション指定するだけでチャート表示できるなんてmplfinaceヤバいっすね。
これはもうコーディングじゃなくて、ただの設定ファイル作成なんよ。
ただこれだと銘柄指定やテクニカル指標を変える度にコードを編集しなきゃいけない。
そこら辺はGUIで指定できるようにしたいけどC#で作った方が早そう。
自動売買はPython-Seleniumを予定(他にもっといい方法あるかもだけど)
開発環境
環境:Visual Studio Code
言語:Python
この記事が気に入ったらサポートをしてみませんか?