シェア:

ビットコインでお金を増やす作戦!3本の線で値動きの波に乗る方法

この作戦は、ビットコインの5分ごとの値動きグラフを使って、3本の「平均線」という線がキレイに並んだときに、買ったり売ったりするタイミングを見つける方法です。約1年間このやり方を試してみたんですが、残念ながらうまくいきませんでした。でも、どうして失敗したのかを知ることで、学べることがたくさんあります。

取引数
1608
勝率
14.80%
最終リターン
-99.78%
最大DD
99.78%

導入と前提条件

この作戦は、ビットコインの5分ごとの値動きグラフを使って、3本の「平均線」という線がキレイに並んだときに、買ったり売ったりするタイミングを見つける方法です。約1年間このやり方を試してみたんですが、残念ながらうまくいきませんでした。でも、どうして失敗したのかを知ることで、学べることがたくさんあります。

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

  • 戦略名: Triple EMA を使用したトレンド追従戦略
  • 対象銘柄: BTC/USDT
  • 時間足: 5m
  • 期間: 2024-10-24〜2025-08-25(304日間)
  • 初期資金: $10,000
  • 手数料・スリッページ: 0.1% / 0.1%
  • 取引所: binance

Triple EMA の理論的背景

この作戦の元になる考え方は、「値動きの波に乗る」というものです。値段が上がっている途中なら、その流れに乗って買い、下がっている途中なら、その流れに乗って売ることで、利益を狙います。3本の平均線が順番通りにキレイに並んでいる状態は、値動きに勢いがあるサインだと考えられているんです。難しい計算は使わずに、線の並び方だけで、値動きの方向と勢いを判断しようとする、とても分かりやすい考え方です。

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

エントリー条件

  • 3本の平均線が、上から「短い・真ん中・長い」の順番に並んだとき(買う合図です)
  • 3本の平均線が、下から「短い・真ん中・長い」の順番に並んだとき(売る合図です)

エグジット条件

  • 買っているときに「売る合図」が出たら、取引をやめます。売っているときも同じです。
  • 本当は、「ここまで儲かったらやめる」とか「ここまで損したらやめる」というルールも大切ですが、今回の結果にはそのルールは含まれていませんでした。

リスク管理

今回の結果を見ると、たくさん取引をしたのに、最終的にはお金が大きく減ってしまいました。これは、大きな損をしないためのルールがしっかりしていなかったか、タイミングが悪かった可能性が高いです。本当は、「ここまで損したらやめる(損切り)」というルールを決めて、大きな失敗を防ぐ工夫がとても大切になります。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数1608回
勝率14.8%
平均利益0.91%
平均損失-0.6%
期待値-0.38%
プロフィットファクター0.34
最大ドローダウン99.78%
最終リターン-99.78%
シャープレシオ-1.03
HODL(Buy&Hold)66.69%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
#!/usr/bin/env python3
"""
トリプルEMA戦略
3本のEMAが順番に並んだときに強いトレンドと判定
"""
import pandas as pd
import numpy as np


def calculate_triple_ema_signals(df: pd.DataFrame, fast: int = 8, medium: int = 13, slow: int = 21) -> pd.DataFrame:
    """
    トリプルEMAシグナルを生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    fast : int
        短期EMA期間(デフォルト: 8)
    medium : int
        中期EMA期間(デフォルト: 13)
    slow : int
        長期EMA期間(デフォルト: 21)
    
    Returns:
    --------
    pd.DataFrame
        シグナル列が追加されたDataFrame
    """
    df = df.copy()
    
    # 3本のEMA計算
    df['ema_fast'] = df['close'].ewm(span=fast, adjust=False).mean()
    df['ema_medium'] = df['close'].ewm(span=medium, adjust=False).mean()
    df['ema_slow'] = df['close'].ewm(span=slow, adjust=False).mean()
    
    # パーフェクトオーダーの判定
    df['bullish_order'] = (df['ema_fast'] > df['ema_medium']) & (df['ema_medium'] > df['ema_slow'])
    df['bearish_order'] = (df['ema_fast'] < df['ema_medium']) & (df['ema_medium'] < df['ema_slow'])
    
    # シグナル生成(パーフェクトオーダー成立時)
    df['is_buy'] = (df['bullish_order'] == True) & (df['bullish_order'].shift(1) == False)
    df['is_sell'] = (df['bearish_order'] == True) & (df['bearish_order'].shift(1) == False)
    
    # NaN値をFalseに置換
    df['is_buy'] = df['is_buy'].fillna(False)
    df['is_sell'] = df['is_sell'].fillna(False)
    
    print(f"トリプルEMA: 短期={fast}, 中期={medium}, 長期={slow}")
    print(f"買いシグナル数: {df['is_buy'].sum()}")
    print(f"売りシグナル数: {df['is_sell'].sum()}")
    
    return df

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

  1. 1勝った割合が14.8%と、とても低かったです。つまり、100回取引したら15回くらいしか勝てなかった計算になり、ほとんどの取引でうまくいかなかったようです。
  2. 2最終的に、最初のお金がマイナス99.78%になってしまいました。これは、ほとんど全部のお金を失ってしまったことを意味します。この作戦が、この時期のビットコインの動きには合っていなかったようです。
  3. 3儲けと損のバランス(PF)が0.34と、1を大きく下回りました。これは、儲けたお金よりも、損したお金のほうがずっと多かった、ということです。

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

  1. 1平均線がキレイに並ぶだけでは、必ずうまくいくわけではない、ということが分かりました。うまくいく時もあれば、うまくいかない時もある、ということを学べます。
  2. 2勝つ回数が少なくても、1回でとても大きく勝てれば、全体でプラスになることもあります。でも、今回はそうなりませんでした。損を小さくするルールも、やっぱり大事だということが分かります。
  3. 3昔のデータで『お試し』をしてみることは、実際に取引する前に危ない点を知るためにとても重要です。もし悪い結果が出ても、その原因を考えることが、次に活かすための大切な勉強になります。

