シェア:

未来の値段がわかる?仮想通貨の「ピボットポイント」で売り買いのタイミングを見つけよう!

仮想通貨の取引で「いつ買ったらいいの?」「いつ売ったらいいの?」と迷っていませんか?この方法は、昨日の値段のデータから「床」と「天井」のようなラインを見つけ出して、売り買いのタイミングを探る作戦です。まるで、ボールがどこで跳ね返りそうか予測するゲームみたいですね。

取引数
87
勝率
49.43%
最終リターン
-22.07%
最大DD
63.19%

導入と前提条件

仮想通貨の取引で「いつ買ったらいいの?」「いつ売ったらいいの?」と迷っていませんか?この方法は、昨日の値段のデータから「床」と「天井」のようなラインを見つけ出して、売り買いのタイミングを探る作戦です。まるで、ボールがどこで跳ね返りそうか予測するゲームみたいですね。

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

  • 戦略名: Pivot Points を使用したトレンド追従戦略
  • 対象銘柄: ETH/USDT
  • 時間足: 1d
  • 期間: 2024-03-03〜2025-08-25(540日間)
  • 初期資金: $10,000
  • 手数料・スリッページ: 0.1% / 0.1%
  • 取引所: okx

Pivot Points の理論的背景

この作戦の基本にあるのは、「値段の動きは、過去に起きたことと似たようなことを繰り返しやすい」という考え方です。ピボットポイントは、たくさんの人が「このくらいの値段になったら、動きが変わるかも」と注目しているポイントのヒントになります。例えば、値段が「床」と呼ばれるラインに近づくと、そこで跳ね返って上がることが期待できます。逆に、「天井」と呼ばれるラインに近づくと、そこでぶつかって下がることが考えられます。これらのラインを目印にすることで、感情にまかせず、しっかり考えた取引を目指します。これは、過去の天気データから明日の天気を予測する天気予報と少し似ていますね。

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

エントリー条件

  • 仮想通貨の値段が、1つ目の「床」ライン(S1)より下に下がった後、またそのラインより上に戻ってきて1日を終えたとき(買いのサインです)
  • もっと下の、2つ目の「床」ライン(S2)より下に下がった後、またそのラインより上に戻ってきて1日を終えたとき(これも買いのサインです)

エグジット条件

  • 仮想通貨の値段が、1つ目の「天井」ライン(R1)より上に上がった後、またそのラインより下に戻ってきて1日を終えたとき(売りのサインです)
  • もっと上の、2つ目の「天井」ライン(R2)より上に上がった後、またそのラインより下に戻ってきて1日を終えたとき(これも売りのサインです)

リスク管理

もし、予想と反対に値段が動いて損をしてしまったときのために、あらかじめ「ここまで損したら、いったんストップする」というルールを決めておくことが大切です。こうすることで、大きな失敗を防いで、次のチャンスに挑戦することができます。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数87回
勝率49.43%
平均利益4.12%
平均損失-4.18%
期待値-0.07%
プロフィットファクター0.84
最大ドローダウン63.19%
最終リターン-22.07%
シャープレシオ-0.04
HODL(Buy&Hold)34.88%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
#!/usr/bin/env python3
"""
ピボットポイント戦略
前日の高値・安値・終値から支持線と抵抗線を計算
"""
import pandas as pd
import numpy as np


