ビットコインの売買タイミングを見つける方法!「SMAゴールデンクロス」を学んでみよう
この記事では、ビットコインの取引で使われる「SMAゴールデンクロス」という、売ったり買ったりするタイミングを見つける方法を紹介します。2025年のある期間(約4ヶ月間)のデータを使って、この方法がどんな結果になったのか、中学生にもわかるようにやさしく説明しますね。
導入と前提条件
この記事では、ビットコインの取引で使われる「SMAゴールデンクロス」という、売ったり買ったりするタイミングを見つける方法を紹介します。2025年のある期間(約4ヶ月間)のデータを使って、この方法がどんな結果になったのか、中学生にもわかるようにやさしく説明しますね。
【検証】戦略のバックテスト概要
- 戦略名: SMA Golden Cross を使用したトレンド追従戦略
- 対象銘柄: BTC/USDT
- 時間足: 1h
- 期間: 2025-04-28〜2025-08-26(119日間)
- 初期資金: $10,000
- 手数料・スリッページ: 0.1% / 0.1%
- 取引所: binance
SMA Golden Cross の理論的背景
この方法の基本的な考え方は、「値段の動きの『流れ』に乗る」という、とてもシンプルなものです。ビットコインなどの値段は、急に上がったり下がったりするだけでなく、しばらく同じ方向へ進む「勢い」があることが多いです。短い期間の平均線は最近の値段の動きをすぐに反映し、長い期間の平均線はもっと大きな全体の流れを表します。なので、短い線が長い線を追い越すのは、「最近の勢いが、大きな流れを変えるくらい強くなってきたぞ!」というサインだと考えることができるんです。
具体的な売買ルール(今回の検証)
エントリー条件
- 短い期間の値段の平均線が、長い期間の平均線を、下から上に追い越したとき(ゴールデンクロス)。
- ただし、追い越す直前までは、短い線が長い線の下にいたことを確認します。
エグジット条件
- 短い期間の値段の平均線が、長い期間の平均線を、上から下に抜けてしまったとき(デッドクロス)。
- ただし、抜ける直前までは、短い線が長い線の上にいたことを確認します。
リスク管理
もし、予想と反対に値段が動いてしまったときのために、「ここまで値段が下がったら取引をやめる」というルールをあらかじめ決めておきます。こうすることで、大きな損をしてしまうのを防ぎます。
再現手順(HowTo)
- Python/依存(ccxt, pandas, ta)をインストール
- ccxtでBTC/USDTのOHLCVを取得して前処理
- 『SMA Golden Cross』に必要な指標を算出(ta 等)
- 閾値・クロス条件から売買シグナルを生成
- 手数料・スリッページを加味して検証・評価
【結果】パフォーマンス
価格の推移
資産の推移
パフォーマンス指標
指標 | 値 |
---|---|
総トレード数 | 35回 |
勝率 | 25.71% |
平均利益 | 3% |
平均損失 | -1.46% |
期待値 | -0.31% |
プロフィットファクター | 0.71 |
最大ドローダウン | 21.09% |
最終リターン | -11.16% |
シャープレシオ | -0.23 |
HODL(Buy&Hold) | 16.58% |
HODL戦略との比較
実装コード(Python)
"""
SMA Golden Cross Trading Signal Generator
"""
import pandas as pd
import numpy as np
def calculate_sma_signals(df: pd.DataFrame, short_period: int = 20, long_period: int = 50) -> pd.DataFrame:
"""
SMAゴールデンクロス戦略のシグナル生成
Parameters:
-----------
df : pd.DataFrame
OHLCVデータ(最低限 'close' カラムが必要)
short_period : int
短期SMA期間
long_period : int
長期SMA期間
Returns:
--------
pd.DataFrame
以下のカラムが追加されたDataFrame:
- sma_short: 短期SMA
- sma_long: 長期SMA
- is_buy: 買いシグナル (bool)
- is_sell: 売りシグナル (bool)
"""
df = df.copy()
# SMA計算
df['sma_short'] = df['close'].rolling(window=short_period, min_periods=short_period).mean()
df['sma_long'] = df['close'].rolling(window=long_period, min_periods=long_period).mean()
# 前日のSMA
df['sma_short_prev'] = df['sma_short'].shift(1)
df['sma_long_prev'] = df['sma_long'].shift(1)
# ゴールデンクロス(短期SMAが長期SMAを上抜け)= 買いシグナル
df['is_buy'] = (
(df['sma_short'] > df['sma_long']) &
(df['sma_short_prev'] <= df['sma_long_prev']) &
df['sma_short'].notna() &
df['sma_long'].notna()
)
# デッドクロス(短期SMAが長期SMAを下抜け)= 売りシグナル
df['is_sell'] = (
(df['sma_short'] < df['sma_long']) &
(df['sma_short_prev'] >= df['sma_long_prev']) &
df['sma_short'].notna() &
df['sma_long'].notna()
)
# 不要な中間カラムを削除
df.drop(['sma_short_prev', 'sma_long_prev'], axis=1, inplace=True)
return df
なぜこの結果になったのか(3つの理由)
- 1今回のテストでは、取引の回数が35回と少なめでした。これは、売買の合図であるゴールデンクロスやデッドクロスが、あまり起きなかったからかもしれません。
- 2勝った回数の割合(勝率)が25.71%と低かったのは、この期間のビットコインの値段が、上がったり下がったりを繰り返して、はっきりとした流れが生まれにくかったからかもしれません。そのため、買う合図が出てもすぐに値段が下がってしまうような、「だまし」の合図が多かったと考えられます。
- 3最終的に、お金が11.16%減ってしまうという残念な結果になりました。これは、勝った回数が少なかったことと、負けたときの金額が勝ったときの金額より大きくなってしまったことが原因です。特に、一番大きくお金が減ってしまったとき(最大DD)には21.09%も減っていて、これが全体の結果に響きました。
この結果から学べる3つの教訓
- 12つの線が交差するタイミングだけを見るのではなく、そのときの値段の勢いが本当に強いのかも一緒に見ることが大切だとわかりました。
- 2ビットコインのように値段の動きが大きいものは、損をしないためのルール(リスク管理)をしっかり決めておくことが、ものすごく大事だと学びました。
- 3この期間だけの結果では、この方法が本当にうまくいくのかどうか、はっきりとは言えません。もっと長い期間で試したり、他のコインで試したりして、結果を比べる必要があります。
リスク管理の具体的手法
取引量の決め方
1回の取引で損してもいい金額を、最初に決めておきます。例えば、持っているお金全体の1%〜2%くらいです。もし10万円持っているなら、1回のチャレンジで失ってもいいのは1000円〜2000円まで、という感じです。
損失が大きくなったときの対処法
もし取引で負けが続いて、持っているお金が10%のように大きく減ってしまったら、一度すべての取引をお休みします。そして、やり方が間違っていないか、もう一度作戦を考え直します。こうすることで、これ以上損が大きくなるのを防ぎます。
資金管理の方法
持っているお金を、全部一度に使うのはやめましょう。まずは少しのお金で始めて、うまくいったら少しずつ使うお金を増やし、負けたら減らす、というように、状況に合わせて調整することが大切です。
改良案の具体的提案
- ゴールデンクロスが起きた後、すぐに買うのではなく、少しだけ様子を見て、本当に値段が上がりそうか確かめてから買うようにしてみる。
- デッドクロスが起きた後も同じように、すぐに売るのではなく、少し様子を見てから取引をやめるタイミングを決める。
- 移動平均線だけでなく、「今の値段は買われすぎかな?売られすぎかな?」を教えてくれる『RSI』のような、他の道具も一緒に使って、もっと確かなタイミングを探してみる。
実用性の向上(運用上の注意)
- この方法を実際のお金で試す前に、過去のデータを使って「もしこのルールでやっていたら、どうなっていたかな?」という練習(シミュレーション)をしっかり行いましょう。
- ビットコインは、予想もできないくらい急に値段が動くことがあります。そんなときのために、「ここまで下がったらやめる」という約束は、絶対に守りましょう。
- この方法は、あくまでタイミングを知るための一つのヒントです。グラフを自分の目で見たり、他のニュースを参考にしたりして、最後は自分で「買うか」「売るか」を決めることが大切です。
検証の透明性と信頼性
- データの出所: このテストでは、みんなが見られるビットコインの過去の値段の記録を使いました。
- 検証のやり方: パソコンのプログラムを使って、この方法を過去のビットコインの値段の動きに当てはめて、どれくらいうまくいったか、または失敗したかを計算しました。
- コード: このテストに使ったプログラムは、記事の中で見ることができます。
- 注意事項: この記事や方法は、あくまで情報として紹介するもので、「この通りに投資しましょう」とオススメするものではありません。投資には、お金が減ってしまう危険もあります。もし挑戦するときは、必ず自分でよく考えて、自分の責任で行ってくださいね。