値段の勢いに乗ってみよう!『ATRブレイクアウト』作戦でコインの取引に挑戦!
この作戦は、コイン(XRP/USDT)の値段がグンと動く力を利用して、買ったり売ったりするタイミングを見つける方法です。5分ごとという短い時間で値段の動きを見て、もうけを出すことを目指します。もし1年間この作戦を続けたらどうなったか、わかりやすく説明しますね!
導入と前提条件
この作戦は、コイン(XRP/USDT)の値段がグンと動く力を利用して、買ったり売ったりするタイミングを見つける方法です。5分ごとという短い時間で値段の動きを見て、もうけを出すことを目指します。もし1年間この作戦を続けたらどうなったか、わかりやすく説明しますね!
【検証】戦略のバックテスト概要
- 戦略名: ATR Breakout を使用したトレンド追従戦略
- 対象銘柄: XRP/USDT
- 時間足: 5m
- 期間: 2024-07-25〜2025-08-25(395日間)
- 初期資金: $10,000
- 手数料・スリッページ: 0.1% / 0.1%
- 取引所: binance
ATR Breakout の理論的背景
この作戦のもとになっているのは、『値段は一度動き出すと、しばらくそっちの方向に進みやすい』という考え方です。特に、値段が激しく動きやすいコインの世界では、そういうことがよくあります。ATRというのは、その『値段の動きの大きさ』をはかる道具のことです。このATRを基準にして、今の値段が『いつもより大きく動いたぞ!』と判断できたら、新しい流れが始まったサインかもしれません。そこで、その流れに乗っかってみるのが、この作戦なんです。
具体的な売買ルール(今回の検証)
エントリー条件
- 前の日の終わりの値段より、値段が『いつもよりちょっと大きめに』上がったとき(買う合図)
エグジット条件
- もうけが出ているときに、それを自分のものにするとき(今回は、はっきりしたルールはありませんでした)
- 損が出ているときに、これ以上損が大きくならないように取引をやめるとき(これも、はっきりしたルールはありませんでした)
リスク管理
この作戦を試した結果、最大で100%の損、つまり最初のお金がぜんぶなくなってしまうという結果になりました。これは、大きな失敗を防ぐためのルールが、うまくできていなかったということです。本当は、1回の取引で損してもいい金額を決めておくとか、損がある金額を超えたら取引をやめる、といったルールが必要です。
再現手順(HowTo)
- Python/依存(ccxt, pandas, ta)をインストール
- ccxtでXRP/USDTのOHLCVを取得して前処理
- 『ATR Breakout』に必要な指標を算出(ta 等)
- 閾値・クロス条件から売買シグナルを生成
- 手数料・スリッページを加味して検証・評価
【結果】パフォーマンス
価格の推移
資産の推移
パフォーマンス指標
指標 | 値 |
---|---|
総トレード数 | 5863回 |
勝率 | 18.35% |
平均利益 | 0.96% |
平均損失 | -0.66% |
期待値 | -0.37% |
プロフィットファクター | 0.29 |
最大ドローダウン | 100% |
最終リターン | -100% |
シャープレシオ | -1.29 |
HODL(Buy&Hold) | 395.74% |
HODL戦略との比較
実装コード(Python)
"""
ATR Breakout Signal
前日終値からのk*ATRブレイクで判定するのだ。
"""
import pandas as pd
def _tr(df: pd.DataFrame) -> pd.Series:
prev_close = df['close'].shift(1)
tr = (df['high'] - df['low']).abs()
tr2 = (df['high'] - prev_close).abs()
tr3 = (df['low'] - prev_close).abs()
return pd.concat([tr, tr2, tr3], axis=1).max(axis=1)
def calculate_atr_breakout_signals(df: pd.DataFrame, atr_period: int = 14, k: float = 1.5) -> pd.DataFrame:
out = df.copy()
atr = _tr(out).rolling(atr_period).mean()
prev_close = out['close'].shift(1)
out['is_buy'] = out['close'] > (prev_close + k * atr)
out['is_sell'] = out['close'] < (prev_close - k * atr)
return out
なぜこの結果になったのか(3つの理由)
- 1勝てた確率が約18%と、とっても低かったので、ほとんどの取引で損をしてしまいました。
- 21回取引するごとに、平均して損をしてしまう計算になりました。儲かったお金と損したお金を比べても、損の方がずっと大きかったです。
- 3最終的に、もうけがマイナス100%になった、というのは、取引を続けた結果、お金がぜんぶなくなってしまった、ということです。
この結果から学べる3つの教訓
- 1勝つ回数が少なくても、1回で大きく勝てればプラスになる作戦もありますが、このやり方ではそれができませんでした。
- 2成績表を見ると、この作戦はこのままではうまくいかないことがわかります。何かを変える必要があります。
- 3どんな作戦でも、損をしないためのルール(リスク管理)はすごく大事です。それができていないと、大きな失敗につながってしまいます。
リスク管理の具体的手法
取引量の決め方
今回の計算では、損が大きくなりすぎました。これは、1回にどれくらいのお金で取引するかの決め方がよくなかった、ということです。本当は、自分の持っているお金のうち、1回の取引で失ってもいいのは〇%まで、というルールを決めて、それに合わせて取引する量を決める必要があります。
損失が大きくなったときの対処法
最大で100%損したということは、損がどんどんふくらむのを止められなかった、ということです。本当なら、損が持っているお金の10%くらいになったら、いったん取引をお休みするなど、損が広がるのを防ぐ仕組みが必要です。
資金管理の方法
資金管理とは、自分のお金をどう使うか計画することです。この作戦では、最終的にお金がゼロになってしまったので、資金管理がうまくできていませんでした。例えば、持っているお金を全部使わずに余裕をもたせたり、もうけが出たらその一部は別に取っておいたりする工夫が大切です。
改良案の具体的提案
- 『今だ!』という合図が出てもすぐに飛びつかず、少し待って、本当に値段の勢いが続いているか確かめてから取引する。
- 『ここまで損したらやめる』という損切りのルールをしっかり決めて、1回の取引で失うお金を少なくする。
- 作戦で使う数字(設定)を変えてみたり、他の道具と組み合わせたりして、もっと正確な『今だ!』の合図を探す。
実用性の向上(運用上の注意)
- この結果は、あくまで昔のデータで計算してみただけなので、これから先も同じ結果になるとは限りません。
- もし本当に取引してみるなら、まずはお試し用の取引(デモトレード)で練習してみるのがおすすめです。
- 世の中の状況はいつも変わるので、定期的に作戦の成績を見直して、必要ならやり方を変えていくことが大事です。
検証の透明性と信頼性
- データの出所: 使ったデータは、用意された過去の取引データです。
- 検証のやり方: 昔の値段のデータを使って、『もしこの作戦で取引していたらどうなったか』を計算(バックテスト)しました。
- コード: この計算に使ったプログラムの設計図はあります。
- 注意事項: この説明は、『これを買うと儲かるよ』とおすすめするものではありません。投資には損をする危険があり、最初のお金が戻ってくる保証はありません。最後は、自分で考えて決めてくださいね。