シェア:

ビットコイン、いつ買うのがおトク?「平均の線」を使った作戦でチャンスを見つけよう!

この記事では、ビットコイン(BTC)の取引で使える「移動平均エンベロープ」という作戦を紹介します。難しい言葉は使わないので安心してくださいね。いつビットコインを買ったり売ったりすれば良いのか、そのヒントを分かりやすく説明します。この作戦を知れば、取引がもっと楽しくなるかもしれません。

取引数
4
勝率
75.00%
最終リターン
+10.28%
最大DD
9.10%

導入と前提条件

この記事では、ビットコイン(BTC)の取引で使える「移動平均エンベロープ」という作戦を紹介します。難しい言葉は使わないので安心してくださいね。いつビットコインを買ったり売ったりすれば良いのか、そのヒントを分かりやすく説明します。この作戦を知れば、取引がもっと楽しくなるかもしれません。

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

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

Moving Average Envelope の理論的背景

この作戦は、「値段は、上がりすぎたり、下がりすぎたりすると、真ん中に戻りやすい」という考え方が元になっています。値段がグーンと上がりすぎたら、「そろそろ下がるかな?」と考えます。逆に、すごく下がったら、「そろそろ上がるかな?」と考えるわけです。「平均の線」は値段の真ん中の流れを示していて、上下の線は「ここまで来たら、ちょっと行きすぎかも」という目安になります。この目安を使って、「行きすぎ」のタイミングで反対の行動(買う・売る)をするんです。

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

エントリー条件

  • 値段が「下の線」に触れて、また上がり始めたとき(安くなったタイミングで買う)
  • 値段が「上の線」に触れて、また下がり始めたとき(高くなったタイミングで売る)

エグジット条件

  • 買っていたビットコインの値段が、目標の「上の線」に届いたとき(利益を確定させます)
  • 売っていたビットコインの値段が、目標の「下の線」に届いたとき(これも利益を確定させます)

リスク管理

