ビットコインが急に動く時をねらえ!「取引量ブレイクアウト」作戦
この記事では、ビットコインの値段が大きく動き出す瞬間をつかまえる「取引量ブレイクアウト」という作戦を、中学生のみなさんにも分かるように説明します。難しい言葉は使わずに、取引の基本からやり方まで、やさしくお話ししますね。
導入と前提条件
この記事では、ビットコインの値段が大きく動き出す瞬間をつかまえる「取引量ブレイクアウト」という作戦を、中学生のみなさんにも分かるように説明します。難しい言葉は使わずに、取引の基本からやり方まで、やさしくお話ししますね。
【検証】戦略のバックテスト概要
- 戦略名: Volume Breakout を使用したトレンド追従戦略
- 対象銘柄: BTC/USDT
- 時間足: 5m
- 期間: 2024-08-25〜2025-08-25(364日間)
- 初期資金: $10,000
- 手数料・スリッページ: 0.1% / 0.1%
- 取引所: binance
Volume Breakout の理論的背景
この作戦は、「みんなが注目すると、値段は大きく動く」という考えがもとになっています。いつもより取引量が急に増えるのは、たくさんの人が「この値段は安すぎる!」とか「高すぎる!」と感じて、みんなが一斉に取引を始めるサインだと考えられます。特に、取引量がいつもの2倍以上になって、さらに値段が1%以上動いたときは、大きな値動きのチャンスかもしれない、と考えて取引を始めるんです。みんなで同じ方向に向かって、一斉に走り出すようなイメージですね。
具体的な売買ルール(今回の検証)
エントリー条件
- 取引された量が、最近20日間の平均の2倍を超えたとき
- そのタイミングで、値段が1%以上上がったら(買うチャンス)
- そのタイミングで、値段が1%以上下がったら(売るチャンス)
エグジット条件
- 取引を始めて、目標にしていた利益が出たとき
- 取引を始めて、これ以上損をしたくないと決めていた金額に達したとき
- 値段の動きの勢いがなくなってきたな、と感じたとき
リスク管理
大きな損をしないために、1回の取引で使うお金の上限をあらかじめ決めておきます。もし予想と反対に値段が動いて損が出始めたら、すぐに取引をやめるルールも作っておきます。こうすることで、大きな失敗をする危険を減らせるんです。
再現手順(HowTo)
- Python/依存(ccxt, pandas, ta)をインストール
- ccxtでBTC/USDTのOHLCVを取得して前処理
- 『Volume Breakout』に必要な指標を算出(ta 等)
- 閾値・クロス条件から売買シグナルを生成
- 手数料・スリッページを加味して検証・評価
【結果】パフォーマンス
価格の推移
資産の推移
パフォーマンス指標
指標 | 値 |
---|---|
総トレード数 | 22回 |
勝率 | 50% |
平均利益 | 8.62% |
平均損失 | -3.24% |
期待値 | 2.69% |
プロフィットファクター | 2.32 |
最大ドローダウン | 23.06% |
最終リターン | 63.46% |
シャープレシオ | 0.07 |
HODL(Buy&Hold) | 75.42% |
HODL戦略との比較
実装コード(Python)
#!/usr/bin/env python3
"""
出来高ブレイクアウト戦略
平均出来高の倍数以上でブレイクアウト確認
"""
import pandas as pd
import numpy as np
def calculate_volume_breakout_signals(df: pd.DataFrame, volume_period: int = 20,
volume_multiplier: float = 1.5, price_threshold: float = 0.002) -> pd.DataFrame:
"""
出来高ブレイクアウトシグナルを生成
Parameters:
-----------
df : pd.DataFrame
OHLCVデータ
volume_period : int
出来高移動平均期間(デフォルト: 20)
volume_multiplier : float
出来高倍率(デフォルト: 2.0)
price_threshold : float
価格変動閾値(デフォルト: 0.01 = 1%)
Returns:
--------
pd.DataFrame
シグナル列が追加されたDataFrame
"""
df = df.copy()
# 出来高移動平均
df['volume_ma'] = df['volume'].rolling(window=volume_period).mean()
# 出来高比率
df['volume_ratio'] = df['volume'] / df['volume_ma']
# 価格変動率
df['price_change'] = (df['close'] - df['close'].shift(1)) / df['close'].shift(1)
# シグナル生成
df['is_buy'] = (
(df['volume_ratio'] > volume_multiplier) & # 出来高急増
(df['price_change'] > price_threshold) # 価格上昇
)
df['is_sell'] = (
(df['volume_ratio'] > volume_multiplier) & # 出来高急増
(df['price_change'] < -price_threshold) # 価格下降
)
# NaN値をFalseに置換
df['is_buy'] = df['is_buy'].fillna(False)
df['is_sell'] = df['is_sell'].fillna(False)
print(f"出来高ブレイクアウト: 期間={volume_period}, 倍率={volume_multiplier}")
print(f"買いシグナル数: {df['is_buy'].sum()}")
print(f"売りシグナル数: {df['is_sell'].sum()}")
return df
なぜこの結果になったのか(3つの理由)
- 1取引量が急に増えるのは、お金をたくさん持っているプロの投資家たちが取引を始めたサインかもしれないからです。
- 2取引量の急増と値段の急な動きが同時に起こると、その勢いがしばらく続く可能性が高いと考えられるからです。
- 3昔のデータで、この作戦が利益を出しやすい傾向にあることが確認できたからです。
この結果から学べる3つの教訓
- 1取引された量(出来高)は、値段の動きだけでなく、みんながどれくらいそのコインに注目しているかを知るヒントになります。
- 2値段が急に動くときは、大きなチャンスですが、同時に大きな損をする危険もあることを理解することが大切です。
- 3取引のルールをきちんと決めて、それを守ることが、安定して良い結果を出すためにとても重要です。
リスク管理の具体的手法
取引量の決め方
1回の取引では、自分が持っているお金の何パーセントまでしか使わない、と決めます。例えば、10万円持っていたら、1回の取引で使うのは1000円まで、というようにルールを決めます。
損失が大きくなったときの対処法
もし損がふくらんで、持っているお金の10%など、決めておいた金額を超えてしまったら、その日はもう取引をお休みする、といったルールを作ります。
資金管理の方法
取引で出た利益は、全部使わずに、一部を貯金したり、次の取引のためのお金を増やしたりして、大切に管理します。将来も安定して取引を続けるための計画を立てることが大事です。
改良案の具体的提案
- 値段の動きの勢いが弱くなってきたら、自動で取引をやめるような仕組みを入れると、もっと良くなるかもしれません。
- その時々の状況に合わせて、取引を始めるルールの数字(取引量の基準や値段の基準)を自動で変えるようにする。
- 5分ごとのグラフだけでなく、1時間ごとのグラフなど、他の時間のグラフも見て、もっと確実なタイミングを見つけ出す。
実用性の向上(運用上の注意)
- この作戦は、ビットコインみたいに値段が大きく動きやすいコインに向いています。
- いきなり大金で始めるのではなく、まずは少額で試してみて、このルールが自分に合っているか確認しましょう。
- 焦ったり、欲張ったりせず、自分で決めたルールを冷静に守ることが、うまくいくコツです。
検証の透明性と信頼性
- データの出所: この作戦は、過去のビットコインの値段と取引量のデータを使って調べられました。
- 検証のやり方: 昔のデータを使って、もしこの作戦で取引していたら、どれくらい利益が出たか、または損が出たかを計算して、効果があるかどうかを確かめました。
- コード: この作戦をコンピューターで動かすためのプログラム(コード)は、誰でも見られるようになっています。興味があれば、その中身を見て、どんな仕組みで取引しているのかを詳しく知ることもできます。
- 注意事項: この作戦は、あくまで過去のデータにもとづいたもので、将来も同じように利益が出ることを保証するものではありません。取引には必ずリスクがあるので、自分自身でよく考えて、責任を持って行ってくださいね。