シェア:

ビットコインの動きを読む!「買いの元気」と「売りの元気」を見つけるエルダーレイ作戦

この作戦は、ビットコインというデジタルなお金が、1時間ごとにどう動くかを見て、いつ買ったり売ったりすればいいかを探す方法です。これを、約1年半のデータで試してみました。この作戦で、ビットコインの値段の「元気」をはかって、上手に取引できるようになりましょう!

取引数
401
勝率
27.93%
最終リターン
-65.46%
最大DD
71.54%

導入と前提条件

この作戦は、ビットコインというデジタルなお金が、1時間ごとにどう動くかを見て、いつ買ったり売ったりすればいいかを探す方法です。これを、約1年半のデータで試してみました。この作戦で、ビットコインの値段の「元気」をはかって、上手に取引できるようになりましょう!

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

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

Elder Ray の理論的背景

この作戦は、「ビットコインの世界では、いつも買いたい人と売りたい人が力比べをしている」という考えが元になっています。みんなが思う「だいたいの値段」(平均線)は、今の値段が高いか安いかの目安になります。もし、「一番安い値段」がこの平均線よりも上になったら、それは「売りたい人の元気がなくなって、買いたい人が元気になってきた!」というサインかもしれません。逆に、「一番高い値段」が平均線より下になったら、それは「買いたい人の元気がなくなって、売りたい人が元気になってきた!」というサインかもしれません。この元気の変化をつかまえて、次の動きを読もうというのが、この作戦の考え方です。

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

エントリー条件

  • 「だいたいの値段」(平均線)が右肩上がりで、さらに「売りたい人の元気がなくなって、買いたい人が元気になってきた」というサインが出たら、ビットコインを買います。
  • 特に、さっきまで売りたい人が元気だったのに、急に買いたい人が元気になった!という変化の瞬間がチャンスです。

エグジット条件

  • 「だいたいの値段」(平均線)が右肩下がりで、さらに「買いたい人の元気がなくなって、売りたい人が元気になってきた」というサインが出たら、持っているビットコインを売ります。
  • さっきまで買いたい人が元気だったのに、急に売りたい人が元気になった!という変化の瞬間が売りどきです。

リスク管理

もし予想が外れてしまい、損が出始めたら、すぐにその取引を「やーめた!」と終わらせます。これを「損切り(そんぎり)」と言います。こうすることで、被害が大きくなるのを防ぐんです。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数401回
勝率27.93%
平均利益2.42%
平均損失-1.27%
期待値-0.24%
プロフィットファクター0.75
最大ドローダウン71.54%
最終リターン-65.46%
シャープレシオ-0.29
HODL(Buy&Hold)148.36%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
#!/usr/bin/env python3
"""
Elder Ray戦略
ブルパワーとベアパワーでトレンドを測定
"""
import pandas as pd
import numpy as np


def calculate_elder_ray_signals(df: pd.DataFrame, ema_period: int = 13) -> pd.DataFrame:
    """
    Elder Rayシグナルを生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    ema_period : int
        EMA計算期間(デフォルト: 13)
    
    Returns:
    --------
    pd.DataFrame
        シグナル列が追加されたDataFrame
    """
    df = df.copy()
    
    # EMA計算
    df['ema'] = df['close'].ewm(span=ema_period, adjust=False).mean()
    
    # Bull Power(買い圧力)
    df['bull_power'] = df['high'] - df['ema']
    
    # Bear Power(売り圧力)
    df['bear_power'] = df['low'] - df['ema']
    
    # パワーバランス
    df['power_balance'] = df['bull_power'] + df['bear_power']
    
    # シグナル生成
    # 買い:EMA上昇中、Bear Powerが負から正へ
    df['is_buy'] = (
        (df['ema'] > df['ema'].shift(1)) &  # EMA上昇中
        (df['bear_power'] > 0) &  # Bear Powerが正
        (df['bear_power'].shift(1) <= 0)  # 前期間は負
    )
    
    # 売り:EMA下降中、Bull Powerが正から負へ
    df['is_sell'] = (
        (df['ema'] < df['ema'].shift(1)) &  # EMA下降中
        (df['bull_power'] < 0) &  # Bull Powerが負
        (df['bull_power'].shift(1) >= 0)  # 前期間は正
    )
    
    # NaN値をFalseに置換
    df['is_buy'] = df['is_buy'].fillna(False)
    df['is_sell'] = df['is_sell'].fillna(False)
    
    print(f"Elder Ray: EMA期間={ema_period}")
    print(f"買いシグナル数: {df['is_buy'].sum()}")
    print(f"売りシグナル数: {df['is_sell'].sum()}")
    
    return df

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

  1. 1この作戦は、ビットコインの値段が大きく動くチャンスをねらっていたので、たくさん取引をしました。でも、残念ながら結果はマイナスになってしまいました。
  2. 2勝った回数が少なかったのは、値段の元気がコロコロ変わってしまって、予想が当たりにくかったからだと考えられます。
  3. 3一度にすごく大きく損をしてしまったことがあったので、最終的なマイナスも大きくなりました。これは、予想が大きく外れたり、「損切り」のルールがうまく働かなかったりしたときに起こります。

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

  1. 1たくさん取引すれば儲かる、というわけではないことが分かりました。
  2. 2値段の「元気」を見るだけでは、ビットコインの複雑な動きを全部は読みきれないことがある、と知りました。
  3. 3損を小さくするための「損切り」というルールを、もっとうまく使う必要があると学びました。

