シェア:

ビットコインの買いどき・売りどきを見つける作戦!2本の線が交わるのを見てみよう

この作戦は、ビットコインを1時間ごとに見て、いつ買ったり売ったりすればいいかを見つける方法です。2つの特別な線が交わるのを「合図」にします。このやり方で、過去の約1年間の成績がどうだったかを調べてみました。

取引数
280
勝率
29.64%
最終リターン
-59.12%
最大DD
61.78%

導入と前提条件

この作戦は、ビットコインを1時間ごとに見て、いつ買ったり売ったりすればいいかを見つける方法です。2つの特別な線が交わるのを「合図」にします。このやり方で、過去の約1年間の成績がどうだったかを調べてみました。

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

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

DEMA Crossover の理論的背景

「移動平均線」というのは、これまでの値段の平均を線にしたグラフのことです。これを見ると、値段が上がっている途中なのか、下がっている途中なのか、その「流れ」がわかります。「DEMA」は、その中でも特に今の値動きに素早く反応する特別な線です。この作戦では、速さが違う2本の線が交わった瞬間を、「流れが変わるかもしれない!」という合図として使います。速い線が遅い線を上に突き抜けたら、これから値段が上がる勢いが出てきたと考えて「買い」の合図にします。逆に下に突き抜けたら、下がる勢いが出てきたと考えて「売り」の合図にするんです。

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

エントリー条件

  • 「買い」の合図:速い動きの線が、遅い動きの線を下から上に追い越したときです。
  • (※ポイントは、ちょうど今、追い越した!という瞬間をねらうことです。)

エグジット条件

  • 「買い」で持っているのをやめるタイミングは、速い線が遅い線を下に抜けてしまったときです。
  • 「売り」で持っているのをやめるタイミングは、速い線が遅い線を上に抜けたときです。

リスク管理

