
이 전략은 모멘텀 거래와 평균 회귀라는 두 가지 고전적 거래 방식을 결합한 고빈도 양적 거래 전략입니다. 이 전략은 5분 시간 단위에서 실행되며, 지수 이동 평균(EMA)을 사용하여 추세 기회를 포착하고 볼린저 밴드를 사용하여 매수 과다 및 매도 과다 가격 조건을 식별하여 이중 거래 로직의 상호 보완적인 이점을 얻습니다. 이 전략은 유연한 매개변수 구성을 통해 설계되었으며, 다양한 시장 상황에 따라 단일 또는 결합 거래 모드를 활성화하도록 선택할 수 있습니다.
이 전략은 2계층 거래 논리 설계를 채택합니다.
이 전략은 모멘텀과 평균 회귀라는 두 가지 고전적인 거래 방법을 결합하여 강력한 적응성과 통제 가능한 위험을 갖춘 고빈도 정량적 거래 시스템을 구축합니다. 전략의 모듈식 설계와 매개변수 유연성은 좋은 실질적 가치를 제공합니다. 지속적인 최적화와 위험 관리 개선을 통해 실제 거래에서 안정적인 수익을 달성할 것으로 기대됩니다.
/*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)