ビットコインの値段を予想!『DMIクロス』作戦をわかりやすく解説します
このページでは、『DMIクロス』っていう作戦を紹介します。これは、ビットコインの値段が上がる勢いがあるか、下がる勢いがあるかを見て、「いつ買うか」「いつ売るか」を決める方法なんです。この作戦が本当にうまくいくのか、1時間ごとに値段をチェックして、約1年半テストしてみました。さて、結果はどうだったんでしょうか?一緒に見ていきましょう!
導入と前提条件
このページでは、『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)
- Python/依存(ccxt, pandas, ta)をインストール
- ccxtでBTC/USDTのOHLCVを取得して前処理
- 『DMI Cross』に必要な指標を算出(ta 等)
- 閾値・クロス条件から売買シグナルを生成
- 手数料・スリッページを加味して検証・評価
【結果】パフォーマンス
価格の推移
資産の推移
パフォーマンス指標
指標 | 値 |
---|---|
総トレード数 | 585回 |
勝率 | 22.91% |
平均利益 | 1.77% |
平均損失 | -0.92% |
期待値 | -0.3% |
プロフィットファクター | 0.57 |
最大ドローダウン | 84.67% |
最終リターン | -84.33% |
シャープレシオ | -0.62 |
HODL(Buy&Hold) | 53.4% |
HODL戦略との比較
実装コード(Python)
"""
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ビットコインは、値段の動きがとても激しいんです。だから、「よし、上がるぞ!」という合図が出たと思ったら、すぐに下がってしまう、というような「だまし」の合図が多かったのかもしれません。
- 2勝った割合が23%くらいと低かったのは、この『DMIクロス』の合図だけを信じるのは、ちょっと情報不足だったからかもしれません。天気予報みたいに、他の情報も合わせて考えないと、予想は当たりにくくなるんですね。
- 3最終的にお金がすごく減ってしまった一番の理由は、勝って得した金額よりも、負けて損した金額の方がずっと大きかったからです。特に「もう少し待てば値段が戻るかも…」と思って損したまま持ち続けると、どんどん損がふくらんでしまうことがあるんです。
この結果から学べる3つの教訓
- 1『DMIクロス』という一つの道具だけで、複雑なビットコインの値段の動きをぜんぶ知るのは、やっぱり難しいみたいです。
- 2勝つ回数が少なくても、一回勝ったときにすごく大きく勝てれば、全部合わせるとプラスになることもあります。でも、今回のテストでは、それがうまくできませんでした。
- 3お金が一番減ったときに84%も減ってしまった、という結果を見ると、「損を大きくしないための工夫(リスク管理)」が足りなかったことがわかります。傷が浅いうちに手当てすることが大事なんですね。
リスク管理の具体的手法
取引量の決め方
1回の取引に、持っているお金のぜんぶを使うのはとても危険です。例えば「1回の取引で使うのは、持っているお金の2%まで」と決めておけば、もし負けてもダメージは小さくてすみます。
損失が大きくなったときの対処法
もし、持っているお金がぜんぶで10%減ってしまったら、その日は取引をやめて作戦を見直す、というルールです。車でいうブレーキのようなもので、事故をふせぐことができます。
資金管理の方法
投資に使うお金は、普段の生活に使うお金(おこづかいや将来のための貯金)とは、きちんと分けましょう。なくなっても困らない「余裕のあるお金」でやることが、とても大事なルールです。
改良案の具体的提案
- 『DMIクロス』の合図が出ても、すぐに飛びつかない。他の道具(例えば、値段の平均を見る『移動平均線』など)も使って、「本当に今がチャンスかな?」とダブルチェックするようにします。
- 値段の動きがはっきりしない、どっちつかずの時は、無理に取引しない。「休むも相場」という言葉があるように、チャンスが来るまでじっくり待つルールを追加します。
- 「もし、これだけ損をしたら、今日はもうおしまい!」というような、もっと厳しいストップルールを作ります。冷静になる時間を作ることも大切なんです。
実用性の向上(運用上の注意)
- 『DMIクロス』は便利な道具の一つですが、これだけを信じるのは危険です。ニュースを見たり、他の道具を使ったりして、色々な角度から考えるクセをつけましょう。
- 今回のテスト期間は、たまたまビットコイン全体の調子が悪かった時期だったかもしれません。違う時期にテストしたら、もっと良い結果が出た可能性もあります。
- この作戦で勝つためのカギは、「損は小さく、利益は大きく(損小利大)」です。勝つ回数を増やすことよりも、一回ごとの取引で、損をすぐにやめて、利益はできるだけ伸ばすことを目指しましょう。
検証の透明性と信頼性
- データの出所: 誰でも見られる、過去のビットコインの値段のデータを使ってテストしました。
- 検証のやり方: 「もし、この作戦を過去の約1年半(528日間)やっていたら、どうなっていたかな?」という計算(シミュレーション)をしました。
- コード: このテストで使った計算プログラムは、誰でも見られるように公開しています。
- 注意事項: このテスト結果は、あくまでも過去のデータでの話です。未来も同じようにうまくいくとは限りません。投資をするときは、必ず自分の判断と責任でお願いしますね。