本策略名称为“基于均线的震荡突破策略”。该策略通过计算价格的不同周期的移动平均线,判断价格是否突破关键均线进行长短做单。当短周期均线突破长周期均线时做多头,当短周期均线跌破长周期均线时做空头。
本策略主要基于均线理论。移动平均线是技术分析中常用的分析工具,它平滑了价格数据过滤了短期价格波动的“噪音”,反映了价格的主要趋势方向。 快速移动平均线反映价格的短期趋势,慢速移动平均线反映价格的长期趋势。当快速移动平均线上穿或下穿慢速移动平均线时,意味着短期趋势与长期趋势发生反转,这通常意味着价格反转的信号。
本策略就是利用这一原理,设置两个不同参数的EMA均线,一个短周期的作为快线,一个长周期的作为慢线。策略中分别设置了长度为9和26的EMA均线计算作为转换线和基准线。当短周期EMA上穿长周期EMA时做多,说明短期价格高于长期价格,属于多头信号;当短期EMA下穿长周期EMA时做空,说明短期价格低于长期价格,属于空头信号。
这样,本策略就通过快慢EMA的突破来判断价格可能的反转点,以捕捉价格的短期趋势机会。
容易产生多次小额盈亏来回交易的风险
可适当放宽止损幅度,确定明确的反转信号后再入场
针对低流通股票,容易出现跳空或差异化价格的问题
可通过参数优化,调整均线周期参数,使用优化后的参数riz进行交易
大盘震荡行情中容易出现虚假信号
可结合其他指标进行组合,确定明确信号
仅基于简单均线指标,对复杂行情判断能力较弱
可引入其他构造型指标,在关键点进行策略决策
本策略还可从以下几个方向进行进一步优化:
增加仓位管理机制,通过加减仓控制单子规模风险
增加止损机制,有效控制单笔损失
引入交易量,成交量指标进行组合,避免价格上的假突破
增加模型预测,利用机器学习等手段预测价格可能的反转概率,提升决策效果
利用深度学习等方法模拟专业交易员的决策思路,在反转概率大的点选取交易信号
本策略属于基于均线指标判断的短期反转策略。可定制的参数设置为其提供了良好的灵活性。虽然仅利用简单指标,但通过参数调整可很好适应市场环境。本策略旨在抓取短期价格反转提供的套利机会。通过进一步引入仓位管理、止损机制等手段,可以有效控制风险,提高策略稳定性。同时也可引入更多进阶技术指标和机器学习方法进行优化,探索策略效果提升空间。
/*backtest start: 2023-01-16 00:00:00 end: 2024-01-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Juiced Ichimoku Strat", overlay=true) USE_TRADESESSION = input(title='Use Trading Session?', type=bool, defval=true) trade_session = input(title='Trade Session:', defval='0800-1600', confirm=false) istradingsession = not USE_TRADESESSION ? false : not na(time('1', trade_session)) bgcolor(istradingsession?gray:na) varLo = input(title="Fast (Conversion) Line", defval=9, minval=1, maxval=99999) varHi = input(title="Slow (Base) Line", defval=26, minval=1, maxval=99999) emafreq = input(title="Ema on price frequency", defval=2, minval=1, maxval=99999) a = lowest(varLo) b = highest(varLo) c = (a + b ) / 2 d = lowest(varHi) e = highest(varHi) f = (d + e) / 2 //g = ((c + f) / 2)[varHi] //h = ((highest(varHi * 2) + lowest(varHi * 2)) / 2)[varHi] z = ema(close, emafreq) bgcolor(z > c and z > f ? green : z < c and z < f ? red : yellow, transp=70) plot(z, title="ema on Price", color=black) plot(c, title="Fast (Conversion) Line", color=green) plot(f, title="Slow (Base) Line", color=red) long = z > c and z > f and (USE_TRADESESSION ? istradingsession : true) short = z < c and z < f and (USE_TRADESESSION ? istradingsession : true) //exit = z < c and z > f or z > c and z < f closelong = z < c and z > f or z > c and z < f and (USE_TRADESESSION ? istradingsession : true) if (closelong) strategy.close("Long") closeshort = z < c and z > f or z > c and z < f and (USE_TRADESESSION ? istradingsession : true) if (closeshort) strategy.close("Short") strategy.entry("long", strategy.long, when=long) strategy.entry("short", strategy.short, when=short)