シェア:

「MACDシグナル」っていう作戦で投資してみた!その結果からわかること

これは、「MACDシグナル」という作戦を使って、SOL/USDTという仮想通貨を売り買いしてみたらどうなったか、というお話です。短い時間でたくさん取引したのですが、残念ながら結果はあまり良くありませんでした。どうしてそうなったのか、これからどうすればいいのかを一緒に見ていきましょう。

取引数
1762
勝率
21.28%
最終リターン
-99.89%
最大DD
99.90%

導入と前提条件

これは、「MACDシグナル」という作戦を使って、SOL/USDTという仮想通貨を売り買いしてみたらどうなったか、というお話です。短い時間でたくさん取引したのですが、残念ながら結果はあまり良くありませんでした。どうしてそうなったのか、これからどうすればいいのかを一緒に見ていきましょう。

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

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

MACD Signal の理論的背景

MACDは、「短い期間の値段の平均」と「長い期間の値段の平均」を比べることで、今の値段に勢いがあるかどうかを判断する考え方です。平均を計算した2本の線が交わるときは、相場の流れが変わるサインかもしれない、と考えて売り買いのタイミングを決めます。この作戦では、線が交わった後もその勢いが続くと考えて取引しました。

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

エントリー条件

  • 2本の線のうち、動きの速い線が遅い線を下から上に追い越したとき(買う合図)
  • 2本の線のうち、動きの速い線が遅い線を上から下に追い抜いたとき(売る合図)

エグジット条件

  • 一度出た合図と、反対の合図が出たとき
  • 前もって決めておいた利益が出たとき(今回の作戦ではハッキリ決めていませんでしたが、普通は決めます)

リスク管理

