シェア:

TSIオシレーターって使えるの?ビットコイン取引の結果を見てみよう!

この作戦は、ビットコインの値段の元気さ(勢い)を見て、「いつ買うか」「いつ売るか」を決める方法です。5分ごとの値動きを見るグラフを使って、短い時間で何回も取引をしてみました。その結果がどうだったか、一緒に見ていきましょう!

取引数
5053
勝率
11.52%
最終リターン
-100.00%
最大DD
100.00%

導入と前提条件

この作戦は、ビットコインの値段の元気さ(勢い)を見て、「いつ買うか」「いつ売るか」を決める方法です。5分ごとの値動きを見るグラフを使って、短い時間で何回も取引をしてみました。その結果がどうだったか、一緒に見ていきましょう!

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

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

TSI Oscillator の理論的背景

この作戦は、「値動きの波に乗る」という考え方が元になっています。値段が上がっている大きな波が来たら、その波に乗って「買い」、下がっている波が来たら「売り」で利益をねらう方法です。TSIオシレーターは、値段の元気さを数字にすることで、この波の始まりや終わりを見つけようとします。具体的には、値段の細かいギザギザした動きにだまされずに、本当の大きな流れを見つけるための工夫がされています。ものさしと平均の線が交わるところが、流れが変わるサインになる、と考えて使います。

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

エントリー条件

  • TSIオシレーター(ものさし)が、その平均の線を下から上に追い越したとき(買うタイミングです)
  • (この作戦では、買うときも売るときも、この2本の線が交わるタイミングを見て判断します)

エグジット条件

  • TSIオシレーター(ものさし)が、その平均の線を上から下に追い越したとき(取引をやめるタイミングです)
  • (もし損が大きくなりすぎたら、決めておいた金額でストップして、取引をやめるルールも大事です)

リスク管理

