ビットコイン、いつ買うのがおトク?「平均の線」を使った作戦でチャンスを見つけよう!
この記事では、ビットコイン(BTC)の取引で使える「移動平均エンベロープ」という作戦を紹介します。難しい言葉は使わないので安心してくださいね。いつビットコインを買ったり売ったりすれば良いのか、そのヒントを分かりやすく説明します。この作戦を知れば、取引がもっと楽しくなるかもしれません。
導入と前提条件
この記事では、ビットコイン(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)
- Python/依存(ccxt, pandas, ta)をインストール
- ccxtでBTC/USDTのOHLCVを取得して前処理
- 『Moving Average Envelope』に必要な指標を算出(ta 等)
- 閾値・クロス条件から売買シグナルを生成
- 手数料・スリッページを加味して検証・評価
【結果】パフォーマンス
価格の推移
資産の推移
パフォーマンス指標
指標 | 値 |
---|---|
総トレード数 | 4回 |
勝率 | 75% |
平均利益 | 3.93% |
平均損失 | -1.61% |
期待値 | 2.54% |
プロフィットファクター | 6.7 |
最大ドローダウン | 9.1% |
最終リターン | 10.28% |
シャープレシオ | 0.26 |
HODL(Buy&Hold) | 16.66% |
HODL戦略との比較
実装コード(Python)
"""
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「勝率75%」というのは、4回取引したら3回はうまくいった、ということです。この作戦が、今回のビットコインの動きに合っていたことがわかります。
- 2「最終的に10.28%の利益」が出ました。これは、ただビットコインをずっと持っているだけよりも、良い結果になったということです。
- 3「一番損したときでも9.1%」でした。もし調子が悪くても、損がそこまで大きくならなかったということです。しっかりリスクを管理できていた証拠ですね。
この結果から学べる3つの教訓
- 1値段の「上がりすぎ」や「下がりすぎ」に注目すると、おトクなタイミングが見つかることがあります。
- 2ただ「平均の線」を見るだけでなく、その上下に「目安の線」を引くことで、いつ買ったり売ったりすればいいか、分かりやすくなります。
- 3取引には損をする可能性もあります。でも、しっかりルールを決めておけば、大きな損を防ぎながら、利益をねらうことができます。
リスク管理の具体的手法
取引量の決め方
1回の取引で使うお金は、持っているお金全部の、ほんの少しだけにしましょう。例えば「5%まで」のように決めておくと、もし何度か負けても、すぐにお金がなくなってしまうのを防げます。
損失が大きくなったときの対処法
もし思ったより損が大きくなってしまったら、一度取引をお休みしましょう。そして、作戦や設定が今の状況に合っているか、見直すことが大切です。焦って損を取り返そうとすると、もっと大きな損につながることがあります。
資金管理の方法
取引に使うお金は、なくなっても生活に困らないお金だけにしましょう。そして、もし利益が出たら、その一部は貯金するなど、コツコツ着実にお金を管理していくことが重要です。
改良案の具体的提案
- 上下の線の「幅」や、「平均の線」を計算する期間を変えてみて、もっと良い成績になる組み合わせを探してみましょう。
- 他の道具(例えば、値段の勢いを示すものなど)と組み合わせると、もっと確かな「買い時・売り時」の合図を見つけられるかもしれません。
- もし損をしそうになったとき、どのタイミングでやめるか、もっと細かいルールを決めておくと、さらに安心です。
実用性の向上(運用上の注意)
- この作戦は、値段が上がったり下がったりを繰り返しているときに特に力を発揮します。でも、ずーっと上がり続けたり、下がり続けたりする場面では、間違った合図が出やすいので注意が必要です。
- 1時間ごとの値段で見るか、1日ごとの値段で見るかなど、時間の区切り方によって、合図の出方が変わります。色々な時間で試してみるのがおすすめです。
- 実際に自分のお金で取引を始める前に、過去の値段データを使って「もしこの作戦でやっていたらどうなっていたかな?」と練習してみることが、とても大切です。
検証の透明性と信頼性
- データの出所: この話は、実際の仮想通貨取引所のビットコインの値段データを使っています。
- 検証のやり方: 紹介した成績は、過去の値段データを使って、この作戦のルール通りに取引したらどうなったか、をコンピューターで計算した結果です。
- コード: この計算をするためのプログラム(Pythonコード)は、記事の中で見ることができます。
- 注意事項: この作戦や成績は、将来も同じようにうまくいくことを約束するものではありません。投資は、最後は自分で考えて決めることが大切です。