大きな損をしないためには、1回の取引で損してもいい金額をあらかじめ決めておくことがとても大切です。もし思ったのと反対に値段が動いてしまったら、すぐに取引をやめて、損が大きくならないようにします。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数1762回
勝率21.28%
平均利益0.8%
平均損失-0.71%
期待値-0.38%
プロフィットファクター0.31
最大ドローダウン99.9%
最終リターン-99.89%
シャープレシオ-1.38
HODL(Buy&Hold)46.44%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
MACD Signal Trading Strategy Generator
MACD(移動平均収束拡散)を使用したトレンドフォロー戦略
"""
import pandas as pd
import numpy as np


def calculate_macd_signals(df: pd.DataFrame,
                          fast_period: int = 12,
                          slow_period: int = 26,
                          signal_period: int = 9) -> pd.DataFrame:
    """
    MACDシグナル戦略のシグナル生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ(最低限 'close' カラムが必要)
    fast_period : int
        短期EMA期間(デフォルト: 12)
    slow_period : int
        長期EMA期間(デフォルト: 26)
    signal_period : int
        シグナルライン期間(デフォルト: 9)
    
    Returns:
    --------
    pd.DataFrame
        以下のカラムが追加されたDataFrame:
        - macd: MACDライン
        - macd_signal: シグナルライン
        - macd_histogram: MACDヒストグラム
        - is_buy: 買いシグナル (bool)
        - is_sell: 売りシグナル (bool)
    """
    df = df.copy()
    
    # EMA(指数移動平均)の計算
    df['ema_fast'] = df['close'].ewm(span=fast_period, adjust=False).mean()
    df['ema_slow'] = df['close'].ewm(span=slow_period, adjust=False).mean()
    
    # MACDラインの計算
    df['macd'] = df['ema_fast'] - df['ema_slow']
    
    # シグナルラインの計算(MACDのEMA)
    df['macd_signal'] = df['macd'].ewm(span=signal_period, adjust=False).mean()
    
    # MACDヒストグラム
    df['macd_histogram'] = df['macd'] - df['macd_signal']
    
    # 前日のMACD値
    df['macd_prev'] = df['macd'].shift(1)
    df['macd_signal_prev'] = df['macd_signal'].shift(1)
    
    # 買いシグナル: MACDラインがシグナルラインを下から上にクロス(ゴールデンクロス)
    df['is_buy'] = (
        (df['macd'] > df['macd_signal']) & 
        (df['macd_prev'] <= df['macd_signal_prev']) &
        df['macd'].notna() &
        df['macd_signal'].notna()
    )
    
    # 売りシグナル: MACDラインがシグナルラインを上から下にクロス(デッドクロス)
    df['is_sell'] = (
        (df['macd'] < df['macd_signal']) & 
        (df['macd_prev'] >= df['macd_signal_prev']) &
        df['macd'].notna() &
        df['macd_signal'].notna()
    )
    
    # 不要な中間カラムを削除
    df.drop(['ema_fast', 'ema_slow', 'macd_prev', 'macd_signal_prev'], axis=1, inplace=True)
    
    return df

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

  1. 1この作戦は、値段の勢いを見つけようとしますが、5分ごとのような短い時間で見ると、ほんの少しの動きにも反応しすぎてしまいます。そのため、「うそのサイン」がたくさん出てしまって、勝つ回数が少なくなったのかもしれません。
  2. 2全部で1762回も取引したのに、勝てたのは5回に1回くらいでした。これだと、勝ったときにもらえるお金より、たくさん負けたときに失うお金の方がずっと大きくなってしまい、最後には大きなマイナスになったと考えられます。
  3. 3「プロフィットファクター」という成績を見る数字が、1よりずっと小さい0.31でした。これは、稼いだお金よりも失ったお金の方が圧倒的に多かった、ということを示しています。作戦自体か、そのときの相場の状況に合っていなかった可能性が高いです。

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

  1. 1たくさん取引すればもうかる、というわけではないことがよく分かりました。むしろ、合図が出すぎることで、しなくてもいい取引が増えてしまうことがあるんですね。
  2. 2勝つ回数だけでなく、「1回勝つといくらもうかるか」「1回負けるといくら損するか」というバランスが、作戦が良いか悪いかを判断するためにすごく大事なんだと学びました。
  3. 3どんなに「これは良さそうだ!」と思う作戦でも、実際に試してみると、思ったような結果にならないことがあります。いつでも試して、ダメなところは直していくことが大切だと感じました。

リスク管理の具体的手法

取引量の決め方

1回の取引に使うお金を、自分が持っているお金のほんの一部(例えば100分の1とか)に決めておけば、もし負けてしまっても、全体のお金が大きく減るのを防ぐことができます。

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

もし、持っているお金が10分の1のように、決めておいた額以上に減ってしまったら、一度全部の取引をやめて、作戦を見直す時間を作ります。今回、お金がほとんど無くなってしまったのは、このルールがうまく働いていなかったからかもしれません。

資金管理の方法

もうかっている時も、損している時も、焦ったりせず、いつも同じルール通りに取引を続けることが大切です。気持ちに流されず、計画的にお金を管理します。

改良案の具体的提案

  • 5分ごとの値動きではなく、もっと長い時間(例えば1時間ごとや4時間ごと)で見るようにすれば、「うそのサイン」が減って、もっと確かな合図を見つけられるかもしれません。
  • MACDだけでなく、他の道具(例えば、値動きの大きさをはかるもの)も一緒に使うことで、合図が本当に正しいかのチェックができて、もっとうまくいくかもしれません。
  • 「これ以上損したらやめる」というルール(損切り)をきちんと決めておけば、今回のように、持っているお金がほとんど全部なくなってしまうような最悪の事態は防げるはずです。

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

  • このMACDシグナルの作戦は、今回の結果を見ると、そのまま使うのはとても危ないです。もし試してみたいなら、自分のお金を使う前に、昔のデータでうまくいくか、しっかりテストすることが大切です。
  • 取引する仮想通貨の種類や、見る時間を変えるだけで、結果が良くなることもあります。色々な条件で試してみるのもいいかもしれません。
  • この結果は、あくまで過去のデータで試したものです。未来も同じように動くとは限らないので、投資は自分の判断と責任で行うようにしましょう。

検証の透明性と信頼性

  • データの出所: このお話は、仮想通貨SOL/USDTの5分ごとの実際の値動きのデータをもとに作られています。
  • 検証のやり方: 昔のデータを使って、「もし、この作戦で決められた期間に取引していたら、どうなっていたか」をコンピューターで再現して、成績を計算しました。
  • コード: この計算をするためのコンピュータープログラム(Pythonコード)も公開されています。
  • 注意事項: このお話は「投資をしよう!」とおすすめするものではありません。投資には、お金が減ってしまう危険もあります。最後は、自分でよく考えて判断してくださいね。

よくある質問

Q.MACDって何?

A.MACDは、値段の動きに「勢い」があるかどうかを教えてくれる道具の一つです。2本の線が描かれていて、その線が交わったときを、売り買いのタイミングの合図として使ったりします。

Q.勝つ回数が少なくても、もうかることはあるの?

A.はい、ありますよ。例えば、「勝つときは1000円もうかるけど、負けるときは100円しか損しない」というルールで取引したとします。もし1回勝って、5回負けたとしても、もうけは1000円で、損は合計500円なので、全体ではプラスになります。このように、勝つ回数よりも、勝った時と負けた時の金額のバランスが大切なんです。

Q.「最大DD:99.9%」ってどういう意味?

A.これは、「最大ドローダウン」といって、投資を始めてからお金が一番減ってしまった時の割合のことです。「99.9%」ということは、持っていたお金が、一時的にせよ、ほとんど全部なくなってしまった状態になった、という意味です。とても危険な状態ですね。

Q.HODLって何?

A.HODL(ホドル)は、仮想通貨などを買ったら、すぐに売ったりしないで、長い間ずっと持っておくことです。今回の結果では、「もしこの作戦を使わずに、ただ買って持っているだけだったら、どうなっていたか」も比較のために示されています。

Q.この作戦は使っても大丈夫?

A.今回の結果を見るかぎり、このまま使うのはとても危険です。お金を大きく失ってしまう可能性が高いからです。もし使うなら、このお話で出てきた「改善できそうな点」などを参考にして、もっと安全な方法を自分で考えて、しっかりテストしてからにしましょう。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報