シェア:

ビットコインの値段を予想!『DMIクロス』作戦をわかりやすく解説します

このページでは、『DMIクロス』っていう作戦を紹介します。これは、ビットコインの値段が上がる勢いがあるか、下がる勢いがあるかを見て、「いつ買うか」「いつ売るか」を決める方法なんです。この作戦が本当にうまくいくのか、1時間ごとに値段をチェックして、約1年半テストしてみました。さて、結果はどうだったんでしょうか?一緒に見ていきましょう!

取引数
585
勝率
22.91%
最終リターン
-84.33%
最大DD
84.67%

導入と前提条件

このページでは、『DMIクロス』っていう作戦を紹介します。これは、ビットコインの値段が上がる勢いがあるか、下がる勢いがあるかを見て、「いつ買うか」「いつ売るか」を決める方法なんです。この作戦が本当にうまくいくのか、1時間ごとに値段をチェックして、約1年半テストしてみました。さて、結果はどうだったんでしょうか?一緒に見ていきましょう!

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

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

DMI Cross の理論的背景

この作戦は、値段の『勢い』に注目するのがポイントです。値段が上がろうとするパワーと、下がろうとするパワーを比べるんですね。もし、上がるパワーが強くなったら、「これから値段は上がりやすいんじゃないか?」と考えます。逆に、下がるパワーが強くなったら、「値段は下がりやすいんじゃないか?」と予想します。このパワーの変わり目を見つけて、うまく取引しよう!というのがこの作戦の考え方です。

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

エントリー条件

  • 「上り坂線」が「下り坂線」を追い越したとき、つまり上がる勢いが強くなったときが「買い」の合図です。

エグジット条件

  • 「下り坂線」が「上り坂線」を追い越したとき、つまり下がる勢いが強くなったときが「売り」の合図です。

リスク管理