def calculate_pivot_signals(df: pd.DataFrame, lookback: int = 1) -> pd.DataFrame:
    """
    ピボットポイントシグナルを生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    lookback : int
        ピボット計算の遡り期間(デフォルト: 1)
    
    Returns:
    --------
    pd.DataFrame
        シグナル列が追加されたDataFrame
    """
    df = df.copy()
    
    # 日付でグループ化
    df['date'] = pd.to_datetime(df.index).date
    
    # 日次の高値・安値・終値を取得
    daily_data = df.groupby('date').agg({
        'high': 'max',
        'low': 'min',
        'close': 'last'
    }).shift(lookback)
    
    # ピボットポイント計算
    daily_data['pivot'] = (daily_data['high'] + daily_data['low'] + daily_data['close']) / 3
    
    # サポートとレジスタンス
    daily_data['r1'] = 2 * daily_data['pivot'] - daily_data['low']
    daily_data['r2'] = daily_data['pivot'] + (daily_data['high'] - daily_data['low'])
    daily_data['r3'] = daily_data['high'] + 2 * (daily_data['pivot'] - daily_data['low'])
    
    daily_data['s1'] = 2 * daily_data['pivot'] - daily_data['high']
    daily_data['s2'] = daily_data['pivot'] - (daily_data['high'] - daily_data['low'])
    daily_data['s3'] = daily_data['low'] - 2 * (daily_data['high'] - daily_data['pivot'])
    
    # データフレームにマージ
    for col in ['pivot', 'r1', 'r2', 'r3', 's1', 's2', 's3']:
        df[col] = df['date'].map(daily_data[col])
    
    # シグナル生成(サポート/レジスタンスでの反発)
    # S1タッチで買い
    df['buy_s1'] = (df['low'] <= df['s1']) & (df['close'] > df['s1'])
    # S2タッチで買い
    df['buy_s2'] = (df['low'] <= df['s2']) & (df['close'] > df['s2'])
    
    # R1タッチで売り
    df['sell_r1'] = (df['high'] >= df['r1']) & (df['close'] < df['r1'])
    # R2タッチで売り
    df['sell_r2'] = (df['high'] >= df['r2']) & (df['close'] < df['r2'])
    
    # 総合シグナル
    df['is_buy'] = df['buy_s1'] | df['buy_s2']
    df['is_sell'] = df['sell_r1'] | df['sell_r2']
    
    # NaN値をFalseに置換
    df['is_buy'] = df['is_buy'].fillna(False)
    df['is_sell'] = df['is_sell'].fillna(False)
    
    print(f"ピボットポイント: 遡り期間={lookback}")
    print(f"買いシグナル数: {df['is_buy'].sum()}")
    print(f"売りシグナル数: {df['is_sell'].sum()}")
    
    return df

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

  1. 1この作戦は、昨日の値段のデータ(高かった値段、安かった値段、終わりの値段)を使って、今日、値段が反応しそうな大事なポイント(ピボットポイントや床・天井ライン)を計算します。
  2. 2計算した「床」のラインを値段が少しだけ下に突き抜けた後、またラインの上に戻ってきたら、それは「これから上がるぞ」という元気なサインかもしれません。だから、そのタイミングで「買い」と考えます。
  3. 3同じように、「天井」のラインを値段が少しだけ上に突き抜けた後、またラインの下に戻ってきたら、それは「もう上がる力がないかも」というサインかもしれません。だから、そのタイミングで「売り」と考えます。

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

  1. 1仮想通貨の値段は、過去の動きや、たくさんの人が注目している値段のラインに影響されることがある、ということを学べます。
  2. 2「床(支持線)」や「天井(抵抗線)」という、値段の動きの目印を知ることで、いつ売り買いするかを考えるためのヒントが増えます。
  3. 3たとえ勝つ確率が半分くらいでも、損は小さく、利益は大きくする工夫(リスク管理)をすれば、トータルでプラスにできる可能性があること、そしてその工夫がとても大事だということが分かります。

リスク管理の具体的手法

取引量の決め方

一度にたくさんのお金を使わず、自分が持っているお金のうち、ほんの少しの割合(例えば1%〜2%)だけを使って取引するようにします。こうすれば、もし取引がうまくいかなくても、大ダメージを受けるのを防げます。

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

もし予想がはずれて、どんどん損が大きくなってしまったら、「取り返してやる!」と焦らずに、一度取引をやめて、落ち着いて作戦を考え直すことが大切です。あらかじめ「ここまで損したら自動でやめる」と設定しておくのも良い方法です。

資金管理の方法

取引で出た利益は、すぐに全部使ってしまわずに、一部は次の取引のためにとっておきましょう。損が出たときに、それを取り返そうと焦って何度も取引しないように、冷静にお金を管理することが大事です。

