双均线交叉短线策略是一种简单高效的短线交易策略。该策略利用价格与移动平均线的交叉信号作为买入卖出信号,在短线内捕捉价格的趋势性波动。
双均线交叉策略使用两个不同周期的移动平均线,一条较短期的MA线和一条较长期的MA线。当短期MA线从下方向上突破长期MA线时生成买入信号;当短期MA线从上方向下跌破长期MA线时生成卖出信号。
该策略先定义变量length指定长周期MA的长度为50,然后定义price为收盘价,计算长度为length的MA线值,并保存到ma变量中。再定义bcond判断price是否高于ma值,如果是则bcount加1,否则归零。如果bcond连续触发confirmBars次数(默认为2),则生成买入信号。相反,当price低于ma时,按同样逻辑生成卖出信号。
为过滤掉部分无效信号,策略增加了三个过滤条件clc,clc0和clc1。这三个条件判断当前周期与前一周期的收盘价大小关系,以及当前周期收盘价与开盘价的大小关系,如果同时满足则允许生成信号。
最后,当价格重新跌破上轨或重新突破下轨时,分别平掉相应的多仓或空仓头寸。
为降低风险,可以考虑根据市场波动率动态调整均线参数;也可以采用游离止损或百分比止损,使止损点能够灵活调整。
该策略可以从以下几个方面进行优化:
优化均线系统参数,比如根据市场波动率等指标动态调整均线长度。
增加附加过滤条件,如成交量突增等,以提高信号质量。
优化止损策略,采用浮动止损或百分比止损等方式,减少止损过早的概率。
结合其他指标,如MACD、RSI等,进行多因子验证,提高信号有效性。
增加自动风险管理策略,例如动态调整仓位规模,控制单笔损失。
针对买入卖出信号加入机器学习方法,建立更准确的信号判断模型。
双均线交叉短线策略整体是一个非常实用的短线交易策略,具有操作简单,容易实现等优点。但需注意控制震荡市的假信号,并进行动态参数优化等改进,才能发挥该策略最大效用。结合止损管理和风险控制手段,可以进一步提高策略的稳定性。
/*backtest start: 2023-09-29 00:00:00 end: 2023-10-29 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MovingAvg Cross", overlay=true) length = input(50) confirmBars = input(2) price = close ma = sma(price, length) bcond = price > ma bcount = 0 bcount := bcond ? nz(bcount[1]) + 1 : 0 clc=close[0]>close[1] clc0=close[0]>open[0] clc1=close[1]>open[1] if clc and clc0 and clc1 and (bcount == confirmBars) strategy.entry("buy", strategy.long) scond = price < ma scount = 0 scount := scond ? nz(scount[1]) + 1 : 0 csc=close[0]<close[1] csc0=close[0]<open[0] csc1=close[1]<open[1] if csc and csc0 and csc1 and (scount == confirmBars) strategy.entry("sell", strategy.short) strategy.close("buy", when=scond) strategy.close("sell",when=bcond) plot(ma, color=color.red) //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)