わたねこコーリング

野良プログラマ発、日々のアウトプット

Pandas 演習としてのテクニカル指標計算 〜 平均足の巻

今回は指標とはちょっと違うかもしれませんが、平均足をお題に。ローソク足にした時にトレンドが把握しやすいよう始値・高値・安値・終値それぞれを調整したもので、国産の指標だそうです。詳しい説明は下記あたりを参照して下さい。

www.sevendata.co.jp

計算に使う株価データは毎度お馴染み、日経平均プロフィルさんから。CSV ファイルを読み出して Pandas データフレームに格納する処理のコードはシリーズ第1回目を参照ください。

平均足の計算方法は下記のとおりです。

平均足始値 = 前日始値と前日終値の中間値
平均足終値 = 当日の始値・高値・安値・終値の平均値
平均足高値 = 当日の平均足始値・平均足終値・高値の最大値
平均足安値 = 当日の平均足始値・平均足終値・安値の最小値

これだけなので、算出プログラムも今回は簡単ですな。

def calc_heikinashi(open, high, low, close):
  h_open = ((open + close) / 2).shift()
  h_close = (open + high + low + close) / 4
  h_high = pd.concat([h_open, h_close, high], axis='columns').max(axis='columns')
  h_low = pd.concat([h_open, h_close, low], axis='columns').min(axis='columns')
  return h_open, h_high, h_low, h_close
  
df['h_open'], df['h_high'], df['h_low'], df['h_close'] = calc_heikinashi(df.open, df.high, df.low, df.close)

では両者の直近250日ローソク足チャートを作画して比べてみましょー。上段が通常の日足、下段が平均足です。ご覧のとおり、平均足ではローソク本体のギャップが埋められるとともに、陽線・陰線が連続しやすくなっているのでトレンド途中の「踊り場」が視覚的に軽減され、判りやすくなった感じですね。

f:id:mariyudu:20190518140936p:plain
通常日足と平均足のローソク足チャート

今回もコード一式と実行結果は Google Colaboratory でどうぞ↓。

https://colab.research.google.com/drive/10jXCUWqaYbyCCZmFiLsqON7u_gWWKMe6