该策略是一个结合了动量交易和均值回归两种经典交易方法的高频量化交易策略。策略在5分钟时间框架上运行,通过指数移动平均线(EMA)来捕捉趋势性机会,同时利用布林带(Bollinger Bands)来识别价格的超买超卖状态,实现双重交易逻辑的优势互补。策略设计了灵活的参数配置,可以根据不同市场状态选择启用单一或组合交易模式。
策略采用双层交易逻辑设计: 1. 动量交易部分使用短期(50周期)和长期(400周期)EMA的交叉来判断趋势。当短期EMA向上穿越长期EMA时,产生做多信号;反之产生做空信号。 2. 均值回归部分使用布林带(20周期,2倍标准差)来捕捉价格偏离。当价格突破下轨时产生做多信号,突破上轨时产生做空信号。 3. 两个交易模块可以独立开启或关闭,实现策略的灵活切换。
该策略通过结合动量和均值回归两种经典交易方法,构建了一个适应性强、风险可控的高频量化交易系统。策略的模块化设计和参数灵活性使其具有良好的实用价值,通过持续优化和风险管理的改进,有望在实盘交易中取得稳定收益。
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Momentum and Mean Reversion Strategy", shorttitle = "MMV_V1", overlay=true)
// --- Inputit ja parametrit ---
use_momentum = input.bool(true, title="Käytä Momentum-strategiaa")
use_mean_reversion = input.bool(true, title="Käytä Keskiarvoon Palautumista (BB)")
// Momentum-parametrit
short_ema_period = input.int(50, title="Lyhyt EMA")
long_ema_period = input.int(400, title="Pitkä EMA")
// Bollinger Band -parametrit
bb_length = input.int(20, title="BB Pituus")
bb_std = input.float(2.0, title="BB Standardipoikkeama")
// --- Momentum-strategia: EMA-risteämä ---
short_ema = ta.ema(close, short_ema_period)
long_ema = ta.ema(close, long_ema_period)
momentum_long_signal = ta.crossover(short_ema, long_ema)
momentum_short_signal = ta.crossunder(short_ema, long_ema)
// --- Keskiarvoon palautuminen: Bollinger Bands ---
[bb_upper, bb_middle, bb_lower] = ta.bb(close, bb_length, bb_std)
bb_long_signal = ta.crossover(close, bb_lower) // Osto, kun hinta nousee alemman BB:n yli
bb_short_signal = ta.crossunder(close, bb_upper) // Myynti, kun hinta laskee ylemmän BB:n ali
// --- Kaupankäyntilogiikka ---
if (use_momentum and momentum_long_signal)
strategy.entry("Momentum Long", strategy.long)
if (use_momentum and momentum_short_signal)
strategy.entry("Momentum Short", strategy.short)
if (use_mean_reversion and bb_long_signal)
strategy.entry("BB Long", strategy.long)
if (use_mean_reversion and bb_short_signal)
strategy.entry("BB Short", strategy.short)