改良案の具体的提案

  • この作戦を試した結果があまり良くなかったので(トータルでマイナスでした)、ピボットポイントの計算に「昨日1日分」だけでなく、「過去数日間のデータ」も使うなど、計算方法を工夫してみると良いかもしれません。
  • 「買う」や「売る」のルールをもう少し厳しくしたり、値段の勢いを見るための別の道具(テクニカル指標)と組み合わせたりして、もっと当たりやすいサインを探すように改善できます。
  • 利益が出ているときに、もっと利益を伸ばすための新しいルール(例えば、利益がここまで増えたら、損はしないようにストップの位置を動かすなど)を追加するのも良い方法です。

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

  • この作戦は、あくまで過去のデータにもとづく考え方で、絶対にうまくいくという保証はありません。仮想通貨の値段は、びっくりするようなニュースひとつで大きく動くこともあります。
  • 実際に大切なお金で取引を始める前に、まずは少額で試したり、昔のデータを使って「もしこの作戦を使っていたらどうなっていたかな?」と練習(バックテスト)したりして、自分に合う方法か確かめましょう。
  • 「ピボットポイント」は、売り買いを判断するためのヒントの一つです。他にも値段の勢いや取引されている量など、いろいろな情報を参考にしながら、最終的にどうするかを自分で決めることが大切です。

検証の透明性と信頼性

  • データの出所: この作戦の結果は、イーサリアム(ETH)という仮想通貨の過去の値段のデータを使って計算しています。データは、1日ごとの値段の動き(1日足)を見ています。
  • 検証のやり方: ここに書かれている成績(取引した回数や勝率、最終的な損益など)は、もしこの作戦のルール通りに取引していたら、どういう結果になっていたかを、過去のデータでコンピューターに計算(バックテスト)させたものです。
  • コード: この作戦を計算するためのプログラム(Pythonという言葉で書かれています)も公開されています。興味があれば、誰でも同じように試したり、もっと良くするための工夫を加えたりすることができます。
  • 注意事項: これは、仮想通貨取引の作戦の一つの例を紹介するもので、投資をおすすめするものではありません。仮想通貨の取引は、値段が大きく動くため、大切なお金が減ってしまう可能性もあります。投資をするかどうかは、必ず自分でよく考えて、自分の責任で決めてください。

よくある質問

Q.ピボットポイントって、どうやって計算するの?

A.とっても簡単です。昨日の「一番高かった値段」「一番安かった値段」「終わりの値段」の3つを足して、3で割るだけです。これが今日の中心になる値段「ピボットポイント」です。この中心の値段を使って、さらにいくつかの「床」や「天井」のラインも計算します。

Q.「床(支持線)」や「天井(抵抗線)」で、値段は必ず止まるの?

A.いいえ、必ず止まるわけではありません。あくまで「このあたりで値段の動きが変わりやすいかも」という目安です。勢いが強いと、これらのラインを突き抜けてしまうこともよくあります。

Q.勝つ確率が半分以下なのに、お金を増やせるの?

A.はい、可能です。例えば、勝つときは1000円の利益が出て、負けるときは500円の損で済むようにすれば、10回のうち4回しか勝てなくても、トータルでは利益が出ますよね。大事なのは、勝つ確率だけでなく、1回の勝ちを大きく、1回の負けを小さくすることなんです。ただ、この作戦はトータルでマイナスだったので、その点の改善が必要です。

Q.じゃあ、この作戦では、いつ買ったり売ったりすればいいの?

A.買うのは、値段が「床」のラインを一度下に突き抜けたけど、また上に戻ってきたときです。売るのは、値段が「天井」のラインを一度上に突き抜けたけど、また下に戻ってきたときです。一瞬の動きにだまされずに、本当の力の方向を見極めようとする考え方です。

Q.この作戦の結果が悪かったのは、どうして?

A.今回のシミュレーションでは、最終的に22%ほど資金が減ってしまうという結果でした。これは、計算した「床」や「天井」のラインが、うまく機能しなかったことを意味します。特に、一番大きく損がふくらんだ時には、資金が63%も減ってしまった時期がありました。これは、予想がはずれた時に、損が大きくなりすぎたことも原因の一つと考えられます。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報