この作戦では、大きな損をしないための工夫が必要です。例えば、一度に大きなお金を使わないことや、もし損がある金額を超えたら、その日はもう取引をやめる、といったルールを決めておくことが考えられます。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数280回
勝率29.64%
平均利益2.24%
平均損失-1.37%
期待値-0.3%
プロフィットファクター0.69
最大ドローダウン61.78%
最終リターン-59.12%
シャープレシオ-0.37
HODL(Buy&Hold)69.13%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
DEMA Crossover Signal
二重指数移動平均のクロスで判定するのだ。
"""
import pandas as pd


def _ema(s: pd.Series, n: int) -> pd.Series:
    return s.ewm(span=n, adjust=False).mean()


def _dema(s: pd.Series, n: int) -> pd.Series:
    ema1 = _ema(s, n)
    ema2 = _ema(ema1, n)
    return 2 * ema1 - ema2


def calculate_dema_signals(df: pd.DataFrame, fast: int = 12, slow: int = 26) -> pd.DataFrame:
    out = df.copy()
    out['dema_fast'] = _dema(out['close'], fast)
    out['dema_slow'] = _dema(out['close'], slow)
    out['dema_prev_fast'] = out['dema_fast'].shift(1)
    out['dema_prev_slow'] = out['dema_slow'].shift(1)
    out['is_buy'] = (out['dema_fast'] > out['dema_slow']) & (out['dema_prev_fast'] <= out['dema_prev_slow'])
    out['is_sell'] = (out['dema_fast'] < out['dema_slow']) & (out['dema_prev_fast'] >= out['dema_prev_slow'])
    out.drop(['dema_prev_fast','dema_prev_slow'], axis=1, inplace=True)
    return out

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

  1. 1この作戦の勝った割合(勝率)は、約30%と低めでした。これは、線が交わっても、それが「ウソの動き(ダマシ)」ですぐに反対に動いてしまい、損することが多かったからかもしれません。
  2. 2儲けと損のバランスを見ると、全体として利益を出すのが難しい作戦だったと言えます。
  3. 3最終的に、最初のお金が半分以上減ってしまう(-59.12%)という結果でした。一番悪いときには、元のお金が60%以上も減ってしまった瞬間もあり、この作戦の弱点がわかりました。

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

  1. 1移動平均線が交わるのを見るだけ、という簡単な作戦では、勝つのが難しい場合があることを学びました。
  2. 2「ウソの動き」にだまされずに、本当に流れが変わる瞬間を見つけることが大事だとわかりました。
  3. 31つの作戦だけに頼らず、他の道具と組み合わせたり、大きな損をしないためのルールをしっかり作ったりすることが必要だと感じました。

リスク管理の具体的手法

取引量の決め方

一度の取引で使うお金は、持っているお金全体の1%か2%くらいにしましょう。そうすれば、もし負けても、全体のお金への影響は小さくてすみます。

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

もし全体のお金が10%減ってしまったら、その日はもう取引をやめる、というようなルールを決めます。こうすることで、大きな損を防ぎます。

資金管理の方法

儲かっていても調子に乗って取引の量を増やしたり、損しているからと焦って取り返そうとしたりせず、いつも同じルールを守ることが大切です。

改良案の具体的提案

  • 線が交わるだけでなく、他の道具(例えば、今の値段が買われすぎか売られすぎかを見るものなど)も一緒に見て、もっと確実な合図を探すようにします。
  • 「これ以上損したら絶対にやめる」というライン(損切り)を決めて、そのルールを厳しく守るようにします。
  • 一度に使うお金の量を少なくして、もし負けても大きなダメージを受けないように工夫します。

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

  • この作戦だけで判断しないで、必ず他の分析方法と組み合わせて考えるようにしましょう。
  • うれしかったり、くやしかったり、気持ちで判断するのではなく、決めたルール通りに冷静に取引することが一番大切です。
  • まずはお小遣い程度の少ないお金で試してみて、自分に合っているか、ルールを守れるかを確認してから、少しずつ金額を増やしていくのがおすすめです。

検証の透明性と信頼性

  • データの出所: このお話は、過去のビットコインの1時間ごとの値段のデータを使って調べています。
  • 検証のやり方: 昔の値段のデータを使って、「もしこの作戦で取引していたらどうなっていたかな?」と試してみました。これをシミュレーションと言います。
  • コード: この計算をするためのプログラムは、誰でも見られるようになっています。
  • 注意事項: 注意:これは「こうすれば儲かるよ」とお勧めするものではありません。投資には、お金が減ってしまうリスクがあります。最後は必ず自分で考えて判断してくださいね。

よくある質問

Q.DEMAって何?普通の移動平均線とどう違うの?

A.DEMAは、普通の移動平均線よりも、今の値段の動きに素早く反応してくれる、ちょっと進化した線です。だから、値段の流れが変わるのを早く見つけやすいと言われています。

Q.「クロス」ってどういう意味?

A.「クロス」は、2本の線が交わることです。この作戦では、動きの速い線と遅い線が交わった瞬間を、買ったり売ったりする「合図」として使います。

Q.勝率が低いってことは、全然勝てないの?

A.勝つ回数が少ない、ということです。10回取引したら3回くらいしか勝てなかった、という感じです。でも、勝率が低くても、1回勝ったときにすごく大きな利益が出れば、全体ではプラスになることもあります。ただ、今回の作戦では、負けたときの損の方が大きかったみたいです。

Q.「期待値」や「PF」って何?

A.「期待値」は、1回取引するごとに、平均でどれくらい儲かるか(損するか)を表す数字です。マイナスだと、やればやるほど損が増える可能性が高いということです。「PF」は、儲けの合計を損の合計で割ったものです。1より大きければ全体で儲かっていて、1より小さいと損していることになります。

Q.HODLって何?なんでHODLより成績が悪いの?

A.「HODL(ホドル)」は、ビットコインなどを買ったら売らずにずーっと持っておく作戦のことです。今回の作戦は、この期間にただずっと持っているよりも、こまめに売ったり買ったりした結果、最終的にお金が減ってしまった、という意味です。つまり、何もしない方がマシだった、ということですね。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報