ビットコインの未来を「雲」で占う?不思議なチャート分析の結果を見てみよう!
このレポートでは、ビットコインの5分ごとの値動きを見ながら、「一目均衡表」っていう特別な道具を使った作戦が、うまくいったのかどうかをチェックします。この作戦で、実際にお金が増えたのか、それとも減ってしまったのか、わかりやすくお話ししますね。
導入と前提条件
このレポートでは、ビットコインの5分ごとの値動きを見ながら、「一目均衡表」っていう特別な道具を使った作戦が、うまくいったのかどうかをチェックします。この作戦で、実際にお金が増えたのか、それとも減ってしまったのか、わかりやすくお話ししますね。
【検証】戦略のバックテスト概要
- 戦略名: Ichimoku Cloud を使用したトレンド追従戦略
- 対象銘柄: BTC/USDT
- 時間足: 5m
- 期間: 2024-09-05〜2025-08-25(353日間)
- 初期資金: $10,000
- 手数料・スリッページ: 0.1% / 0.1%
- 取引所: binance
Ichimoku Cloud の理論的背景
「一目均衡表」は、昔の日本の新聞記者さんが作った、値段の動きを分析する道具です。今の値段のバランスが良いか、これからどう動きそうかを、いくつかの線と「雲」で見ていきます。この作戦で大事なのは、まず「雲」です。雲は、値段がそれ以上は下がりにくい「床」になったり、上がりにくい「天井」になったりします。そして、さっき出てきた「転換線」と「基準線」がクロスするのは、値段の向きが変わるかもしれないっていう合図なんです。この2つのポイントを使って、売り買いのタイミングを探ります。
具体的な売買ルール(今回の検証)
エントリー条件
- 短い線の勢いが強くなって、長い線を追い越した時。さらに、今の値段が「雲」よりも上にいる時。これを「買い」の合図にします。
- 短い線の勢いが弱くなって、長い線より下にいった時。さらに、今の値段が「雲」よりも下にいる時。これを「売り」の合図にします。
エグジット条件
- 「買い」で持っている時は、短い線が長い線より下に行っちゃった時か、値段が「雲」の下に落ちちゃった時に、売って終わりにします。
- 「売り」で持っている時は、短い線が長い線より上に行った時か、値段が「雲」の上に抜けちゃった時に、買い戻して終わりにします。
リスク管理
もし予想が外れて、値段が反対の方向に動いてしまったら、どうするかのルールも決めておきます。あらかじめ「ここまで損したらやめる」というライン(損切り)を決めておいて、そこに達したらすぐに取引を終えるようにします。こうすることで、大きな失敗を防ぐことができます。
再現手順(HowTo)
- Python/依存(ccxt, pandas, ta)をインストール
- ccxtでBTC/USDTのOHLCVを取得して前処理
- 『Ichimoku Cloud』に必要な指標を算出(ta 等)
- 閾値・クロス条件から売買シグナルを生成
- 手数料・スリッページを加味して検証・評価
【結果】パフォーマンス
価格の推移
資産の推移
パフォーマンス指標
指標 | 値 |
---|---|
総トレード数 | 458回 |
勝率 | 24.89% |
平均利益 | 1.67% |
平均損失 | -0.9% |
期待値 | -0.26% |
プロフィットファクター | 0.64 |
最大ドローダウン | 72.89% |
最終リターン | -71.56% |
シャープレシオ | -0.18 |
HODL(Buy&Hold) | 96.78% |
HODL戦略との比較
実装コード(Python)
#!/usr/bin/env python3
"""
一目均衡表(Ichimoku Cloud)戦略
雲のブレイクアウトと転換線・基準線のクロスを利用
"""
import pandas as pd
import numpy as np
def calculate_ichimoku_signals(df: pd.DataFrame, tenkan: int = 9, kijun: int = 26,
senkou_b: int = 52) -> pd.DataFrame:
"""
一目均衡表シグナルを生成
Parameters:
-----------
df : pd.DataFrame
OHLCVデータ
tenkan : int
転換線期間(デフォルト: 9)
kijun : int
基準線期間(デフォルト: 26)
senkou_b : int
先行スパンB期間(デフォルト: 52)
Returns:
--------
pd.DataFrame
シグナル列が追加されたDataFrame
"""
df = df.copy()
# 転換線(過去9期間の最高値と最安値の中点)
high_9 = df['high'].rolling(window=tenkan).max()
low_9 = df['low'].rolling(window=tenkan).min()
df['tenkan_sen'] = (high_9 + low_9) / 2
# 基準線(過去26期間の最高値と最安値の中点)
high_26 = df['high'].rolling(window=kijun).max()
low_26 = df['low'].rolling(window=kijun).min()
df['kijun_sen'] = (high_26 + low_26) / 2
# 先行スパンA(転換線と基準線の中点を26期間先行)
df['senkou_span_a'] = ((df['tenkan_sen'] + df['kijun_sen']) / 2).shift(kijun)
# 先行スパンB(過去52期間の最高値と最安値の中点を26期間先行)
high_52 = df['high'].rolling(window=senkou_b).max()
low_52 = df['low'].rolling(window=senkou_b).min()
df['senkou_span_b'] = ((high_52 + low_52) / 2).shift(kijun)
# 雲の上限と下限
df['cloud_top'] = df[['senkou_span_a', 'senkou_span_b']].max(axis=1)
df['cloud_bottom'] = df[['senkou_span_a', 'senkou_span_b']].min(axis=1)
# シグナル生成
# 転換線と基準線のクロス + 雲の上での買い、雲の下での売り
df['is_buy'] = (
(df['tenkan_sen'] > df['kijun_sen']) &
(df['tenkan_sen'].shift(1) <= df['kijun_sen'].shift(1)) &
(df['close'] > df['cloud_top'])
)
df['is_sell'] = (
(df['tenkan_sen'] < df['kijun_sen']) &
(df['tenkan_sen'].shift(1) >= df['kijun_sen'].shift(1)) &
(df['close'] < df['cloud_bottom'])
)
# NaN値をFalseに置換
df['is_buy'] = df['is_buy'].fillna(False)
df['is_sell'] = df['is_sell'].fillna(False)
print(f"一目均衡表: 転換線={tenkan}, 基準線={kijun}, 先行スパンB={senkou_b}")
print(f"買いシグナル数: {df['is_buy'].sum()}")
print(f"売りシグナル数: {df['is_sell'].sum()}")
return df
なぜこの結果になったのか(3つの理由)
- 1この作戦は、全部で458回も売り買いしましたが、勝てたのは約4回に1回(勝率24.89%)と、あまり多くありませんでした。
- 21回の売り買いで、平均してどれくらいプラスかマイナスかを計算すると、0.26%のマイナスでした。つまり、やればやるほど少しずつ損が増えていく計算になります。
- 3結果として、もとのお金が71.56%も減ってしまいました。一番調子が悪かった時には、72.89%もお金が減ってしまう瞬間もあり、とても大きなマイナスになってしまいました。
この結果から学べる3つの教訓
- 1「一目均衡表」の「雲」を抜けるタイミングと、線がクロスするタイミングを組み合わせても、必ずうまくいくわけではない、ということがわかりました。
- 25分ごとという短い時間で見ると、すぐに値段が元に戻ってしまう「ダマシ」の動きが多くて、なかなか勝ち続けるのは難しいようです。
- 3たくさん売り買いしても、勝てる確率が低いと、結果的に大きなマイナスになってしまうことがある、ということを学びました。
リスク管理の具体的手法
取引量の決め方
1回の売り買いで使うお金の量を調整します。もし負けても大丈夫なように、持っているお金全体の1%から2%くらいの、少ない金額で挑戦するようにします。
損失が大きくなったときの対処法
もし、持っているお金が10%のように、ある程度まとまって減ってしまったら、一度お休みします。そして、作戦やルールが本当にこれで良いのか、じっくり考え直す時間を作ります。
資金管理の方法
売り買いに使うお金は、なくなっても生活に困らない「余裕のあるお金」だけにします。そして、もしプラスになったら、その一部はちゃんと貯金するなど、守りを固めることも大事です。
改良案の具体的提案
- もっと勝てるようにするために、他の分析道具(例えば、今が買われすぎか、売られすぎか教えてくれる道具など)も一緒に使って、もっと「ここだ!」というタイミングでだけ売り買いするようにします。
- 損を小さくするために、「損切り」のルールをもっと厳しくします。少しでも予想が外れたら、すぐにやめるようにする、ということです。
- いつでも売り買いするのではなく、時間帯を決めたり、値段が活発に動いている時だけにするなど、作戦を使う場面を考えてみます。
実用性の向上(運用上の注意)
- この作戦だけで売り買いするのではなく、他の分析方法と組み合わせることで、もっと確かなタイミングを探してみましょう。
- 5分ごとの値動きはとても速いので、焦ったりせず、自分で決めたルールを冷静に守ることがとても大切です。
- 本当のお金で始める前に、必ず少額で試したり、ゲームのような練習(デモ取引)で、自分に合っているか確かめてみましょう。
検証の透明性と信頼性
- データの出所: このレポートで使っているのは、練習用の架空のデータです。
- 検証のやり方: この作戦がうまくいくかは、過去の値段のデータを使って、コンピューターで「もしも」の実験(シミュレーション)をして確かめました。
- コード: この実験をしたプログラムの設計図(コード)は、みんなが見られるようになっています。
- 注意事項: このレポートは、あくまで情報をお伝えするものです。「これをやれば儲かるよ!」とオススメしているわけではありません。もし本当にお金を使って挑戦するなら、自分の判断と責任でお願いしますね。過去にうまくいったからといって、未来もうまくいくとは限りません。