未来の値段がわかる?仮想通貨の「ピボットポイント」で売り買いのタイミングを見つけよう!
仮想通貨の取引で「いつ買ったらいいの?」「いつ売ったらいいの?」と迷っていませんか?この方法は、昨日の値段のデータから「床」と「天井」のようなラインを見つけ出して、売り買いのタイミングを探る作戦です。まるで、ボールがどこで跳ね返りそうか予測するゲームみたいですね。
導入と前提条件
仮想通貨の取引で「いつ買ったらいいの?」「いつ売ったらいいの?」と迷っていませんか?この方法は、昨日の値段のデータから「床」と「天井」のようなラインを見つけ出して、売り買いのタイミングを探る作戦です。まるで、ボールがどこで跳ね返りそうか予測するゲームみたいですね。
【検証】戦略のバックテスト概要
- 戦略名: 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)
- Python/依存(ccxt, pandas, ta)をインストール
- ccxtでETH/USDTのOHLCVを取得して前処理
- 『Pivot Points』に必要な指標を算出(ta 等)
- 閾値・クロス条件から売買シグナルを生成
- 手数料・スリッページを加味して検証・評価
【結果】パフォーマンス
価格の推移
資産の推移
パフォーマンス指標
指標 | 値 |
---|---|
総トレード数 | 87回 |
勝率 | 49.43% |
平均利益 | 4.12% |
平均損失 | -4.18% |
期待値 | -0.07% |
プロフィットファクター | 0.84 |
最大ドローダウン | 63.19% |
最終リターン | -22.07% |
シャープレシオ | -0.04 |
HODL(Buy&Hold) | 34.88% |
HODL戦略との比較
実装コード(Python)
#!/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この作戦は、昨日の値段のデータ(高かった値段、安かった値段、終わりの値段)を使って、今日、値段が反応しそうな大事なポイント(ピボットポイントや床・天井ライン)を計算します。
- 2計算した「床」のラインを値段が少しだけ下に突き抜けた後、またラインの上に戻ってきたら、それは「これから上がるぞ」という元気なサインかもしれません。だから、そのタイミングで「買い」と考えます。
- 3同じように、「天井」のラインを値段が少しだけ上に突き抜けた後、またラインの下に戻ってきたら、それは「もう上がる力がないかも」というサインかもしれません。だから、そのタイミングで「売り」と考えます。
この結果から学べる3つの教訓
- 1仮想通貨の値段は、過去の動きや、たくさんの人が注目している値段のラインに影響されることがある、ということを学べます。
- 2「床(支持線)」や「天井(抵抗線)」という、値段の動きの目印を知ることで、いつ売り買いするかを考えるためのヒントが増えます。
- 3たとえ勝つ確率が半分くらいでも、損は小さく、利益は大きくする工夫(リスク管理)をすれば、トータルでプラスにできる可能性があること、そしてその工夫がとても大事だということが分かります。
リスク管理の具体的手法
取引量の決め方
一度にたくさんのお金を使わず、自分が持っているお金のうち、ほんの少しの割合(例えば1%〜2%)だけを使って取引するようにします。こうすれば、もし取引がうまくいかなくても、大ダメージを受けるのを防げます。
損失が大きくなったときの対処法
もし予想がはずれて、どんどん損が大きくなってしまったら、「取り返してやる!」と焦らずに、一度取引をやめて、落ち着いて作戦を考え直すことが大切です。あらかじめ「ここまで損したら自動でやめる」と設定しておくのも良い方法です。
資金管理の方法
取引で出た利益は、すぐに全部使ってしまわずに、一部は次の取引のためにとっておきましょう。損が出たときに、それを取り返そうと焦って何度も取引しないように、冷静にお金を管理することが大事です。
改良案の具体的提案
- この作戦を試した結果があまり良くなかったので(トータルでマイナスでした)、ピボットポイントの計算に「昨日1日分」だけでなく、「過去数日間のデータ」も使うなど、計算方法を工夫してみると良いかもしれません。
- 「買う」や「売る」のルールをもう少し厳しくしたり、値段の勢いを見るための別の道具(テクニカル指標)と組み合わせたりして、もっと当たりやすいサインを探すように改善できます。
- 利益が出ているときに、もっと利益を伸ばすための新しいルール(例えば、利益がここまで増えたら、損はしないようにストップの位置を動かすなど)を追加するのも良い方法です。
実用性の向上(運用上の注意)
- この作戦は、あくまで過去のデータにもとづく考え方で、絶対にうまくいくという保証はありません。仮想通貨の値段は、びっくりするようなニュースひとつで大きく動くこともあります。
- 実際に大切なお金で取引を始める前に、まずは少額で試したり、昔のデータを使って「もしこの作戦を使っていたらどうなっていたかな?」と練習(バックテスト)したりして、自分に合う方法か確かめましょう。
- 「ピボットポイント」は、売り買いを判断するためのヒントの一つです。他にも値段の勢いや取引されている量など、いろいろな情報を参考にしながら、最終的にどうするかを自分で決めることが大切です。
検証の透明性と信頼性
- データの出所: この作戦の結果は、イーサリアム(ETH)という仮想通貨の過去の値段のデータを使って計算しています。データは、1日ごとの値段の動き(1日足)を見ています。
- 検証のやり方: ここに書かれている成績(取引した回数や勝率、最終的な損益など)は、もしこの作戦のルール通りに取引していたら、どういう結果になっていたかを、過去のデータでコンピューターに計算(バックテスト)させたものです。
- コード: この作戦を計算するためのプログラム(Pythonという言葉で書かれています)も公開されています。興味があれば、誰でも同じように試したり、もっと良くするための工夫を加えたりすることができます。
- 注意事項: これは、仮想通貨取引の作戦の一つの例を紹介するもので、投資をおすすめするものではありません。仮想通貨の取引は、値段が大きく動くため、大切なお金が減ってしまう可能性もあります。投資をするかどうかは、必ず自分でよく考えて、自分の責任で決めてください。