シェア:

虹色チャートで未来を予測?ビットコイン取引の作戦を大解剖!

ビットコイン(BTC)という有名な暗号資産(あんごうしさん)の取引で、「虹色の線」を使った新しい作戦を試してみました。約4ヶ月間、1時間ごとの値動きを見て38回取引した結果、勝てたのは約26%で、最終的には11.64%損をしてしまいました。一番大きくお金が減ったときは、20.71%も減ってしまったんです。この結果について、中学生でもわかるように、わかりやすく説明しますね!

取引数
38
勝率
26.32%
最終リターン
-11.64%
最大DD
20.71%

導入と前提条件

ビットコイン(BTC)という有名な暗号資産(あんごうしさん)の取引で、「虹色の線」を使った新しい作戦を試してみました。約4ヶ月間、1時間ごとの値動きを見て38回取引した結果、勝てたのは約26%で、最終的には11.64%損をしてしまいました。一番大きくお金が減ったときは、20.71%も減ってしまったんです。この結果について、中学生でもわかるように、わかりやすく説明しますね!

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

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

Rainbow Moving Average の理論的背景

この作戦の基本的な考え方は、たくさんの線がきれいな虹の形に並んだら、値段はその方向に動きやすい、というものです。例えば、短い期間の線から長い期間の線までが、上から順番にきれいに並んでいたら、「上がり調子だ!」と考えます。逆に、下から順番に並んでいたら、「下がり調子だ!」と判断します。さらに、実際の値段が、この虹の線たちより上にあるか下にあるかも見て、買うべきか、下がるほうにかけるべきかを決めます。たくさんの線を使うことで、ちょっとした値動きにだまされずに、大きな流れをつかもうとしているんです。

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

エントリー条件

  • 「買うタイミング」:虹の線が上向きにきれいに並んでいて(上がり調子!)、実際の値段がその虹の線よりも上に来たときに買います。
  • 「値段が下がるほうにかけるタイミング」:虹の線が下向きにきれいに並んでいて(下がり調子!)、実際の値段がその虹の線よりも下に来たときに、値段が下がるほうにかけます。

エグジット条件

  • 「取引をやめるタイミング」:買ったり、下がるほうにかけたりした後、値段の勢いが弱くなってきたら取引を終えます。
  • 「取引をやめるタイミング」:予想と反対に値段が動いてしまったときも、損が大きくならないようにすぐに取引を終えます。

リスク管理

