威科夫交易法(Wyckoff Method)是一种经典的技术分析方法,最初由理查德·威科夫(Richard Wyckoff)在20世纪初开发,旨在通过价格和成交量的关系解读市场趋势和交易机会。虽然它起源于股票市场,但其核心原理同样适用于数字货币市场,例如比特币(BTC)。
1. 威科夫交易法简介
威科夫交易法基于市场周期理论,认为价格走势由供需关系驱动,而成交量是理解市场行为的钥匙。它将市场分为四个主要阶段:累积(Accumulation)、上涨(Markup)、派发(Distribution)和下跌(Markdown)。通过识别这些阶段,交易员可以在累积阶段寻找买入点,在派发阶段寻找卖出点。
2. 威科夫五步法
2.1 确定市场的现状和未来可能的趋势
判断目前市场的走势以及未来的趋势可以帮助我们决定是否要进入市场以及做多还是做空。在这个环节中用市场的主要指数的k线图和点数图来进行判断。
2.2 选择与市场趋势一致的股票
在上涨趋势中,选择走势比市场更强的股票。在下跌趋势中,选择弱于市场的股票。
2.3 选择“原因”等于或超过您的最低目标的股票
威科夫的交易选择和管理的一个重要组成部分是他使用长期和短期交易的点数(P&F)预测来确定价格目标的独特方法。在威科夫的“因果关系”的基本规律中,交易范围内的水平P&F计数代表原因,随后的价格变动代表结果。因此,如果您打算采取多头头寸,选择正在积累或重新积累的股票,并建立足够的上涨“原因”来满足您的需求。步骤3依赖于使用个人股票的P&F图表。
2.4 确定股票准备移动
应用九个买入或卖出的检验(如下所述)。例如,在长时间的涨势之后的交易区间,九个卖出检验的结果是否表明大量供应进入市场,并且需要建立一个空头头寸?或者在明显的积累交易范围内,如果更有低成交量的弹簧效应(Spring)和更小成交量的弹簧效应后测试(test after Spring)的出现,九个买入检验是否显示供应已经被成功吸收?使用K线图和单个股票的P&F图表进行步骤4。
2.5 当股市指数反转时,要有应变措施
3/4 的股票的走势和市场一致。把握市场的动向就可以提升交易的成功率。具体的威科夫原则会帮助我们发现市场的走势。下好止损单然后跟随这笔交易直到最终结束交易。
3. 威科夫提出的综合人
威科夫方法的关键在于识别“复合人”(Composite Man)——即市场中大玩家的行为。这些大玩家通过操控价格和成交量,制造陷阱或机会,而散户往往成为他们的“对手盘”。威科夫提出了以下核心步骤:
- • 市场趋势分析:判断市场是处于趋势还是盘整状态。
- • 供需分析:通过价格和成交量的变化识别供需失衡。
- • 关键点位识别:找到支撑位、阻力位以及潜在的买入或卖出信号。
在比特币市场中,威科夫交易法尤其适用于高波动性的环境,因为价格剧烈波动往往伴随着明显的成交量信号。
4. 威科夫价格周期
威科夫认为通过详细的供求分析,包括研究价格行为,成交量和时间,可以了解和预测市场。 作为一名经纪人,他能够观察到成功的交易群体的做法,他认为这些能够从股票走势图中看到。 下图是展示了成功交易群体的做法。如图一中所示,在市场准备上升(markup) 前买入在下跌(markdown)前卖出。当然这只是理想状态,现实交易要比这个复杂的多。
4.1 累积阶段(Accumulation)
- • 特征:价格在低位横盘震荡,成交量逐渐减少,随后出现放量反弹。
- • 意义:大玩家在低价区域悄悄建仓,散户可能因恐慌抛售。
- • 买入点:当价格突破累积区间的阻力位(称为“Spring”后的反弹),且成交量放大时,表明累积结束,即将进入上涨阶段。
4.2 上涨阶段(Markup)
- • 特征:价格持续上涨,成交量温和放大。
- • 意义:市场进入看涨趋势,散户开始追涨。
- • 操作:持有仓位,等待派发信号。
4.3 派发阶段(Distribution)
- • 特征:价格在高位震荡,成交量放大但价格不再创新高。
- • 意义:大玩家开始出货,散户仍在高位接盘。
- • 卖出点:当价格跌破派发区间的支撑位(称为“Upthrust”后的回落),且成交量增加时,表明派发结束,即将进入下跌阶段。
4.4 下跌阶段(Markdown)
- • 特征:价格快速下跌,成交量可能放大或萎缩。
- • 意义:市场进入看跌趋势,恐慌性抛售加剧。
- • 操作:观望或寻找下一次累积机会。
5. 威科夫三大定律
威科夫的图标分析法基于三大定律,这三大定律影响了股票分析的各个方面。 比如对于市场和个股的预测,如何选股以及进场的合适点位。
5.1 供需法则
供需原理决定了价格的方向。当供小于求时,价格就会上涨;当供大于求时,价格就会下跌。交易者可以通过K线图上面的价格和成交量的关系来分析供需关系。这个定律听起来很简单,但是需要花费很长的时间进行练习才能精准的把握量价关系。
5.2 因果法则
因果原理能说明未来价格涨跌的幅度。因果关系可以帮助投资者预测目标价位。 通过计算横盘整理区间的筹码计算未来行情的大小。可以用点数图来分析原因并预测结果。“因”就是点数图中的水平区间的点数,“果”就是由这些点造成的股价上下波动。
5.3 努力与结果法则
量价不协调原理可以提前预警趋势的变化。成交量和股价之间的不协调常常是趋势发生改变的信号。比如说连续放量的情况下股价的涨幅越来越小。这个现象说明庄家正在出货。
6. 威科夫交易法在比特币上的应用
6.1 阶段A:初步供应(PSY)与买入高潮(BC)
6.1.1 理论特征
- • 初步供应(PSY):价格在上涨趋势末尾首次出现停滞,成交量放大,但价格未能持续创新高,表明卖压开始增加。
- • 买入高潮(BC):散户在高位追涨,成交量达到高点,大玩家开始出货,价格可能短暂创出新高,但随后快速回落。
6.1.2 图中表现
- • 在阶段A(图中标注为“阶段A”),BTC价格在上涨至109,588的高点后开始震荡,成交量显著放大(见下图的成交量柱状图)。
- • 价格在高位形成一个短暂的顶部,随后出现回落,成交量在高位时达到峰值。
6.1.3 分析
- • 这一阶段标志着上涨趋势的结束,成交量的高峰对应“买入高潮”,表明散户在高位追涨,而大玩家开始出货。
- • 价格未能持续创新高,成交量放大但上涨动能减弱,表明卖压(供应)开始主导市场。
6.2 阶段B:自动上涨(AR)与次级测试(ST)
6.2.1 理论特征
- • 自动上涨(AR):价格在买入高潮后短暂反弹,成交量减少,表明买盘力量减弱。
- • 次级测试(ST):价格再次测试高点,但未能突破买入高潮时的水平,成交量进一步减少,确认卖压持续存在。
6.2.2 图中表现
- • 在阶段B(图中标注为“阶段B”),BTC价格在109,588高点回落至约90,000后,出现一次反弹(“自动上涨”),但成交量明显减少。
- • 随后价格多次测试高位(“次级测试”),但未能突破109,588,成交量持续萎缩。
6.2.3 分析
- • 自动上涨是市场在买入高潮后的自然反弹,但成交量的减少表明买盘力量不足,市场情绪开始转向谨慎。
- • 次级测试进一步确认了高位的阻力,价格无法突破前期高点,表明大玩家仍在出货,散户的追涨热情逐渐消退。
6.3 阶段C:派发中的上行测试(Upthrust, UT)
6.3.1 理论特征
- • 上行测试(UT):价格在派发阶段中可能出现一次假突破,短暂突破前期高点,诱导散户追涨,但随后快速回落,成交量可能小幅放大。
6.3.2 图中表现
- • 在阶段C(图中标注为“阶段C”),BTC价格在高位震荡期间出现一次短暂突破(“派发中的上行测试”),价格接近或略高于109,588,但随后快速回落。
- • 成交量在假突破时小幅放大,但回落时成交量未显著增加。
6.3.3 分析
- • 上行测试是大玩家制造的陷阱,诱导散户认为市场仍将上涨,从而在高位接盘。
- • 假突破后价格快速回落,成交量未持续放大,表明买盘力量已耗尽,市场进入派发阶段的后期。
6.4 阶段D:派发中的最后供应点(LPSY)
6.4.1 理论特征
- • 最后供应点(LPSY):价格在派发阶段末尾可能再次测试高位,但成交量减少,表明买盘力量彻底枯竭。
- • 随后价格跌破派发区间的支撑位,成交量可能放大,标志着派发阶段即将结束。
6.4.2 图中表现
- • 在阶段D(图中标注为“阶段D”),BTC价格在高位震荡后再次测试阻力位(“最后供应点”),但成交量显著减少。
- • 随后价格跌破派发区间的支撑位(约90,000),成交量在跌破时有所放大。
6.4.3 分析
- • 最后供应点是派发阶段的最后一次测试,成交量的减少表明散户的追涨意愿已消失,大玩家基本完成出货。
- • 跌破支撑位且成交量放大,确认了派发阶段的结束,市场即将进入下跌趋势。
6.5 阶段E:派发结束,进入下跌阶段(Markdown)
6.5.1 理论特征
- • 价格跌破派发区间的支撑位后,进入下跌趋势,成交量可能放大或萎缩。
- • 市场情绪转为看跌,恐慌性抛售可能加剧。
6.5.2 图中表现
- • 在阶段E(图中标注为“阶段E”),BTC价格跌破90,000的支撑位后,快速下跌,成交量在下跌初期有所放大。
- • 随后价格继续下行,成交量逐渐减少,表明市场进入明显的下跌趋势。
6.5.3 分析
- • 这一阶段标志着派发阶段的正式结束,市场进入下跌阶段(Markdown)。
- • 成交量的放大表明卖压主导市场,散户开始恐慌性抛售,而大玩家已完成出货。
7. 代码实现威科夫交易法分析
7.1 python实现
#!/usr/bin/env python # encoding: utf-8
# @version: v1.0
# @author: Kandy.Ye
# @contact: Kandy.Ye@outlook.com
# @file: WyckoffAnalyzer.py
import ccxt
import pandas as pd
import plotly.graph_objects as go
from datetime import datetime
from tools.download_data import fetch_ohlcv_batch
class WyckoffAnalyzer:
def __init__(self, exchange_name='binance', symbol='BTC/USDT', timeframe='1h', limit=500):
"""初始化交易所和参数"""
self.exchange = getattr(ccxt, exchange_name)()
self.symbol = symbol
self.timeframe = timeframe
self.limit = limit
self.data = None
def fetch_data(self):
"""获取OHLCV数据"""
ohlcv = fetch_ohlcv_batch(self.exchange, self.symbol, self.timeframe, total_needed=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
def identify_phases(self):
"""识别威科夫阶段(简化为支撑阻力突破)"""
df = self.data.copy()
df['rolling_high'] = df['high'].rolling(window=20).max()
df['rolling_low'] = df['low'].rolling(window=20).min()
df['volume_avg'] = df['volume'].rolling(window=20).mean()
# 买入信号:突破阻力且成交量放大
df['buy_signal'] = (df['close'] > df['rolling_high'].shift(1)) & (df['volume'] > df['volume_avg'] * 1.5)
# 卖出信号:跌破支撑且成交量放大
df['sell_signal'] = (df['close'] < df['rolling_low'].shift(1)) & (df['volume'] > df['volume_avg'] * 1.5)
return df
def plot_chart(self):
"""绘制K线图和成交量图"""
if self.data is None:
self.fetch_data()
df = self.identify_phases()
# 创建K线图
fig = go.Figure()
fig.add_trace(go.Candlestick(
x=df['timestamp'],
open=df['open'], high=df['high'], low=df['low'], close=df['close'],
name='Candlestick'
))
# 添加成交量图
fig.add_trace(go.Bar(
x=df['timestamp'], y=df['volume'],
name='Volume', yaxis='y2', opacity=0.3
))
# 添加买卖信号
fig.add_trace(go.Scatter(
x=df[df['buy_signal']]['timestamp'], y=df[df['buy_signal']]['close'],
mode='markers', name='Buy Signal', marker=dict(symbol='triangle-up', size=10, color='green')
))
fig.add_trace(go.Scatter(
x=df[df['sell_signal']]['timestamp'], y=df[df['sell_signal']]['close'],
mode='markers', name='Sell Signal', marker=dict(symbol='triangle-down', size=10, color='red')
))
# 设置布局
fig.update_layout(
title=f'{self.symbol} Wyckoff Analysis ({self.timeframe})',
yaxis=dict(title='Price'),
yaxis2=dict(title='Volume', overlaying='y', side='right'),
xaxis_rangeslider_visible=False
)
fig.show()
# 使用示例
if __name__ == "__main__":
analyzer = WyckoffAnalyzer(exchange_name='binance', symbol='BTC/USDT', timeframe='4h', limit=500)
analyzer.plot_chart()
7.2 运行结果
7.3 总结与改进建议
威科夫交易法通过价格和成交量的协同分析,为比特币交易提供了系统化的思路。本文展示的Python实现是一个基础版本,实际交易中可以进一步优化:
- • 增加更复杂的阶段识别逻辑(如“Spring”和“Upthrust”检测)。
- • 结合其他指标(如RSI、MACD)增强信号准确性。
- • 添加回测功能,评估策略的历史表现。
在实际应用时结合市场新闻和链上数据(如资金流向),以更全面地理解大玩家的意图。
感谢你看到这里,如果觉得文章对你有所收获,请在文末为我点个【赞】+【推荐】,或者【转发】给身边更多有需要的人看,你的点赞就是对我莫大的支持与动力!