
Эта стратегия является количественной торговой стратегией, основанной на перекрестке показателя ценовых колебаний (DPO) и индексальных движущихся средних (EMA). Основная идея стратегии заключается в том, чтобы улавливать изменения в рыночных тенденциях, сравнивая DPO с его отношениями к 4-х циклическим EMA, что приводит к появлению сигналов покупки и продажи. Эта стратегия особенно подходит для больших временных периодов от 4 часов и выше, и лучше всего работает при использовании гладкого скольжения (Heikin Ashi).
Основная логика стратегии включает следующие ключевые шаги:
Стратегия DPO-EMA Trend Crossing является количественной торговой стратегией, которая имеет простую структуру, но значительную эффективность. Благодаря сочетанию с отклонением от тренда и движущимися средними, стратегия может эффективно улавливать изменения в тенденциях рынка. Хотя существуют некоторые присущие ей риски, благодаря разумной оптимизации и мерам управления рисками стратегия по-прежнему имеет хорошую практическую ценность. Для среднесрочных и долгосрочных трейдеров это выбор стратегии, который стоит рассмотреть.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("DPO 4,24 Strategy", shorttitle="DPO Strategy", overlay=true)
// Define a fixed lookback period and EMA length
length = 24
ema_length = 4
// Calculate the Simple Moving Average (SMA) of the closing prices
sma = ta.sma(close, length)
// Calculate the shifted SMA value
shifted_sma = sma[length / 2 + 1]
// Calculate the Detrended Price Oscillator (DPO)
dpo = close - shifted_sma
// Calculate the 4-period Exponential Moving Average (EMA) of the DPO
dpo_ema = ta.ema(dpo, ema_length)
// Generate buy and sell signals based on crossovers
buy_signal = ta.crossover(dpo, dpo_ema)
sell_signal = ta.crossunder(dpo, dpo_ema)
// Overlay buy and sell signals on the candlestick chart
plotshape(series=buy_signal, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sell_signal, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Strategy entry and exit conditions
if (buy_signal)
strategy.entry("Buy", strategy.long)
if (sell_signal)
strategy.close("Buy")