リスク管理の具体的手法

取引量の決め方

一回の取引で使うお金は、自分が持っているお小遣いのごく一部(例えば100分の1とか)だけにします。そうすれば、もし失敗しても、大ケガをしなくて済みます。

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

もし、持っているお金が一番多かった時から、すごく減ってしまったら(これを最大ドローダウンと言います)、一度取引をお休みして、作戦を考え直すことが大切です。7割以上も減ってしまうのは、とても危ないサインです。

資金管理の方法

「この取引で、もし負けても失っていいのはここまで」という上限を、あらかじめ決めておくことがとても大事です。利益が出ているときは、その利益を元手にもう少し取引を増やすこともできますが、慎重に進める必要があります。

改良案の具体的提案

  • 「今だ!」と思って買う・売るための条件を、もっと厳しくして、本当にチャンスの時だけ取引するようにします。
  • 損が大きくなる前に、自動で取引をストップする「損切り」の仕組みを、もっと上手に設定します。
  • 天気予報で気温や湿度、風の強さなど色々な情報を見るように、他の道具(テクニカル指標)も一緒に使って、もっと確かなチャンスを見つけるようにします。

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

  • この作戦は、ビットコインみたいに値段の上がり下がりが激しいものに向いていますが、その分、大きく損をする可能性もあるので注意が必要です。
  • 作戦のルールを少し変えるだけで、結果が全然ちがってくることがあります。自分に合ったやり方を見つけるために、色々と試してみるのがおすすめです。
  • この作戦を実際のお金で試す前に、過去のデータで「練習試合」(バックテスト)をしてみましょう。どれくらい危ないのか、しっかり確かめておくことが大切です。

検証の透明性と信頼性

  • データの出所: この作戦の結果は、みんなが見られるビットコイン(BTC/USDT)の1時間ごとのデータを使って計算しました。
  • 検証のやり方: この計算は、パソコンのプログラミングで行いました。データ分析でよく使われる道具(Pythonや専門のライブラリ)を使って、間違いがないか何度も確かめました。
  • コード: この計算に使ったプログラムの設計図(コード)は、誰でも見られるようになっています。興味があれば、どんな計算をしているか見たり、自分で動かしてみたりできます。
  • 注意事項: このお話は、昔のデータを見て考えたもので、未来も同じようにうまくいくとは限りません。お金を増やす挑戦(投資)には、損をする可能性も必ずあります。やるときは、自分でよく考えて、自分の責任で行ってくださいね。

よくある質問

Q.ビットコインって何?

A.インターネット上で使える、デジタルなお金のことだよ。銀行や国が管理している円やドルとはちょっと違うんだ。

Q.「勢い」とか「元気」ってどうやって見るの?

A.この作戦では、「だいたいの値段」と「その時間のいちばん高い値段や安い値段」を比べて、買いたい人と売りたい人のどっちが元気か(勢いがあるか)を調べているんだ。

Q.勝率が低いって、ダメなの?

A.勝つ回数が少ないってことだね。たまに勝って少しプラスになっても、負ける回数が多くてそのたびに損をしていると、全部合わせるとマイナスになっちゃうことがあるんだ。

Q.「最大DD」って何?

A.「最大ドローダウン」のことで、持っているお金が一番多かった時から、一番ガクンと減っちゃった時の下げ幅のこと。これが大きいと、すごく大きなピンチがあったってことなんだ。

Q.この作戦、どうすればもっと良くなる?

A.例えば、「これは本当にチャンスだ!」という時だけ取引するようにルールを厳しくしたり、予想が外れたらすぐに取引をやめる「損切り」をもっと徹底したりすると、もっと良い作戦になるかもしれないね。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報