威尔德趋势均衡点系统


创建日期: 2023-09-23 15:30:58 最后修改: 2023-09-23 15:30:58
复制: 0 点击次数: 641
1
关注
1138
关注者

概述

这是由威尔德(Welles Wilder)在1978年创建的原始趋势均衡点系统,其交易规则可在其书籍《新概念技术分析系统》中找到。该系统利用动量指标识别趋势,并以特定方式设置止损止盈,形成一个较为稳健的趋势跟踪体系。

策略原理

该策略的主要组成部分和交易规则如下:

  1. 动量指标:计算N周期收盘价变动情况,判断价格趋势。

  2. 做多条件:当前周期和过去两个周期的动量值连续上升。

  3. 做空条件:当前周期和过去两个周期的动量值连续下降。

  4. 止损点:前一日的均价±前一日波动范围。

  5. 止盈点:前一日的2倍均价-最低价(做多)或2倍均价-最高价(做空)。

  6. 入场后以止损或止盈价格退出。

该策略简单直接,利用动量判断趋势方向,并采用特定的止损止盈方式控制风险,形成一个较为稳健的趋势跟踪体系。

优势分析

相比其他趋势跟踪策略,该策略有以下主要优势:

  1. 动量指标计算简单,容易实现。

  2. 多周期组合判断,可过滤噪声。

  3. 止损止盈方式较为稳健。

  4. 可限制单笔损失大小。

  5. 回撤可控,利润兑现明确。

  6. 实现难度不大,可灵活操作。

  7. 可调整参数,适用于不同市场。

  8. 策略思路直观简单。

  9. 总体来说,稳定性和风险控制能力较强。

风险分析

但是该策略也存在以下风险:

  1. 动量指标存在滞后,可能错过关键转折。

  2. 效果依赖参数优化程度。

  3. 未考虑交易量,存在被套风险。

  4. 止损止盈设定较为武断,可能预期失败。

  5. 回测周期较短,需验证长期稳健性。

  6. 固定仓位操作,无法动态调整。

  7. 优化空间有限,超额收益存在不确定性。

  8. 须关注收益回撤比,防止过拟合。

优化方向

鉴于上述分析,该策略可从以下维度进行优化:

  1. 尝试不同动量计算方式。

  2. 加入交易量验证。

  3. 优化止损止盈参数。

  4. 引入机器学习生成动态信号。

  5. 评估多品种多周期的稳健性。

  6. 构建动态仓位管理模型。

  7. 设定最大回撤容忍度。

  8. 优化资金管理策略。

  9. 持续回测验证,防止过优化。

总结

该策略整体来说是一套相对简单直接的趋势跟踪体系。但任何策略都需要不断优化与验证,以保持对市场的适应性。通过系统性工作,可提高策略的效果和稳定性。

策略源码
/*backtest
start: 2023-09-15 00:00:00
end: 2023-09-22 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © 2020 X-Trader.net

//@version=3
strategy("Trend Balance Point System by Welles Wilder", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000)

MomPer = input(2, "Momentum Period")

isLong = strategy.position_size > 0
isShort = strategy.position_size < 0

longTrigger = mom(close, MomPer)[1] > mom(close, MomPer)[2] and mom(close, MomPer)[1] > mom(close, MomPer)[3]
shortTrigger = mom(close, MomPer)[1] < mom(close, MomPer)[2] and mom(close, MomPer)[1] < mom(close, MomPer)[3]

longEntry = (not isLong) and longTrigger 
shortEntry = (not isShort) and shortTrigger

longStop = valuewhen(longEntry, ((high[1]+low[1]+close[1])/3 - (high[1]-low[1])), 0)
longTP = valuewhen(longEntry, (2*(high[1]+low[1]+close[1])/3 - low[1]), 0)
shortStop = valuewhen(shortEntry, ((high[1]+low[1]+close[1])/3 + (high[1]-low[1])), 0)
shortTP = valuewhen(shortEntry, (2*(high[1]+low[1]+close[1])/3 - high[1]), 0)

strategy.entry(id = "Long", long = true, when = longEntry)
strategy.exit("Exit Long", "Long", profit = longTP, loss = longStop, when = isLong) 

strategy.entry(id = "Short", long = false, when = shortEntry)
strategy.exit("Exit Short", "Short", profit = shortTP, loss = shortStop, when = isShort) 

更多内容