シェア:

ビットコインはいつ買えばいい?「Woodies CCI」っていう作戦をわかりやすく解説!

この作戦は、ビットコインが1時間ごとにどう動くかを見て、いつ買ったり売ったりすればいいのかを見つける方法です。難しい言葉は使わずに、分かりやすく説明しますね。

取引数
174
勝率
18.39%
最終リターン
-49.83%
最大DD
49.92%

導入と前提条件

この作戦は、ビットコインが1時間ごとにどう動くかを見て、いつ買ったり売ったりすればいいのかを見つける方法です。難しい言葉は使わずに、分かりやすく説明しますね。

【検証】戦略のバックテスト概要

  • 戦略名: Woodies CCI を使用したトレンド追従戦略
  • 対象銘柄: BTC/USDT
  • 時間足: 1h
  • 期間: 2025-05-08〜2025-09-05(119日間)
  • 初期資金: $10,000
  • 手数料・スリッページ: 0.1% / 0.1%
  • 取引所: binance

Woodies CCI の理論的背景

この作戦は、値段の動きを「川の流れ」みたいに考えるのがポイントです。「CCI」という道具が、その川の流れの速さや向きを教えてくれます。CCIがプラスなら値段が上がる流れが強い、マイナスなら値段が下がる流れが強い、ということです。ときどき、流れが止まりそうになっても、また元の勢いに戻ることがあります。それを見つけて、判断の間違いを減らす工夫も入っています。

具体的な売買ルール(今回の検証)

エントリー条件

  • いつ買うか:値段の勢いを示す「CCI」が、マイナスの数字からプラスの数字に変わったときが、買いの合図です。
  • いつ売るか:逆に、「CCI」がプラスの数字からマイナスの数字に変わったときが、売りの合図です。

エグジット条件

  • 買ったものをいつ売るか:「売り」の合図が出たら、持っているビットコインを売って取引を終わりにします。
  • 売ったものをいつ買い戻すか:「買い」の合図が出たら、取引を終わりにします。

リスク管理

大きな損をしないためのルール:もし予想と反対に値段が動いてしまったら、被害が大きくならないうちに取引をやめる「損切り」というルールを決めておくことがとても大事です。お小遣いの範囲でやるように、無理のない金額で試しましょう。