一度にたくさんのお金を使わずに、もし損をしても大丈夫と思える範囲の金額で取引するようにします。また、損が一定の金額になったら、それ以上広がらないように取引をやめることも大切です。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数5053回
勝率11.52%
平均利益0.58%
平均損失-0.52%
期待値-0.4%
プロフィットファクター0.23
最大ドローダウン100%
最終リターン-100%
シャープレシオ-2.35
HODL(Buy&Hold)68.25%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
True Strength Index (TSI) Signal
TSIとシグナルラインのクロスで判定するのだ。
"""
import pandas as pd


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


def _tsi(close: pd.Series, r: int = 25, s: int = 13) -> pd.Series:
    pc = close.diff()
    apc = pc.abs()
    e1 = _ema(pc, r)
    e2 = _ema(e1, s)
    ae1 = _ema(apc, r)
    ae2 = _ema(ae1, s)
    tsi = 100 * (e2 / ae2)
    return tsi


def calculate_tsi_signals(df: pd.DataFrame, r: int = 25, s: int = 13, signal_period: int = 7) -> pd.DataFrame:
    out = df.copy()
    out['tsi'] = _tsi(out['close'], r, s)
    out['tsi_signal'] = _ema(out['tsi'], signal_period)
    prev = (out['tsi'] - out['tsi_signal']).shift(1)
    now = out['tsi'] - out['tsi_signal']
    out['is_buy'] = (now > 0) & (prev <= 0)
    out['is_sell'] = (now < 0) & (prev >= 0)
    return out

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

  1. 1勝てた確率が11.52%と、とても低かったです。これは、100回やったら11回くらいしか勝てなかったということです。TSIオシレーターだけだと、短い時間の動きにだまされて、「今がチャンス!」と思ったのに実は違った、ということが多かったのかもしれません。
  2. 21回あたりの取引の平均を見ると、もうけよりも損のほうが大きくなってしまいました(期待値がマイナスでした)。
  3. 3もうけたお金(利益)と、損したお金(損失)を比べた数字(PF)が0.23でした。これは、もうけた金額よりも損した金額の方がずっと多かった、ということを表しています。最終的に、最初のお金が全部なくなってしまったのは、この作戦ではうまく利益を出し続けられなかったからです。

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

  1. 1TSIオシレーターは値段の元気さを見るのに役立ちますが、これ1つだけではちょっと力が足りないようです。他の分析ツールと一緒に使う必要がありそうです。
  2. 25分ごとの短い時間での取引は、チャンスがたくさんあるように見えますが、その分、細かい値動きに惑わされて、間違った判断をしやすくなる難しさがあります。
  3. 3勝てる確率が低くても、1回で大きく勝てればプラスになることもありますが、この作戦ではそれも難しかった、ということがわかりました。

リスク管理の具体的手法

取引量の決め方

取引に使うビットコインの量は、自分が持っているお金全部のうち、ほんの少し(100分の1とか2)だけを使うようにします。こうすれば、もし取引がうまくいかなくても、全体のお金へのダメージを小さくできます。

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

もし損が続いて、持っているお金が1割減ってしまったら、一度すべての取引をやめて、作戦を見直します。これ以上、損が大きくならないようにすることが一番大切です。

資金管理の方法

取引に使うお金は、もしなくなっても生活に困らない「余裕のあるお金」だけにします。また、もうけが出たときは、その一部を次回の取引のためにとっておくなど、計画的にお金を管理することが大事です。

改良案の具体的提案

  • TSIオシレーターの設定の数字を色々変えてみて、今のビットコインの動きに合う設定を探してみること。
  • 他の分析ツール(例えば、移動平均線などのお助けアイテム)と一緒に使って、もっと確かな「買い」や「売り」のサインを見つけ出すこと。
  • 「ここまで損したらやめる(損切り)」とか、「ここまでもうかったらやめる(利食い)」というルールをもっとハッキリ決めて、きちんと守ること。

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

  • この結果は、あくまで昔のデータで試したものなので、未来も同じ結果になるわけではありません。
  • 実際にお金を使って取引する前に、まず少なめの金額で試したり、お金を使わない練習用の取引(デモトレード)で練習したりすることをおすすめします。
  • マーケットの様子はいつも変わるので、この作戦が今もうまくいくか、時々チェックして、必要ならやり方を変えていくことが重要です。

検証の透明性と信頼性

  • データの出所: 昔のビットコインの5分ごとの値動きのデータを使いました。
  • 検証のやり方: 昔のデータを使って、「もしこの作戦で取引していたら、どうなっていたか?」というシミュレーション(バックテスト)をしました。
  • コード: この作戦を計算するためのコンピュータープログラムは、ちゃんと公開されています。
  • 注意事項: このお話は、「こうすればもうかるよ」と投資をおすすめするものではありません。投資には、大切なお金が減ってしまう可能性があります。お金をかけるときは、必ず自分でよく考えて、自分の責任で行ってください。

よくある質問

Q.TSIオシレーターって、何がわかるの?

A.ビットコインの値段の「元気さ」がわかる道具です。元気いっぱい上がっているのか、だんだん元気がなくなってきたのか、といった変化の様子を教えてくれます。

Q.5分足チャートって、どういう意味?

A.グラフを5分ごとに区切って見ることです。短い時間で値段がどう動いたかがわかるので、短い時間で取引をしたいときによく使われます。

Q.「勝率11.52%」って、すごく低いけど大丈夫なの?

A.はい、とても低いです。10回挑戦して1回勝てるかどうか、というくらいなので、このままでは勝って得する分より、負けて損する分の方が大きくなってしまいます。

Q.PFが0.23って、どういうこと?

A.PFは「プロフィットファクター」といって、もうかったお金(利益)と、損したお金(損失)を比べた数字です。これが1より小さいと、残念ながら全体としては損をしている、ということになります。

Q.この作戦で、どうやったら勝てるようになるの?

A.この道具一つだけに頼るのではなく、他の分析ツールと組み合わせたり、「ここまで損をしたらやめる」というルールをきちんと決めて守ったりするなど、色々な工夫が必要になります。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報