リスク管理の具体的手法

取引量の決め方

1回の取引で使うお金は、自分が持っているお金のほんの少し(例えば1%から5%くらい)にすることが大切です。そうすれば、もし負けても、ダメージを小さくできます。

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

今回のように、お金がほとんどゼロになってしまうような大きな損をした場合は、いったん取引をお休みして、作戦や設定を見直す時間が必要です。あせらず、冷静に原因を考えることが大切です。

資金管理の方法

おこづかいの範囲で楽しむのと同じように、もし失っても生活に困らないお金で取引を続けることが基本です。お金が減ってきたら、取引する金額を小さくするなどの調整も必要になります。

改良案の具体的提案

  • 平均線の種類(計算する期間の長さ)を変えて、ビットコインの値動きにもっと合う設定を探してみる、という方法があります。
  • 平均線が並んだ、という情報だけでなく、他の道具(例えば、値動きの勢いや激しさを表すもの)も一緒に見て、もっと確実なタイミングを探す、という工夫も考えられます。
  • 「ここまで損したら必ずやめる」という『損切り』のルールをはっきり決めて、それを絶対に守ることがとても重要です。

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

  • この作戦は、ビットコインの値段がグングン上がったり下がったりしている時にはうまくいくかもしれませんが、値段があまり動かない時には、うまくいかないことが多いです。
  • いきなり本番のお金で始める前に、必ず昔のデータを使って十分にお試しをして、本当にうまくいきそうかを確認することが大切です。今回の結果は、このままではうまくいかないことを示しています。
  • この結果は、あくまで昔のデータで試したものです。未来も同じようにうまくいくとは限りません。いつでも市場の様子に合わせて、作戦を見直す気持ちが大切です。

検証の透明性と信頼性

  • データの出所: この分析は、もらったデータを使って行われました。
  • 検証のやり方: もらったコンピュータープログラムを使って、2024年10月24日から2025年8月25日までの約1年間の、ビットコインの5分ごとの値動きのデータでお試し(バックテスト)をしました。
  • コード: この作戦がどんな計算をしているかは、もらったプログラム(Pythonコード)で確認できます。
  • 注意事項: このお話は、勉強や情報提供のためのもので、投資をオススメするものではありません。もし本当に投資をする場合は、ご自身の判断と責任でお願いします。昔の成績が良かったからといって、将来も同じように良いとは限りません。

よくある質問

Q.平均線(移動平均線)って何?

A.ある期間の値段の『平均点』をつないだ線のことです。ギザギザした値動きをなめらかにして、全体の流れ(トレンド)を見やすくしてくれる便利な道具です。

Q.『パーフェクトオーダー』ってどういう意味?

A.3本の平均線が、値動きの勢いに合わせて「短い線・真ん中の線・長い線」という順番に、キレイに並んでいる状態のことです。値動きに強い勢いがあるサインだと考えられています。

Q.勝つ回数が少ないと、やっぱりダメな作戦なの?

A.必ずしもそうとは限りません。勝つ回数が少なくても、1回勝ったときの利益がとても大きければ、全体ではプラスになることもあります。でも、そのためには、負けたときの損を小さくするルールが絶対に必要です。今回の作戦は、それができなかったようです。

Q.『PF』って何?

A.「プロフィットファクター」の略で、儲けたお金の合計を、損したお金の合計で割った数字です。儲けと損のバランスが分かります。1より大きければ利益が多く、1より小さければ損が多いということです。今回は0.34なので、損の方がずっと大きかったんですね。

Q.この作戦をもっと良くするにはどうしたらいい?

A.平均線を計算する期間を変えてみたり、他の道具(値動きの勢いや激しさを見るもの)と組み合わせたり、『損切り』のルールをしっかり決めて守ったりすることで、もっと良くなる可能性があります。ただ、今回の結果を見ると、根本的な見直しが必要かもしれません。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報