突破追踪策略


创建日期: 2023-09-15 12:36:43 最后修改: 2023-09-15 12:36:43
复制: 0 点击次数: 468
avatar of ChaoZhang ChaoZhang
1
关注
1259
关注者

策略概述

突破追踪策略是一个仅做多的短线交易策略。它监控价格是否突破布林带上轨,如果突破就进入做多方向。退出有两种选择:第一种是价格突破布林带下轨时平仓;第二种是价格跌破中轴线时平仓。该策略忽略滑点和手续费的影响。

策略原理

  1. 当价格突破布林带上轨时,做多入场。

  2. 有两种退出方式:

    • 选择1:价格跌破布林带下轨时平仓

    • 选择2:价格跌破布林带中轴线时平仓

  3. 计算收益时不考虑滑点和手续费的影响。

该策略运用布林带指标判断趋势和超买超卖情况。布林带由中轴线、上轨和下轨组成。中轴线是n日收盘价的简单移动平均线,上下轨是根据标准差画出的通道带。上轨和下轨可看作是未来价格的阻力线和支撑线。

当价格突破上轨时,表示牛市正在形成,可以做多。当价格跌破下轨时,表示熊市来临,应该平仓。中轴线代表了价格的平均水平。

该策略的优点是运用布林带判断趋势方向,可以减少假突破带来的风险。它只在趋势出现时做多,符合趋势交易的思路。而且有两个不同的退出方式,可以根据市场情况选择更合适的方式。

策略优势

  • 使用布林带判断趋势,可以减少假突破的风险

  • 只在趋势牛市中做多,符合趋势交易思路

  • 提供两个不同的退出方式,可以灵活应对市场变化

  • 忽略滑点和手续费,计算收益更简单

  • 适用于各个时间周期,可用于日内和趋势交易

风险警示

  • 存在一定的假突破风险,布林带指标并不能完全避免

  • 忽略滑点和手续费会高估实际收益

  • 仅做多,无法在熊市中获利

  • 应适当调整参数,如突破周期、中轴周期等,以适应市场变化

总结

突破追踪策略整体来说是一个优化比较高、风险可控的趋势追踪策略。它根据布林带指标判断趋势方向,在趋势出现时选择做多方向,并提供两个退出机制来控制风险。该策略操作简单,容易实施,适用于各个时间周期。但需要注意防范假突破,并做好参数调整,以适应复杂多变的市场环境。

策略源码
/*backtest
start: 2023-09-07 00:00:00
end: 2023-09-14 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/
// © Senthaamizh

//Break out trading system works best in a weekly chart and daily chart of Nifty and BankNifty
//@version=4

strategy("Donchain BO",shorttitle = "DBO",default_qty_type = strategy.percent_of_equity,default_qty_value = 100, overlay=true)
length = input(20, minval=1)
exit = input(1, minval=1, maxval=2,title = "Exit Option") // Use Option 1 to exit using lower band; Use Option 2 to exit using basis line

lower = lowest(length)
upper = highest(length)
basis = avg(upper, lower)

l = plot(lower, color=color.blue)
u = plot(upper, color=color.blue)
plot(basis, color=color.orange)
fill(u, l, color=color.blue)

longCondition = crossover(close,upper[1])
if (longCondition)
    strategy.entry("Long", strategy.long)

if(exit==1)
    if (crossunder(close,lower[1]))
        strategy.close("Long")

if(exit==2) 
    if (crossunder(close,basis[1]))
        strategy.close("Long")