PythonでビットコインのCCI(商品チャンネル指数)を計算してみる

CCIとは?

CCIとは、商品チャンネル指数「Commodity Channel Index」の略で、
相場の過熱感(買われ過ぎ/売られ過ぎ)を測るオシレーター系指標の一つです。

CCIは、「現在の価格が、価格の移動平均からどれだけ乖離しているか」を表します。

似た役割のテクニカル指標に「移動平均乖離率」がありますが、こちらは単純に移動平均線からの乖離の度合いを示します。
それに対してCCIは、価格の振れ幅(ボラティリティ)が反映された形で表されるのが特徴です。


CCIの計算式

CCI=(TP-MA)/0.015×MD
TP=(高値+安値+終値)/3
MA=n日間のTPの移動平均
MD=TP-MAの平均偏差

移動平均の期間のパラメータは14が基本です。

CCIの使われ方

多くのオシレーター指標は0~100%の間で示されますが、CCIには数値の上限や下限はありません。
一般的には-100%と+100%にレベルラインが引かれ、それらの水準をトレードの判断に用います。

+100%を上抜けた場合は買われすぎ、-100%を下抜けた場合は売られすぎと判断します。

画像1

↑後半パートで上のようなグラフをpythonで作成します。

PythonでビットコインのCCIを計算してみる


必要ライブラリのインポート
ccxtのインストールが必要なので注意。

import datetime
import ccxt 
import pandas as pd
import matplotlib.pyplot as plt

ろうそく足(日足)をbinanceから取得する。

# ろうそく足を取得する
def get_past_data(exchange, symbol, barsymbol, bar, period, end_day=None):
   if not end_day:
       timest = exchange.fetch_ticker(symbol)['timestamp']
   else:
       timest = day_to_unixtime(end_day)
   timest = timest - period*bar*60*1000
   candles = exchange.fetch_ohlcv(symbol, timeframe=barsymbol, since=timest, limit=min(500,period))
   pd_candles = pd.DataFrame(candles)
   return pd_candles
binance = ccxt.binance()
symbol = "BTC/USDT"
barsymbol = "1d"
bar = 60*24
period = 200 # ろうそく足の本数
candle = get_past_data(binance, symbol, barsymbol, bar, period)
timestamp = candle[0].values.tolist()
date = [datetime.datetime.fromtimestamp(timestamp[i]/1000) for i in range(len(timestamp))]
date = pd.to_datetime(date)
high = candle[2]
low = candle[3]
close = candle[4]

CCIの計算

# TPの計算
TP = (close + high + low)/3
# 移動平均線の計算
MA = TP.rolling(14).mean()
# 平均偏差の計算
MD = (TP - MA).abs().rolling(14).mean()
# CCIの計算
CCI = (TP - MA)/(0.015 * MD)

グラフを作成

# グラフを作成
fig = plt.figure()
ax1 = fig.add_subplot(2,1,1)
ax1.plot(date,close,label='btc/usdt')
ax1.set_ylabel("btc/usdt")
ax1.axes.xaxis.set_visible(False)
ax2 = fig.add_subplot(2,1,2,sharex=ax1)
ax2.set_ylabel("CCI")
ax2.plot(date,CCI,label='CCI')
ax2.legend()
plt.xticks(rotation=90)
plt.tight_layout()
plt.show()

↓binance新規口座開設はこちら

上のリンクから登録すると、取引手数料が10%返却されてお得です。


↓有料部分には上のコードをまとめたファイルを貼っておきます。


ここから先は

0字 / 1ファイル

¥ 100

この記事が気に入ったらサポートをしてみませんか?