该策略基于移动平均线判断趋势方向,以一定比例的ATR止盈,并结合ATR动态调整仓位。目标是跟踪趋势获利,同时控制风险。
策略使用长度为N的简单移动平均线判断趋势方向。当短期SMA上穿长期SMA时,做多;短期SMA下穿长期SMA时,做空。
入场后,策略以ATR的一定倍数作为止盈位,如长仓则止盈位为Entry Price + ATR * Factor。当价格超过止盈位时止盈出场。
此外,策略以ATR的大小调整仓位。ATR大小代表市场波动率,仓位大小与ATR呈反比。ATR越大,仓位越小。
使用移动平均判断趋势方向,对趋势有一定跟踪能力。
ATR止盈方式可盈利同时避免反转。
动态仓位调整,可根据市场波动程度控制风险。
止盈因子和仓位参数可自定义。
结合止损可进一步限制风险。
移动平均线存在滞后,可能导致入场迟缓。可以测试更敏感的参数。
ATR大小变化可能导致止盈过小或过大。可以加入ATR均线提取其趋势。
波动过大时,仓位可能过小影响盈利。可以设置仓位下限。
未设定止损导致亏损扩大的风险。可以加入移动止损策略。
标的选择不当,如低波动率资产,该策略效果可能不佳。应选择波动较大的标的。
测试不同参数组合,寻找最优参数。
优化开仓逻辑,如加入其他指标过滤。
研究动态止盈和止损策略,让止盈止损更灵活。
结合波动率指标进行仓位管理。
加入再入场机制,延长持仓时间。
该策略使用移动平均判断趋势,以ATR比例止盈,并动态调整仓位。优点是有一定的趋势跟踪能力,可通过参数调整控制风险。但存在参数选择困难、止盈过度等问题。可通过指标优化、止损策略等进一步完善,使策略更稳健。
/*backtest
start: 2023-09-10 00:00:00
end: 2023-09-17 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/
// © dongyun
//@version=4
strategy("利润目标止损的移动平均线", overlay=true)
period = input(80,'')
ptper = input(252,'')
ptfactor = input(12,'')
sizeper = input(20, '')
trend = 0.0
signal = 0
size = 1.0
investment = 100000
atrange = 0.0
ptrange = 0.0
stoph = 0.0
stopl = 0.0
if sizeper != 0
atrange := atr(sizeper)
if atrange == 0 or sizeper == 0
size := 1
else
size := investment/atrange * 0.1
trend := sma(close,period)
if signal != 1 and nz(trend[1]) < nz(trend[2]) and trend > nz(trend[1])
strategy.entry('long',strategy.long, comment='open_long')
signal := 1
else
signal := nz(signal[1])
if signal != -1 and nz(trend[1]) > nz(trend[2]) and trend < nz(trend[1])
strategy.entry('short',strategy.short, comment='open_short')
signal := -1
else
if signal == 0
signal := nz(signal[1])
ptrange := atr(ptper)
if strategy.position_size > 0
strategy.exit("exit_long", "long", qty = strategy.position_size, limit = close + ptfactor*ptrange , comment='trail_long')
else
if strategy.position_size < 0
strategy.exit("exit_short", "short", qty = abs(strategy.position_size), limit = close - ptfactor*ptrange, comment='trail_short')