一度にたくさんのお金を使わないことが大切です。もし予想と反対に動いて損をしそうになっても、被害が大きくならないように、「ここまで損したらやめる」というラインをあらかじめ決めておきましょう。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数4回
勝率75%
平均利益3.93%
平均損失-1.61%
期待値2.54%
プロフィットファクター6.7
最大ドローダウン9.1%
最終リターン10.28%
シャープレシオ0.26
HODL(Buy&Hold)16.66%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
Moving Average Envelope Trading Signal
移動平均エンベロープを使用したトレード
"""
import pandas as pd
import numpy as np


def calculate_moving_average_envelope_signals(df: pd.DataFrame,
                                           period: int = 20,
                                           envelope_pct: float = 0.025) -> pd.DataFrame:
    """
    Moving Average Envelope戦略のシグナル生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    period : int
        移動平均期間(デフォルト: 20)
    envelope_pct : float
        エンベロープ幅(デフォルト: 0.025)
    
    Returns:
    --------
    pd.DataFrame
        シグナルが追加されたDataFrame
    """
    df = df.copy()
    
    # 移動平均
    df['ma'] = df['close'].rolling(window=period).mean()
    
    # エンベロープ
    df['upper_envelope'] = df['ma'] * (1 + envelope_pct)
    df['lower_envelope'] = df['ma'] * (1 - envelope_pct)
    
    # シグナル初期化
    df['signal'] = 0
    df['is_buy'] = False
    df['is_sell'] = False
    
    position = 0
    
    for i in range(period, len(df)):
        # 買いシグナル(下側エンベロープタッチ後の反発)
        if position <= 0 and df['close'].iloc[i] > df['lower_envelope'].iloc[i] and df['close'].iloc[i-1] <= df['lower_envelope'].iloc[i-1]:
            df.loc[df.index[i], 'is_buy'] = True
            df.loc[df.index[i], 'signal'] = 1
            position = 1
            
        # 売りシグナル(上側エンベロープタッチ後の反落)
        elif position >= 0 and df['close'].iloc[i] < df['upper_envelope'].iloc[i] and df['close'].iloc[i-1] >= df['upper_envelope'].iloc[i-1]:
            df.loc[df.index[i], 'is_sell'] = True
            df.loc[df.index[i], 'signal'] = -1
            position = -1
        else:
            df.loc[df.index[i], 'signal'] = position
    
    df['signal'] = df['signal'].fillna(0)
    
    return df


def get_strategy_name() -> str:
    """戦略名を返す"""
    return "Moving Average Envelope"


def get_strategy_description() -> str:
    """戦略の説明を返す"""
    return "移動平均エンベロープを使用したトレード戦略"

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

  1. 1「勝率75%」というのは、4回取引したら3回はうまくいった、ということです。この作戦が、今回のビットコインの動きに合っていたことがわかります。
  2. 2「最終的に10.28%の利益」が出ました。これは、ただビットコインをずっと持っているだけよりも、良い結果になったということです。
  3. 3「一番損したときでも9.1%」でした。もし調子が悪くても、損がそこまで大きくならなかったということです。しっかりリスクを管理できていた証拠ですね。

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

  1. 1値段の「上がりすぎ」や「下がりすぎ」に注目すると、おトクなタイミングが見つかることがあります。
  2. 2ただ「平均の線」を見るだけでなく、その上下に「目安の線」を引くことで、いつ買ったり売ったりすればいいか、分かりやすくなります。
  3. 3取引には損をする可能性もあります。でも、しっかりルールを決めておけば、大きな損を防ぎながら、利益をねらうことができます。

リスク管理の具体的手法

取引量の決め方

1回の取引で使うお金は、持っているお金全部の、ほんの少しだけにしましょう。例えば「5%まで」のように決めておくと、もし何度か負けても、すぐにお金がなくなってしまうのを防げます。

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

もし思ったより損が大きくなってしまったら、一度取引をお休みしましょう。そして、作戦や設定が今の状況に合っているか、見直すことが大切です。焦って損を取り返そうとすると、もっと大きな損につながることがあります。

資金管理の方法

取引に使うお金は、なくなっても生活に困らないお金だけにしましょう。そして、もし利益が出たら、その一部は貯金するなど、コツコツ着実にお金を管理していくことが重要です。

改良案の具体的提案

  • 上下の線の「幅」や、「平均の線」を計算する期間を変えてみて、もっと良い成績になる組み合わせを探してみましょう。
  • 他の道具(例えば、値段の勢いを示すものなど)と組み合わせると、もっと確かな「買い時・売り時」の合図を見つけられるかもしれません。
  • もし損をしそうになったとき、どのタイミングでやめるか、もっと細かいルールを決めておくと、さらに安心です。

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

  • この作戦は、値段が上がったり下がったりを繰り返しているときに特に力を発揮します。でも、ずーっと上がり続けたり、下がり続けたりする場面では、間違った合図が出やすいので注意が必要です。
  • 1時間ごとの値段で見るか、1日ごとの値段で見るかなど、時間の区切り方によって、合図の出方が変わります。色々な時間で試してみるのがおすすめです。
  • 実際に自分のお金で取引を始める前に、過去の値段データを使って「もしこの作戦でやっていたらどうなっていたかな?」と練習してみることが、とても大切です。

検証の透明性と信頼性

  • データの出所: この話は、実際の仮想通貨取引所のビットコインの値段データを使っています。
  • 検証のやり方: 紹介した成績は、過去の値段データを使って、この作戦のルール通りに取引したらどうなったか、をコンピューターで計算した結果です。
  • コード: この計算をするためのプログラム(Pythonコード)は、記事の中で見ることができます。
  • 注意事項: この作戦や成績は、将来も同じようにうまくいくことを約束するものではありません。投資は、最後は自分で考えて決めることが大切です。

よくある質問

Q.「移動平均エンベロープ」って、結局どういう意味?

A.値段の「平均の線」とその上下に「目安の線」を引いて、値段がその目安の線に近づいたらチャンス!と考える方法だよ。ボールが床や天井に当たって跳ね返るみたいに、値段も「行きすぎ」たら真ん中に戻りやすい、という考え方を使っているんだ。

Q.ビットコイン以外でも使えるの?

A.うん、使えるよ。株や他の仮想通貨みたいに、値段が変わるものなら、だいたい同じようにこの考え方を使うことができるんだ。

Q.「勝率75%」って、すごいの?

A.うん、かなり良い成績だよ。4回やったら3回は勝てた、っていうことだからね。でも、1回の勝ちが小さくて、1回の負けが大きいと意味がないから、全部でどれくらい儲かったか(最終的な利益)も一緒に見ることが大事だよ。

Q.「最大DD」って、何?

A.「最大ドローダウン」のことだね。これは、取引の途中で一番調子が悪かったときに、お金が最大で何パーセント減っちゃったか、っていう数字だよ。この数字が小さいほど、上手に損をコントロールできているってことなんだ。

Q.この作戦を使えば、絶対もうかる?

A.ううん、残念ながら、どんな作戦でも「絶対に儲かる」っていうのはないんだ。世の中の状況はいつも変わるから、この作戦がうまくいかないときも必ずある。だからこそ、損をできるだけ小さくする工夫がとっても大切になるんだよ。

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

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

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

A.最終リターンは10.28%、最大DDは9.10%です。

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報