Pivot Point(枢轴点)是一种经典的技术分析工具,通过前一周期的高点(High)、低点(Low)和收盘价(Close)计算关键的支撑位和阻力位,帮助交易者识别莱特币(LTC/USDT)等数字货币的买入和卖出点。
1. Pivot Point 策略简介
Pivot Point 的核心是计算一个基准价格(PP),并基于此生成支撑位(S1, S2)和阻力位(R1, R2)。计算公式如下:
- • PP = (High + Low + Close) / 3
- • R1 = 2 × PP - Low
- • S1 = 2 × PP - High
- • R2 = PP + (High - Low)
- • S2 = PP - (High - Low)
在莱特币交易中,这些水平线可以指示价格的潜在反转或突破点。例如,价格接近 S1 并反弹可能是买入机会,而突破 R1 后回落可能是卖出信号。
2. Python 实现
2.1 模块 1:初始化与参数设置
功能:设置交易所、交易对、时间周期和数据长度等参数,为后续功能提供基础。
代码:
python
import ccxt
import pandas as pd
import plotly.graph_objects as go
from datetime import datetime
class PivotPointTrader:
def __init__(self, exchange='binance', symbol='BTC/USDT', timeframe='1d', limit=30):
"""
初始化交易参数
:param exchange: 交易所名称(如 'binance')
:param symbol: 交易对(如 'BTC/USDT')
:param timeframe: K 线周期(如 '1d' 为日线)
:param limit: 获取的数据条数
"""
self.exchange = getattr(ccxt, exchange)()
self.symbol = symbol
self.timeframe = timeframe
self.limit = limit
self.data = None
self.pivot_levels = {}
说明:
- • 使用 getattr(ccxt, exchange)动态加载交易所(如 Binance)。
- • 初始化 self.data 和 self.pivot_levels 为空,分别用于存储 K 线数据和计算结果。
- • 参数灵活,支持不同交易对(如 LTC/USDT)和周期(如 1h、4h)。
作用:为后续模块奠定基础,确保代码可配置性。
2.2 模块 2:数据获取
功能:从交易所获取比特币的 OHLCV(开盘价、最高价、最低价、收盘价、成交量)数据。
代码:
python
def fetch_ohlcv(self):
"""
从交易所获取 OHLCV 数据
:return: pandas DataFrame,包含时间戳、开盘价、最高价、最低价、收盘价和成交量
"""
ohlcv = self.exchange.fetch_ohlcv(self.symbol, self.timeframe, limit=self.limit)
df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
self.data = df
return df
说明:
- • 使用 CCXT 的 fetch_ohlcv 方法获取原始数据。
- • 将数据转换为 Pandas DataFrame,并将时间戳从毫秒转换为可读格式。
- • 数据存储在 self.data 中,便于其他模块调用。
作用:提供 Pivot Point 计算所需的历史数据。
2.3 模块 3:Pivot Point 计算
功能:根据前一天的 H、L、C 数据计算 PP、R1、S1、R2、S2。
代码:
python
def calculate_pivot_points(self):
"""
计算 Pivot Point 及支撑阻力位
:return: 包含 PP, R1, S1, R2, S2 的字典
"""
if self.data is None:
self.fetch_ohlcv()
# 使用前一天的数据计算
last_day = self.data.iloc[-2]
H, L, C = last_day['high'], last_day['low'], last_day['close']
PP = (H + L + C) / 3
R1 = 2 * PP - L
S1 = 2 * PP - H
R2 = PP + (H - L)
S2 = PP - (H - L)
self.pivot_levels = {
'PP': PP,
'R1': R1,
'S1': S1,
'R2': R2,
'S2': S2
}
return self.pivot_levels
说明:
- • 检查 self.data 是否为空,若为空则先调用 fetch_ohlcv。
- • 提取前一天数据(iloc[-2]),计算各水平线。
- • 结果存储在 self.pivot_levels 字典中。
作用:生成关键价格水平,作为交易决策依据。
2.4 模块 4:交易建议生成
功能:根据当前价格与 Pivot Point 水平的关系,提供买入、卖出或观望建议。
代码:
python
def suggest_trade(self):
"""
基于当前价格提供交易建议
:return: 交易建议字符串
"""
if self.data is None or not self.pivot_levels:
self.calculate_pivot_points()
current_price = self.data['close'].iloc[-1]
levels = self.pivot_levels
if current_price < levels['S1']:
return f"价格接近 S1 ({levels['S1']:.2f}),可能反弹,考虑买入。"
elif levels['S1'] < current_price < levels['PP']:
return f"价格在 S1 ({levels['S1']:.2f}) 和 PP ({levels['PP']:.2f}) 之间,观察趋势。"
elif levels['PP'] < current_price < levels['R1']:
return f"价格突破 PP ({levels['PP']:.2f}),可能继续上涨,考虑买入。"
elif current_price > levels['R1']:
return f"价格接近 R1 ({levels['R1']:.2f}),可能回落,考虑卖出。"
return "价格处于中间区域,建议观望。"
说明:
- • 获取最新收盘价(self.data['close'].iloc[-1])。
- • 通过条件判断,分析价格位置并返回建议。
- • 若数据或水平线未准备好,自动调用 calculate_pivot_points。
作用:将技术分析转化为可操作的交易信号。
2.5 模块 5:图表可视化
功能:绘制 K 线图并标注 Pivot Point 水平线。
代码:
python
def plot_chart(self):
"""
绘制 K 线图并标注 Pivot Point 水平线
"""
if self.data is None or not self.pivot_levels:
self.calculate_pivot_points()
fig = go.Figure()
# 绘制 K 线
fig.add_trace(go.Candlestick(
x=self.data['timestamp'],
open=self.data['open'],
high=self.data['high'],
low=self.data['low'],
close=self.data['close'],
name='OHLC'
))
# 绘制 Pivot Point 及支撑阻力线
for level, value in self.pivot_levels.items():
fig.add_hline(y=value, line_dash="dash", annotation_text=level,
annotation_position="top left", line_color="blue" if level == 'PP' else "red")
fig.update_layout(
title=f'{self.symbol} Pivot Point Analysis ({self.timeframe})',
yaxis_title='Price (USDT)',
xaxis_title='Date',
template='plotly_dark'
)
fig.show()
说明:
- • 使用 Plotly 的 Candlestick 绘制 K 线图。
- • 通过 add_hline 添加水平线,PP 用蓝色,其他用红色。
- • 设置图表标题和样式,支持交互式查看。
作用:直观展示价格走势与关键水平的关系。
2.6 运行结果

