ビットコインの波に乗ろう!「スーパートレンド」でわかる、かんたん投資のヒント
「スーパートレンド」という便利な道具を使って、ビットコインの値段が今、上がっているか下がっているかを見分ける方法を紹介します。5分ごとの短い時間で、売り買いのチャンスをたくさん見つけるコツを学びましょう。
取引数
46
勝率
47.83%
最終リターン
+4.70%
最大DD
41.02%
導入と前提条件
「スーパートレンド」という便利な道具を使って、ビットコインの値段が今、上がっているか下がっているかを見分ける方法を紹介します。5分ごとの短い時間で、売り買いのチャンスをたくさん見つけるコツを学びましょう。
【検証】戦略のバックテスト概要
- 戦略名: SuperTrend を使用したトレンド追従戦略
- 対象銘柄: BTC/USDT
- 時間足: 5m
- 期間: 2024-08-25〜2025-08-25(364日間)
- 初期資金: $10,000
- 手数料・スリッページ: 0.1% / 0.1%
- 取引所: binance
SuperTrend の理論的背景
「スーパートレンド」は、値段があまり動いていないときは静かにしていて、値段が大きく動き始めたら「今だ!」とその流れに乗ろうとする考え方です。値段がどれくらい動くかを計算して、ある線を上に超えたら「上昇中!」、下に抜けたら「下降中!」と判断します。この流れが変わる瞬間に、買うタイミングや売るタイミングを探すんです。
具体的な売買ルール(今回の検証)
エントリー条件
- 「買いのチャンス!」のサインが出たとき
- 値段がグングン上がり始めたとき
エグジット条件
- 持っているビットコインを売る「売りのチャンス!」のサインが出たとき
- 値段の上がる勢いがなくなってきたとき
リスク管理
損を大きくしないために、1回の売り買いで「ここまでなら損しても大丈夫」という金額を先に決めておきます。もし思ったより損が大きくなったら、あせらずに一度お休みすることも大事ですよ。
再現手順(HowTo)
- Python/依存(ccxt, pandas, ta)をインストール
- ccxtでBTC/USDTのOHLCVを取得して前処理
- 『SuperTrend』に必要な指標を算出(ta 等)
- 閾値・クロス条件から売買シグナルを生成
- 手数料・スリッページを加味して検証・評価
【結果】パフォーマンス
価格の推移
資産の推移
パフォーマンス指標
指標 | 値 |
---|---|
総トレード数 | 46回 |
勝率 | 47.83% |
平均利益 | 3.88% |
平均損失 | -3.08% |
期待値 | 0.25% |
プロフィットファクター | 1.05 |
最大ドローダウン | 41.02% |
最終リターン | 4.7% |
シャープレシオ | 0.02 |
HODL(Buy&Hold) | 75.36% |
HODL戦略との比較
実装コード(Python)
strategy.py
#!/usr/bin/env python3
"""
SuperTrend戦略
ATRベースの動的トレンドフォロー
"""
import pandas as pd
import numpy as np
def calculate_supertrend_signals(df: pd.DataFrame, atr_period: int = 10,
multiplier: float = 2.5) -> pd.DataFrame:
"""
SuperTrendシグナルを生成
Parameters:
-----------
df : pd.DataFrame
OHLCVデータ
atr_period : int
ATR計算期間(デフォルト: 10)
multiplier : float
ATR倍率(デフォルト: 1.5)
Returns:
--------
pd.DataFrame
シグナル列が追加されたDataFrame
"""
df = df.copy()
# ATR計算
df['h_l'] = df['high'] - df['low']
df['h_c'] = np.abs(df['high'] - df['close'].shift(1))
df['l_c'] = np.abs(df['low'] - df['close'].shift(1))
df['tr'] = df[['h_l', 'h_c', 'l_c']].max(axis=1)
df['atr'] = df['tr'].rolling(window=atr_period).mean()
# 基準価格(HL/2)
df['hl_avg'] = (df['high'] + df['low']) / 2
# Basic Upper and Lower Bands
df['basic_ub'] = df['hl_avg'] + multiplier * df['atr']
df['basic_lb'] = df['hl_avg'] - multiplier * df['atr']
# Final Bands(シンプル化)
df['final_ub'] = df['basic_ub'].copy()
df['final_lb'] = df['basic_lb'].copy()
# SuperTrendとトレンド計算(シンプル化)
df['supertrend'] = np.nan
df['trend'] = 0
for i in range(atr_period, len(df)):
current_close = df.loc[df.index[i], 'close']
current_ub = df.loc[df.index[i], 'basic_ub']
current_lb = df.loc[df.index[i], 'basic_lb']
if i == atr_period:
# 初期値設定
if current_close > current_ub:
df.loc[df.index[i], 'trend'] = 1
df.loc[df.index[i], 'supertrend'] = current_lb
else:
df.loc[df.index[i], 'trend'] = -1
df.loc[df.index[i], 'supertrend'] = current_ub
else:
prev_trend = df.loc[df.index[i-1], 'trend']
# トレンドの継続と転換を判定
if prev_trend == 1:
if current_close <= current_lb:
# 下降トレンドに転換
df.loc[df.index[i], 'trend'] = -1
df.loc[df.index[i], 'supertrend'] = current_ub
else:
# 上昇トレンド継続
df.loc[df.index[i], 'trend'] = 1
df.loc[df.index[i], 'supertrend'] = current_lb
else: # prev_trend == -1
if current_close >= current_ub:
# 上昇トレンドに転換
df.loc[df.index[i], 'trend'] = 1
df.loc[df.index[i], 'supertrend'] = current_lb
else:
# 下降トレンド継続
df.loc[df.index[i], 'trend'] = -1
df.loc[df.index[i], 'supertrend'] = current_ub
# シグナル生成(トレンド転換時)
df['is_buy'] = (df['trend'] == 1) & (df['trend'].shift(1) == -1)
df['is_sell'] = (df['trend'] == -1) & (df['trend'].shift(1) == 1)
# NaN値をFalseに置換
df['is_buy'] = df['is_buy'].fillna(False)
df['is_sell'] = df['is_sell'].fillna(False)
print(f"SuperTrend: ATR期間={atr_period}, 倍率={multiplier}")
print(f"買いシグナル数: {df['is_buy'].sum()}")
print(f"売りシグナル数: {df['is_sell'].sum()}")
return df
なぜこの結果になったのか(3つの理由)
- 1「スーパートレンド」は、値段の「元気の良さ」を見ているので、値段が上がっている波に乗って、うまく利益を出しやすいからです。
- 25分ごとという短い時間で値段をチェックするので、1日の中に売り買いのチャンスがたくさん見つかるからです。
- 3ずっと持っているだけ(長期保有)よりも、4.7%という良い結果が出たのは、値段の波にうまく乗って、小さな利益をコツコツと積み重ねられたからかもしれません。
この結果から学べる3つの教訓
- 1値段の大きな流れに乗ることが、利益を出すための基本なんだってことがわかります。
- 2「勝率」(勝つ確率)が半分以下でも、1回勝ったときの利益が、負けたときの損より大きければ、全部合わせるとプラスになることがあるって知ることができます。
- 3でも、一番大きく損したときには41.02%も減ってしまった(最大DD)という結果から、損をしないように気をつけること(リスク管理)が、すごく大事だとわかります。
リスク管理の具体的手法
取引量の決め方
1回の売り買いに使うお金は、持っているお金全体の何パーセントまで、と決めておきましょう。そうすれば、一度に大きく損することを防げます。
損失が大きくなったときの対処法
もし、持っているお金が大きく減ってしまったら、あせらずに一度お休みしましょう。落ち着いてから、次の作戦を考えるのが大事です。
資金管理の方法
利益が出たら一部は使ったり貯金したりする、損しちゃっても「取り返そう!」とムキにならない、など、気持ちに流されずに、最初に決めたルール通りにお金を管理しましょう。
改良案の具体的提案
- 設定の数字を色々と変えてみて、もっと良い結果が出る組み合わせを探してみましょう。
- 他の道具(例えば「移動平均線」)と組み合わせて、もっと確かな「買い」や「売り」のサインを見つけるようにしてみましょう。
- 「この値段まで下がったら売る」というルール(損切り)を厳しくして、大きな損(最大DD)をしないように工夫してみましょう。
実用性の向上(運用上の注意)
- このやり方は、値段がはっきりと上がり続けたり、下がり続けたりしているときにうまく機能します。値段があまり動かない「横ばい」の状態だと、間違ったサインが出やすいので注意が必要です。
- 今回の設定の数字は、ビットコインの5分ごとのデータで一番良かったものです。他のコインや、1時間ごとなど違う時間で見るときは、一番良い設定の数字が変わってくるかもしれません。
- 結果として4.7%の利益が出ましたが、一時的には41.02%もお金が減ってしまう可能性もあったので、実際にやるときは、もっと慎重に、少ないお金から試してみるのがおすすめです。
検証の透明性と信頼性
- データの出所: この分析で使ったのは、昔のビットコインの値段の記録データです。
- 検証のやり方: 「もし昔、このやり方で売り買いしていたらどうなったかな?」というのを、過去のデータで試してみました(これをシミュレーションと言います)。
- コード: このやり方をコンピューターで動かすためのプログラムは、みんなが見られるように公開されています。
- 注意事項: これは、あくまで投資のやり方の一つを紹介するもので、「絶対に儲かりますよ」とお約束するものではありません。ビットコインなどの投資は、値段が大きく変わって損をすることもあります。自分でよく考えて、自分の責任でチャレンジしてくださいね。
よくある質問
Q.スーパートレンドって、どうやって使うの?
A.チャートに表示される線の色が緑色に変わったら「買い」、赤色に変わったら「売り」の合図です。そのサインに合わせて売り買いする、というシンプルな使い方です。
Q.5分ごとって短すぎない?もっと長い時間で見られないの?
A.5分ごとのチェックはチャンスが多いですが、サインがたくさん出るので忙しいかもしれません。慣れないうちは、1時間ごとなど、もう少しゆったりした時間で試してみるのも良い方法ですよ。
Q.勝つ確率が半分以下でも、トータルで勝てるの?
A.はい、勝てることがあります。たとえば、10回勝負して4回しか勝てなくても、勝ったときに100円もらえて、負けたときに50円払うルールなら、トータルではプラスになりますよね。このやり方も、そんな風に利益を積み重ねていく考え方です。
Q.最大DDって、どれくらい危ないの?
A.最大DDが41.02%というのは、もし100万円を持っていたら、一番悪いときにはお財布の中身が59万円くらいまで減ってしまう可能性があった、ということです。かなり大きなピンチですよね。だから、そうならないように、しっかり対策を立てることが大切です。
Q.このやり方で、必ず儲かるの?
A.いいえ、残念ながら「絶対に儲かる」という方法はありません。昔のテストで良い成績でも、未来も同じとは限りません。あくまで「こういうやり方もあるんだな」という参考にして、試すときは自己責任でお願いします。
Q.検証に使用した期間と時間足は?
A.5m足で検証しました。期間は記事内の概要をご確認ください。
Q.最終リターンと最大ドローダウンは?
A.最終リターンは4.70%、最大DDは41.02%です。
Q.勝率やPFはどの程度?
A.勝率は47.83%、プロフィットファクターは1.05です。
Q.HODLとの比較結果は?
A.HODLは75.36%でした。記事内の比較表をご覧ください。
Q.手数料やスリッページは考慮済み?
A.はい。バックテスト設定の手数料・スリッページを損益に反映しています。
Q.市場環境はトレンド/レンジどちらに近かった?
A.期間中はトレンド優勢と推測されます。
Q.この戦略は初心者でも扱える?
A.基礎的な指標と検証環境の知識があれば扱えます。まずは少額・デモから。
Q.推奨のリスク管理は?
A.最大DDを踏まえた損切り・ポジションサイジングと、システム停止基準の設定を推奨します。
Q.将来の結果は期待できる?
A.過去の結果は将来を保証しません。市場環境やパラメータ適合性に大きく依存します。
Q.改良の方向性は?
A.トレンド・ボラティリティのフィルター併用、パラメータの再最適化、取引頻度の制御を検討してください。