本策略名称为“基于均线的震荡突破策略”。该策略通过计算价格的不同周期的移动平均线,判断价格是否突破关键均线进行长短做单。当短周期均线突破长周期均线时做多头,当短周期均线跌破长周期均线时做空头。
本策略主要基于均线理论。移动平均线是技术分析中常用的分析工具,它平滑了价格数据过滤了短期价格波动的“噪音”,反映了价格的主要趋势方向。 快速移动平均线反映价格的短期趋势,慢速移动平均线反映价格的长期趋势。当快速移动平均线上穿或下穿慢速移动平均线时,意味着短期趋势与长期趋势发生反转,这通常意味着价格反转的信号。
本策略就是利用这一原理,设置两个不同参数的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)