再現手順(HowTo)

  1. Python/依存(ccxt, pandas, ta)をインストール
  2. ccxtでBTC/USDTのOHLCVを取得して前処理
  3. 『Woodies CCI』に必要な指標を算出(ta 等)
  4. 閾値・クロス条件から売買シグナルを生成
  5. 手数料・スリッページを加味して検証・評価

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数174回
勝率18.39%
平均利益1%
平均損失-0.71%
期待値-0.39%
プロフィットファクター0.32
最大ドローダウン49.92%
最終リターン-49.83%
シャープレシオ-1.44
HODL(Buy&Hold)9.83%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
Woodies CCI Trading Signal
Ken Wood氏が開発したCCIベースの戦略
"""
import pandas as pd
import numpy as np


def calculate_woodies_cci_signals(df: pd.DataFrame,
                                 cci_period: int = 14,
                                 turbo_period: int = 6,
                                 zero_line_reject: int = 5) -> pd.DataFrame:
    """
    Woodies CCI戦略のシグナル生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    cci_period : int
        メインCCI期間(デフォルト: 14)
    turbo_period : int
        ターボCCI期間(デフォルト: 6)
    zero_line_reject : int
        ゼロライン拒否期間(デフォルト: 5)
    
    Returns:
    --------
    pd.DataFrame
        シグナルが追加されたDataFrame
    """
    df = df.copy()
    
    # CCI計算関数
    def calculate_cci(data, period):
        tp = (data['high'] + data['low'] + data['close']) / 3
        sma = tp.rolling(window=period).mean()
        mad = tp.rolling(window=period).apply(lambda x: np.abs(x - x.mean()).mean())
        cci = (tp - sma) / (0.015 * mad)
        return cci
    
    # メインCCIとターボCCI
    df['cci'] = calculate_cci(df, cci_period)
    df['cci_turbo'] = calculate_cci(df, turbo_period)
    
    # CCI移動平均
    df['cci_ma'] = df['cci'].rolling(window=cci_period).mean()
    
    # LSMA(最小二乗移動平均)
    def lsma(series, period):
        result = pd.Series(index=series.index, dtype=float)
        x = np.arange(period)
        for i in range(period - 1, len(series)):
            y = series.iloc[i - period + 1:i + 1].values
            if len(y) == period:
                slope = np.polyfit(x, y, 1)[0]
                result.iloc[i] = y[-1] + slope
        return result
    
    df['lsma'] = lsma(df['close'], 25)
    
    # シグナル初期化
    df['signal'] = 0
    df['is_buy'] = False
    df['is_sell'] = False
    
    # 現在のポジション状態を追跡
    position = 0
    
    for i in range(25, len(df)):  # LSMAが25期間なので
        # 買いシグナル(CCIがゼロラインを上抜け)
        if position <= 0 and df['cci'].iloc[i] > 0 and df['cci'].iloc[i-1] <= 0:
            df.loc[df.index[i], 'is_buy'] = True
            df.loc[df.index[i], 'signal'] = 1
            position = 1
            
        # 売りシグナル(CCIがゼロラインを下抜け)  
        elif position >= 0 and df['cci'].iloc[i] < 0 and df['cci'].iloc[i-1] >= 0:
            df.loc[df.index[i], 'is_sell'] = True
            df.loc[df.index[i], 'signal'] = -1
            position = -1
        else:
            # ポジション維持
            df.loc[df.index[i], 'signal'] = position
    
    # NaN値を0で埋める
    df['signal'] = df['signal'].fillna(0)
    
    return df



なぜこの結果になったのか(3つの理由)

  1. 1174回チャレンジして、勝てたのは32回くらいでした。つまり、10回やって2回も勝てなかった計算になります。これは、買うタイミングや売るタイミングが、あまり合っていなかったのかもしれません。
  2. 2結果として、取引をすればするほど、少しずつお金が減ってしまう計算になってしまいました。
  3. 3最終的に、元のお金が約半分に減ってしまいました。この作戦は、この時期のビットコインの動きには、残念ながら合っていなかったようです。

この結果から学べる3つの教訓

  1. 1どんなに有名なすごい作戦でも、いつでもどんな状況でもうまくいくわけじゃない、ということが分かりました。
  2. 2勝つ回数が少なくても、一回の勝ちでたくさん取り返せればいいのですが、今回の作戦ではそれも難しかったようです。
  3. 3一番調子が悪かったときには、お金が半分くらいまで減ってしまいました。こういう大きな失敗をどうやって防ぐかが、続けていくためにはすごく大事だという教訓になりました。

リスク管理の具体的手法

取引量の決め方

どれくらいのお金でやるか:毎回、全財産をつぎ込むのは危険です。「もし失敗しても、これくらいなら大丈夫」という金額を決めて、その範囲で取引しましょう。例えば、「持っているお金の2%までしか一度に危険にさらさない」とルールを決めるのがおすすめです。

損失が大きくなったときの対処法

もし負けが続いたら:もし損が大きくなってきたら、一度お休みすることが大事です。そして、なぜうまくいかないのかを冷静に考えて、作戦を見直しましょう。あせりは禁物です。

資金管理の方法

お金の計画を立てよう:持っているお金全体をどう使うか、計画を立てることが大切です。1回に使うお金、損してもいい金額などを決めておけば、全部なくしてしまうような大きな失敗を防げます。

改良案の具体的提案

  • 作戦の細かい設定(CCIの数字など)を、今のビットコインの動きに合わせて、もっとピッタリになるように変えてみる必要がありそうです。
  • 「CCI」だけでなく、他の道具と組み合わせて、もっと確実な「買い」や「売り」の合図を見つけられるように工夫してみましょう。
  • 「このくらい損したらやめる」という損切りのルールを決めたり、うまくいっているときに利益をもっと伸ばすための工夫も必要かもしれません。

実用性の向上(運用上の注意)

  • この作戦は、あくまで過去のデータでどうだったかを見たものです。未来も同じようにうまくいくとは限りません。
  • 本当のお金でやる前に、ゲームのような練習モード(デモ取引)や、とても少ない金額で試して、自分に合うか確かめてみましょう。
  • ビットコインの値段の動きはどんどん変わるので、この作戦が今もちゃんと役に立つか、時々チェックすることが大切です。

検証の透明性と信頼性

  • データの出所: この結果は、過去のビットコインの1時間ごとの値動きのデータ(2025年5月8日〜2025年9月5日の分)を使って計算したものです。
  • 検証のやり方: この結果は、コンピューターのプログラムを使って、過去のデータで「もしこの作戦を使っていたらどうなっていたか」をシミュレーションして確かめました。
  • コード: どうやって計算したか分かるように、使ったプログラムは誰でも見られるようになっています。
  • 注意事項: 大切なお知らせ:この記事は、あくまで勉強のための情報です。「絶対に儲かるからやってみて!」というものではありません。もし実際に取引するなら、自分でよく考えて、自分の責任で行ってくださいね。過去にうまくいったからといって、未来もうまくいくとは限りません。

よくある質問

Q.ビットコインの取引って、難しいですか?

A.ビットコインは値段が大きく変わることがあるので、動きを予想するのは難しいときもあります。でも、今回のような「作戦」があると、いつ買ったり売ったりすればいいかのヒントになりますよ。

Q.「CCI」って、どうやって使うんですか?

A.「CCI」は、値段の「元気度」を数字にしたようなものです。プラスの数字が大きいと、値段が上がる勢いが強いということ。マイナスの数字が大きいと、下がる勢いが強い、というふうに見ることができます。

Q.勝つ回数が少ないと、ダメな作戦なんですか?

A.そんなことはありません。例えば、10回中2回しか勝てなくても、その2回の勝ちで、負けた8回の分をぜんぶ取り返せれば、結果的にはプラスになります。だから、勝つ回数だけが全てではないんです。

Q.「最大DD」って何ですか?

A.「最大DD(さいだいドローダウン)」は、お金が一番減ってしまったときの、減った割合のことです。例えば、100円が一時的に60円まで減ってしまったら、DDは40%になります。この数字が大きいほど、大きなピンチがあったということです。

Q.この作戦は、他のコインでも使えますか?

A.はい、使えるかもしれません。この作戦の考え方は、他の仮想通貨や会社の株など、値段が動くものなら応用できる可能性があります。でも、それぞれ動き方にクセがあるので、作戦の細かい設定を変える必要があると思います。

Q.検証に使用した期間と時間足は?

A.1h足で検証しました。期間は記事内の概要をご確認ください。

Q.最終リターンと最大ドローダウンは?

A.最終リターンは-49.83%、最大DDは49.92%です。

Q.勝率やPFはどの程度?

A.勝率は18.39%、プロフィットファクターは0.32です。

Q.HODLとの比較結果は?

A.HODLは9.83%でした。記事内の比較表をご覧ください。

Q.手数料やスリッページは考慮済み?

A.はい。バックテスト設定の手数料・スリッページを損益に反映しています。

Q.市場環境はトレンド/レンジどちらに近かった?

A.期間中はトレンド優勢と推測されます。

Q.この戦略は初心者でも扱える?

A.基礎的な指標と検証環境の知識があれば扱えます。まずは少額・デモから。

Q.推奨のリスク管理は?

A.最大DDを踏まえた損切り・ポジションサイジングと、システム停止基準の設定を推奨します。

Q.将来の結果は期待できる?

A.過去の結果は将来を保証しません。市場環境やパラメータ適合性に大きく依存します。

Q.改良の方向性は?

A.トレンド・ボラティリティのフィルター併用、パラメータの再最適化、取引頻度の制御を検討してください。

著者情報