快速提升交易水平!学会Pivot Point策略,轻松找到支撑位和阻力位

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 的支撑和压力位的判断是相当准确的。

相关推荐
暴力袋鼠哥1 小时前
基于YOLO11的车牌识别分析系统
python
满怀10153 小时前
【Python进阶】列表:全面解析与实战指南
python·算法
奇谱4 小时前
Quipus,LightRag的Go版本的实现
开发语言·后端·语言模型·golang·知识图谱
Asthenia04124 小时前
ThreadLocal:介绍、与HashMap的对比及深入剖析
后端
小小菜鸟,可笑可笑4 小时前
Python 注释进阶之Google风格
开发语言·python
upp4 小时前
[bug]langchain agent报错Invalid Format: Missing ‘Action Input:‘ after ‘Action:‘
javascript·python·langchain·bug
小技与小术4 小时前
代码随想录算法训练营day4(链表)
数据结构·python·算法·链表
Asthenia04124 小时前
# 红黑树与二叉搜索树的区别及查找效率分析
后端
前端开发张小七5 小时前
每日一练:4.有效的括号
前端·python