输出结果:
css
Pivot Levels: {'PP': 106.21, 'R1': 118.80999999999999, 'S1': 82.01999999999998, 'R2': 143.0, 'S2': 69.41999999999999}
Trade Suggestion: 价格在 S1 (82.02) 和 PP (106.21) 之间,观察趋势。
3. 应用示例
假设 2025 年 4 月 3 日的莱特币日 K 线数据为:
- • 高点:$85
- • 低点:$80
- • 收盘价:$83
计算结果:
- • PP = (85 + 80 + 83) / 3 = $82.67
- • R1 = 2 × 82.67 - 80 = $85.34
- • S1 = 2 × 82.67 - 85 = $80.34
- • R2 = 82.67 + (85 - 80) = $87.67
- • S2 = 82.67 - (85 - 80) = $77.67
若 4 月 4 日当前价格为 ,提示:价格在80.34) 和 PP ($82.67) 之间,观察趋势。"图表显示价格在 S1 上方,交易者可等待反弹确认。
4. 优化建议
- • 多指标融合:添加 RSI 或 MACD 增强信号准确性。
- • 多周期支持:扩展到小时线或周线。
- • 自动化交易:集成 API 实现下单功能。
5. TradingView 展示
在 TradingView 中可以看到,对于 LTC 的支撑和压力位的判断是相当准确的。