这是由威尔德(Welles Wilder)在1978年创建的原始趋势均衡点系统,其交易规则可在其书籍《新概念技术分析系统》中找到。该系统利用动量指标识别趋势,并以特定方式设置止损止盈,形成一个较为稳健的趋势跟踪体系。
该策略的主要组成部分和交易规则如下:
动量指标:计算N周期收盘价变动情况,判断价格趋势。
做多条件:当前周期和过去两个周期的动量值连续上升。
做空条件:当前周期和过去两个周期的动量值连续下降。
止损点:前一日的均价±前一日波动范围。
止盈点:前一日的2倍均价-最低价(做多)或2倍均价-最高价(做空)。
入场后以止损或止盈价格退出。
该策略简单直接,利用动量判断趋势方向,并采用特定的止损止盈方式控制风险,形成一个较为稳健的趋势跟踪体系。
相比其他趋势跟踪策略,该策略有以下主要优势:
动量指标计算简单,容易实现。
多周期组合判断,可过滤噪声。
止损止盈方式较为稳健。
可限制单笔损失大小。
回撤可控,利润兑现明确。
实现难度不大,可灵活操作。
可调整参数,适用于不同市场。
策略思路直观简单。
总体来说,稳定性和风险控制能力较强。
但是该策略也存在以下风险:
动量指标存在滞后,可能错过关键转折。
效果依赖参数优化程度。
未考虑交易量,存在被套风险。
止损止盈设定较为武断,可能预期失败。
回测周期较短,需验证长期稳健性。
固定仓位操作,无法动态调整。
优化空间有限,超额收益存在不确定性。
须关注收益回撤比,防止过拟合。
鉴于上述分析,该策略可从以下维度进行优化:
尝试不同动量计算方式。
加入交易量验证。
优化止损止盈参数。
引入机器学习生成动态信号。
评估多品种多周期的稳健性。
构建动态仓位管理模型。
设定最大回撤容忍度。
优化资金管理策略。
持续回测验证,防止过优化。
该策略整体来说是一套相对简单直接的趋势跟踪体系。但任何策略都需要不断优化与验证,以保持对市场的适应性。通过系统性工作,可提高策略的效果和稳定性。
/*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)