威廉姆累积/分配指标(Williams Accumulation/Distribution,简称Williams AD)是一种通过监测价格变动和交易量变化,判断市场买卖气势的技术分析指标。该指标基于威廉姆于下跌市场中,成交量通常会增大的假设。它反映了目前的市场趋势是被买方控制还是卖方控制。
该策略通过分析威廉姆累积/分配指标的值变化,判断目前趋势是处于累积阶段还是分配阶段,从而产生买入和卖出信号。
该策略的核心指标是威廉姆累积/分配指标(Williams AD)。计算公式如下:
If Close > Previous Close
Williams AD = Previous Williams AD + (Close - Low)
If Close < Previous Close
Williams AD = Previous Williams AD + (Close - High)
If Close == Previous Close
Williams AD = Previous Williams AD
其中,如果今天的收盘价高于昨天,则今天的AD值等于昨天的AD值加上“今收-今低”的差价。如果今天收盘价低于昨天,则今天的AD值等于昨天的AD值加上“今收-今高”的差价。
该指标反映了交易中的力量关系,主要判断规则如下:
当股票价格创新高,而AD指标没有创新高时,视为分配信号,做空。当股票价格创新低,而AD指标没有创新低时,视为累积信号,做多。
根据该判断规则,该策略具体交易信号生成规则为:
并且可以通过输入参数reverse来反转做多做空方向。
该策略具有以下优势:
利用威廉姆累积/分配指标判断市场买卖气力,可提高交易胜率。
指标计算方法简单,容易实现。
可通过反转参数,灵活适应不同行情。
通过监测指标和价格的背离,可产生较准确的交易信号。
可清晰直观地通过K线颜色展示目前市场气势。
该策略也存在以下风险:
威廉姆累积/分配指标存在滞后,可能产生错误信号。
仅依靠一个指标易受假突破等因素影响,信号产生过于频繁。
参数设置不当可能导致过于频繁交易。
需要同时结合其他因素确定买卖时机。
牛熊转换时,指标判断可能存在误区。
可通过优化参数设置、结合多个指标确认、适当过滤交易次数等方式降低风险。
该策略可以从以下方面进行优化:
增加参数进行优化,如设置交易区间、交易频率等。
结合其他指标进行滤波,避免错误信号,如量价指标、移动平均线等。
增加止损策略,以控制单笔损失。
进行参数训练,寻找最优参数组合。
结合机器学习算法实现动态参数优化。
在不同品种、周期等市场环境中测试策略健壮性。
构建模拟交易系统进行回测,评估策略风险收益情况。
威廉姆累积/分配指标策略通过指标的多空变化判断市场气力方向,具有交易信号生成简单、参数设置灵活等特点。但作为单一技术指标策略,其存在一定固有缺陷,需要进行多维度优化,并辅以其他技术手段进行验证,才能在实盘中稳定获利。该策略提供了判断市场买卖气力的参考,但交易时还需谨慎。
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 18/01/2018
// Accumulation is a term used to describe a market controlled by buyers;
// whereas distribution is defined by a market controlled by sellers.
// Williams recommends trading this indicator based on divergences:
//
// Distribution of the security is indicated when the security is making
// a new high and the A/D indicator is failing to make a new high. Sell.
//
// Accumulation of the security is indicated when the security is making
// a new low and the A/D indicator is failing to make a new low. Buy.
//
//You can change long to short in the Input Settings
//WARNING:
//- For purpose educate only
//- This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Williams Accumulation/Distribution (Williams AD)", shorttitle="Williams AD")
reverse = input(false, title="Trade reverse")
hline(0, color=blue, linestyle=line)
xPrice = close
xWAD = iff(close > nz(close[1], 0), nz(xWAD[1],0) + close - low[1],
iff(close < nz(close[1],0), nz(xWAD[1],0) + close - high[1],0))
pos = iff(xWAD > 0, 1,
iff(xWAD < 0, -1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xWAD, color=green, title="Williams AD")