布林带趋势震荡交易策略


创建日期: 2023-11-23 10:48:58 最后修改: 2023-11-23 10:57:10
复制: 3 点击次数: 363
avatar of ChaoZhang ChaoZhang
1
关注
1239
关注者

布林带趋势震荡交易策略

概述

本策略基于布林带指标判断市场趋势方向,在趋势方向发生转折时进行反向操作。多头市场时,当价格跌破布林带下轨时做多;空头市场时,当价格突破布林带上轨时做空。同时,策略还设置了移动平均线作为长期趋势的判断标准,使策略更加稳定。

策略原理

本策略使用布林带中轨、上轨、下轨判断市场趋势方向。布林带中轨为n周期的指数移动平均线,布林带上轨和下轨分别为中轨+2.3倍标准差和中轨-2.3倍标准差。当价格突破下轨时,表示当前处于多头市场;当价格突破上轨时,表示当前处于空头市场。

另外,策略还设置200周期简单移动平均线sma作为长期趋势判断指标。只有当布林带指标和sma指标同向的时候,才会发出交易信号。这可以有效过滤掉部分假突破。

具体交易逻辑如下: 1. 判断多头趋势:布林带上轨>sma,中轨>sma,下轨>=sma 2. 判断空头趋势:布林带上轨 3. 做多条件:多头趋势+价格跌破布林带下轨 4. 出场条件:价格突破布林带上轨 5. 做空条件:空头趋势+价格突破布林带上轨 6. 出场条件:价格跌破布林带中轨 或 价格重新回调到230周期移动平均线之上

优势分析

  1. 使用布林带判断趋势方向,可以有效捕捉突破操作机会
  2. 加入长期移动平均线过滤,可以减少假突破带来的风险
  3. 做多做空逻辑清晰,容易理解操作
  4. 空头出场条件设定得比较严格,可以减少亏损

风险分析

  1. 布林带与移动平均线发出交易信号时,可能会出现较大滑点
  2. 空头条件过于严格,可能导致空头获利不高
  3. 参数设置不当可能导致交易频率过高或过低
  4. 突破型策略容易形成巨大亏损

改进方法: 1. 优化布林带参数,降低交易频率 2. 设定止损点,避免单笔巨亏 3. 加入交易量指标过滤,确保突破有效性

总结

本策略整体来说较为简单易懂,使用布林带判定趋势,在转折点进行反向操作。同时加入长短期判断指标,可以有效过滤信号。策略优化空间还很大,适当调整参数,加入量能指标等可以进一步改进。

策略源码
/*backtest
start: 2023-10-23 00:00:00
end: 2023-11-22 00:00:00
period: 1h
basePeriod: 15m
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/
// © Aayonga

//@version=5
strategy("布林趋势震荡单", overlay=true,initial_capital=10000,default_qty_type=strategy.fixed, default_qty_value=1 )
bollL=input.int(20,minval=1,title = "长度")
bollmult=input.float(2.3,minval=0,step=0.1,title = "标准差")
basis=ta.ema(close,bollL)
dev=bollmult*ta.stdev(close,bollL)
upper=basis+dev
lower=basis-dev
smaL=input.int(200,minval=1,step=1,title = "趋势分界线")
sma=ta.sma(close,smaL)
//多头趋势
longT=upper>sma and basis>sma and lower>=sma
//空头趋势
shortT=upper<sma and basis<sma and lower<=sma

//入场位
longE=ta.crossover(close,lower)
shortE=ta.crossover(close,upper)
//出场位

longEXIT=ta.crossover(high,upper) 
shortEXIT=ta.crossunder(close,basis) or ta.crossover(close,ta.sma(close,230)) 

if longT and longE
    strategy.entry("多",strategy.long)

if longEXIT
    strategy.close("多",comment = "多出场")

if shortE and shortT
    strategy.entry("空",strategy.short)

if shortEXIT
    strategy.close("空",comment = "空出场")