もし取引がうまくいかなくても、大きな損をしないためのルールも大事です。「もし予想が外れたら、これ以上損しないようにすぐにやめる」と、あらかじめ決めておくんです。これを「損切り」と言います。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数585回
勝率22.91%
平均利益1.77%
平均損失-0.92%
期待値-0.3%
プロフィットファクター0.57
最大ドローダウン84.67%
最終リターン-84.33%
シャープレシオ-0.62
HODL(Buy&Hold)53.4%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
DMI Cross Signal
DI+ と DI- のクロスで判定するのだ。
"""
import pandas as pd
import numpy as np


def _tr(df: pd.DataFrame) -> pd.Series:
    prev_close = df['close'].shift(1)
    tr = pd.concat([
        (df['high'] - df['low']).abs(),
        (df['high'] - prev_close).abs(),
        (df['low'] - prev_close).abs()
    ], axis=1).max(axis=1)
    return tr


def _dm(df: pd.DataFrame):
    up = df['high'].diff()
    down = -df['low'].diff()
    plus_dm = np.where((up > down) & (up > 0), up, 0.0)
    minus_dm = np.where((down > up) & (down > 0), down, 0.0)
    return pd.Series(plus_dm, index=df.index), pd.Series(minus_dm, index=df.index)


def calculate_dmi_cross_signals(df: pd.DataFrame, period: int = 14) -> pd.DataFrame:
    out = df.copy()
    trn = _tr(out).rolling(period).sum()
    plus_dm, minus_dm = _dm(out)
    plus_di = 100 * (plus_dm.rolling(period).sum() / trn)
    minus_di = 100 * (minus_dm.rolling(period).sum() / trn)
    out['plus_di'] = plus_di
    out['minus_di'] = minus_di
    prev = (plus_di - minus_di).shift(1)
    now = plus_di - minus_di
    out['is_buy'] = (now > 0) & (prev <= 0)
    out['is_sell'] = (now < 0) & (prev >= 0)
    return out

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

  1. 1ビットコインは、値段の動きがとても激しいんです。だから、「よし、上がるぞ!」という合図が出たと思ったら、すぐに下がってしまう、というような「だまし」の合図が多かったのかもしれません。
  2. 2勝った割合が23%くらいと低かったのは、この『DMIクロス』の合図だけを信じるのは、ちょっと情報不足だったからかもしれません。天気予報みたいに、他の情報も合わせて考えないと、予想は当たりにくくなるんですね。
  3. 3最終的にお金がすごく減ってしまった一番の理由は、勝って得した金額よりも、負けて損した金額の方がずっと大きかったからです。特に「もう少し待てば値段が戻るかも…」と思って損したまま持ち続けると、どんどん損がふくらんでしまうことがあるんです。

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

  1. 1『DMIクロス』という一つの道具だけで、複雑なビットコインの値段の動きをぜんぶ知るのは、やっぱり難しいみたいです。
  2. 2勝つ回数が少なくても、一回勝ったときにすごく大きく勝てれば、全部合わせるとプラスになることもあります。でも、今回のテストでは、それがうまくできませんでした。
  3. 3お金が一番減ったときに84%も減ってしまった、という結果を見ると、「損を大きくしないための工夫(リスク管理)」が足りなかったことがわかります。傷が浅いうちに手当てすることが大事なんですね。

リスク管理の具体的手法

取引量の決め方

1回の取引に、持っているお金のぜんぶを使うのはとても危険です。例えば「1回の取引で使うのは、持っているお金の2%まで」と決めておけば、もし負けてもダメージは小さくてすみます。

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

もし、持っているお金がぜんぶで10%減ってしまったら、その日は取引をやめて作戦を見直す、というルールです。車でいうブレーキのようなもので、事故をふせぐことができます。

資金管理の方法

投資に使うお金は、普段の生活に使うお金(おこづかいや将来のための貯金)とは、きちんと分けましょう。なくなっても困らない「余裕のあるお金」でやることが、とても大事なルールです。

改良案の具体的提案

  • 『DMIクロス』の合図が出ても、すぐに飛びつかない。他の道具(例えば、値段の平均を見る『移動平均線』など)も使って、「本当に今がチャンスかな?」とダブルチェックするようにします。
  • 値段の動きがはっきりしない、どっちつかずの時は、無理に取引しない。「休むも相場」という言葉があるように、チャンスが来るまでじっくり待つルールを追加します。
  • 「もし、これだけ損をしたら、今日はもうおしまい!」というような、もっと厳しいストップルールを作ります。冷静になる時間を作ることも大切なんです。

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

  • 『DMIクロス』は便利な道具の一つですが、これだけを信じるのは危険です。ニュースを見たり、他の道具を使ったりして、色々な角度から考えるクセをつけましょう。
  • 今回のテスト期間は、たまたまビットコイン全体の調子が悪かった時期だったかもしれません。違う時期にテストしたら、もっと良い結果が出た可能性もあります。
  • この作戦で勝つためのカギは、「損は小さく、利益は大きく(損小利大)」です。勝つ回数を増やすことよりも、一回ごとの取引で、損をすぐにやめて、利益はできるだけ伸ばすことを目指しましょう。

検証の透明性と信頼性

  • データの出所: 誰でも見られる、過去のビットコインの値段のデータを使ってテストしました。
  • 検証のやり方: 「もし、この作戦を過去の約1年半(528日間)やっていたら、どうなっていたかな?」という計算(シミュレーション)をしました。
  • コード: このテストで使った計算プログラムは、誰でも見られるように公開しています。
  • 注意事項: このテスト結果は、あくまでも過去のデータでの話です。未来も同じようにうまくいくとは限りません。投資をするときは、必ず自分の判断と責任でお願いしますね。

よくある質問

Q.DMIクロスって、どういう仕組みなの?

A.グラフの上に、「上がる勢い」を示す線と、「下がる勢い」を示す線の2本が表示されます。この2本の線が交差したときが、「買い」や「売り」のチャンスかもしれない、という合図になるんです。

Q.勝つ回数が少ないってことは、この作戦は使えないってこと?

A.そんなことはないですよ。10回やって9回負けても、最後の1回ですごく大きく勝てれば、全部合わせるとプラスになることもあります。大事なのは、勝つ回数よりも「損を小さく、利益を大きく」することなんです。ただ、今回のテストではそれができませんでした。

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

A.「最大ドローダウン」のことで、テストの途中で、お金が一番大きく減ってしまった時の割合のことです。このテストでは、一時的にお金が最大で84%も減ってしまった瞬間があった、という意味です。かなり危ない状況だったことがわかりますね。

Q.作戦を使わずに、ただビットコインを持っているだけ(ガチホ)と比べてどうだったの?

A.「ガチホ」は「ガチでホールド(持ち続ける)」の略で、売ったり買ったりせずに、ずっと持っておく作戦のことです。今回のテストでは、このDMIクロス作戦を使うよりも、ただ黙って持っていた方が、結果的に損が少なかった、ということになります。

Q.この作戦でうまくやるには、どうしたらいいの?

A.まず、「DMIクロス」だけで判断しないこと。他の道具も使って、本当にチャンスか確かめることが大事です。そしてもう一つは、「損切り」をしっかり行うこと。予想が外れたら、すぐに取引をやめて、大きな損を防ぐ勇気が必要です。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報