强势趋势突破策略

Author: ChaoZhang, Date: 2023-10-30 14:53:32
Tags:

强势趋势突破策略

概述

该策略通过计算一定周期内的最高价和最低价,形成上下轨,并在价格突破上轨时做多,在价格跌破下轨时平仓。该策略捕捉趋势的强势阶段,通过趋势突破来判断入场时机。

策略原理

该策略首先计算过去20根K线的最高价和最低价,形成上轨和下轨。当当前K线收盘价高于上轨时,做多;当价格跌破下轨时,平仓止损。

具体来说,策略通过highest和lowest函数计算最近20根K线的最高价和最低价,形成范围。然后判断当前K线收盘价是否高于上轨,如果是则做多;如果价格跌破下轨,则平仓止损。

该策略依靠趋势突破来判断入场时机,属于趋势跟踪策略。它只做多不做空,适用于具有明显趋势特征的品种。

优势分析

该策略具有以下优势:

  1. 策略思路简单清晰,容易理解实现。

  2. 利用趋势突破来判断入场时机,可捕捉趋势的强势阶段。

  3. 采用移动止损来控制风险,可有效限制单笔损失。

  4. 只做多不做空,适用于趋势明显的品种。

  5. 可自定义参数,调整周期长度和止损幅度。

风险分析

该策略也存在以下风险:

  1. 无法判断趋势反转,可能造成追高杀入。

  2. 止损位置容易被瞬间大幅度价格跳空触发。

  3. 趋势变化时,可能产生多个小止损。

  4. 只做多不做空,无法利用下行趋势获利。

  5. 参数设置不当可能导致过于敏感或迟钝。

优化方向

该策略可以从以下几个方面进行优化:

  1. 增加趋势判断指标,避免在趋势反转时仍然做多。例如加入MACD等指标判断趋势方向。

  2. 优化移动止损策略,设置风险控制更合理。例如采用随价格波动的移动止损。

  3. 增加空头策略,在下行趋势中也可以开仓做空获利。

  4. 对参数进行测试优化,找到最优参数组合。

  5. 增加自动参数优化功能,根据市场情况动态调整参数。

  6. 结合多个时间周期进行策略判断,避免被单一周期误导。

总结

该策略整体思路清晰易懂,利用趋势突破来判断入场时机,可捕捉趋势的强势阶段。同时采用移动止损来控制风险。但该策略也存在一些风险,如趋势判断不准、止损被突破等问题。我们可以从优化趋势判断、止损策略、空头策略等方面进行改进,使策略更全面和稳定。


/*backtest
start: 2023-10-22 00:00:00
end: 2023-10-24 17:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Donchian Wicks Strategy - Long Only with Customizable Donchian Exit and Stop Loss", "DWS", overlay = true)

// INPUTS
iLength = input(20, "Length", minval = 1)
stopLossPercent = input(1.0, "Stop Loss Percentage", type=input.float) / 100

// SETTING
float up = na
up := close > open ? high : nz(up[1])
float down = na
down := close < open ? low : nz(down[1])

highest = highest(up, iLength)
lowest = lowest(down, iLength)

// PLOT
p1 = plot(highest, "Highest", color.black, 2)
p2 = plot(lowest, "Lowest", color.black, 2)
fill(p1, p2, color.new(color.navy, 90), title="Range")

// ENTRY SIGNALS
wickDown = low < lowest

// STRATEGY IMPLEMENTATION
strategy.entry("Buy", strategy.long, when = wickDown)
strategy.exit("Sell at Donchian High", from_entry="Buy", limit=highest)

// Customizable Stop Loss
stopLossLevel = close * (1 - stopLossPercent)
strategy.exit("Stop Loss", from_entry="Buy", stop=stopLossLevel)


更多内容