損をできるだけ小さくすることが大切です。もし予想と反対に値段が動いてしまったら、すぐに取引をやめて、それ以上損が大きくならないようにします。一度にたくさんのお金を使わず、少しずつ取引することも大事なルールです。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数38回
勝率26.32%
平均利益2.72%
平均損失-1.38%
期待値-0.3%
プロフィットファクター0.7
最大ドローダウン20.71%
最終リターン-11.64%
シャープレシオ-0.24
HODL(Buy&Hold)16.72%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
Rainbow Moving Average Trading Signal
レインボー移動平均を使用したトレンド判定
"""
import pandas as pd
import numpy as np


def calculate_rainbow_moving_average_signals(df: pd.DataFrame,
                                          period: int = 10) -> pd.DataFrame:
    """
    Rainbow Moving Average戦略のシグナル生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    period : int
        基本移動平均期間(デフォルト: 10)
    
    Returns:
    --------
    pd.DataFrame
        シグナルが追加されたDataFrame
    """
    df = df.copy()
    
    # レインボーMA(10本のMA)
    for i in range(1, 11):
        df[f'ma_{i}'] = df['close'].rolling(window=period * i).mean()
    
    # レインボーMAの平均
    ma_cols = [f'ma_{i}' for i in range(1, 11)]
    df['rainbow_avg'] = df[ma_cols].mean(axis=1)
    
    # レインボーの拡散度
    df['rainbow_spread'] = df[ma_cols].std(axis=1)
    
    # トレンド判定
    df['trend_score'] = 0
    for i in range(1, 10):
        df['trend_score'] += np.where(df[f'ma_{i}'] > df[f'ma_{i+1}'], 1, -1)
    
    # シグナル初期化
    df['signal'] = 0
    df['is_buy'] = False
    df['is_sell'] = False
    
    position = 0
    
    for i in range(period * 10, len(df)):
        # 買いシグナル(上昇トレンド)
        if position <= 0 and df['trend_score'].iloc[i] > 2 and df['close'].iloc[i] > df['rainbow_avg'].iloc[i]:
            df.loc[df.index[i], 'is_buy'] = True
            df.loc[df.index[i], 'signal'] = 1
            position = 1
            
        # 売りシグナル(下降トレンド)
        elif position >= 0 and df['trend_score'].iloc[i] < -2 and df['close'].iloc[i] < df['rainbow_avg'].iloc[i]:
            df.loc[df.index[i], 'is_sell'] = True
            df.loc[df.index[i], 'signal'] = -1
            position = -1
        else:
            df.loc[df.index[i], 'signal'] = position
    
    df['signal'] = df['signal'].fillna(0)
    
    return df


def get_strategy_name() -> str:
    """戦略名を返す"""
    return "Rainbow Moving Average"


def get_strategy_description() -> str:
    """戦略の説明を返す"""
    return "レインボー移動平均を使用したトレンド判定戦略"

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

  1. 1この作戦のいいところは、たくさんの線を使うことで、一時的な値動きに惑わされず、大きな流れをつかみやすいことです。
  2. 2虹の線の広がり具合で、値段の勢いの強さもわかるようになっています。
  3. 3でも、今回のテストでは、1回の取引で期待できるもうけがマイナスになってしまい、最終的にも損をしてしまいました。これは、この作戦が今のビットコインの値動きには合っていなかった、ということかもしれません。

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

  1. 1どんな作戦でも、必ずもうかるとは限らないんだ、ということがわかりました。
  2. 2作戦がうまくいかなくても、なぜダメだったのかを考えることが、次につながる大切な一歩だと学びました。
  3. 3今回の結果を見て、この作戦をもっと良くしていく必要があるとわかりました。

リスク管理の具体的手法

取引量の決め方

1回の取引で使うお金は、持っているお金のほんの一部だけにします。こうすれば、もし取引に失敗しても、大損するのを防げます。

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

もし損が続いて、持っているお金が一定の割合まで減ってしまったら、一度取引をお休みします。または、使うお金をさらに減らして、もっと大きな損になるのを防ぎます。

資金管理の方法

取引に使うお金は、普段の生活に必要なお金とは別にします。なくなっても困らない、余裕のあるお金だけを使うのが鉄則です。また、もうかったら少しだけ使うお金を増やし、損したら減らす、といった調整も考えます。

改良案の具体的提案

  • 虹を作る線の種類や数を変えてみて、もっと良い結果が出る組み合わせを探してみます。
  • 買うときや売るときのルールを、もう少し厳しくしたり、逆にゆるくしたりして、ちょうどいいバランスを見つけます。
  • 「これ以上損したらやめる」という損切りのルールを、もっと細かく決めてみるのも良いかもしれません。

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

  • もしこの作戦を試すなら、まずは本当に少ないお金で始めてみましょう。それで、どんな感じかつかんでから本格的にやるのが安全です。
  • 虹の形がきれいかどうか、崩れていないか、いつもグラフをよく見ることが大切です。
  • 取引の記録をつけて、「なぜもうかったのか」「なぜ損したのか」をふりかえることが、上達への一番の近道です。

検証の透明性と信頼性

  • データの出所: このテストは、過去に実際に動いたビットコインの値段のデータを使って行いました。
  • 検証のやり方: 過去の値段のデータを使って、「もしこの作戦で取引していたら、どうなっていたかな?」というシミュレーション(バックテストと言います)をして、結果を確かめました。
  • コード: この作戦をコンピューターで動かすためのプログラムは、だれでも見られるように公開されています。
  • 注意事項: このお話は、過去のデータでの結果です。未来も同じようにうまくいくとは限りません。投資には損をする可能性もあるので、自分自身でよく考えて、自己責任で行ってくださいね。

よくある質問

Q.「移動平均線」って何?

A.ある期間の値段の平均を計算して、それを線でつないだグラフのことだよ。ギザギザした値段の動きをなめらかにしてくれるから、全体の流れ(上がり調子か、下がり調子か)がわかりやすくなるんだ。

Q.「BTC/USDT」ってどういう意味?

A.ビットコイン(BTC)を、テザー(USDT)というコインで買うか売るか、という意味だよ。テザーは、1枚がだいたい1アメリカドルと同じ価値になるように作られた、値段が安定しているコインなんだ。

Q.「1時間足」ってどういうこと?

A.値段の動きを表すグラフの棒(ローソク足)1本が、1時間分の値動きを表している、ということだよ。短い時間での値段の動きを見たいときに使うんだ。

Q.「勝率26.32%」って、良くないの?

A.これは、100回取引したら約26回しか勝てなかった、という意味だよ。4回に1回くらいしか勝てていないから、ちょっと厳しい結果だね。勝率が低くても、1回で大きく勝てればプラスになることもあるけど、今回はそうならなかったんだ。

Q.「最大DD:20.71%」って、どれくらいヤバいの?

A.DD(ドローダウン)は、お金が一番増えた時から、そこから一番減ってしまった時までの下落率のことだよ。20.71%っていうのは、例えば100万円あったお金が、一時的に約79万円まで減っちゃった、ってこと。これは、かなり大きなピンチだと言えるね。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報