
Стратегия представляет собой количественную торговую систему, объединяющую ускоренный волатильный индикатор (AC) и случайный индикатор (Stochastic). Она улавливает изменения в динамике рынка, идентифицируя отклонения между ценовыми и техническими индикаторами, что позволяет прогнозировать потенциальные перемены в тренде. Стратегия также включает в себя равнолинейный (SMA) и относительно слабый индикатор (RSI) для повышения надежности сигнала и устанавливает фиксированные стоп-лоски для контроля риска.
Основная логика стратегии основана на совместной работе с несколькими техническими индикаторами. Сначала рассчитывается ускоренный шокирующий индикатор ((AC), который получается за счет разницы между средним значением цены за 5 циклов и средним значением за 34 циклов, а затем за вычетом его среднего значения за N циклов. Одновременно рассчитываются значения K и D случайных индикаторов для подтверждения обратного отклонения.
Это количественная торговая стратегия, которая объединяет несколько технических показателей, чтобы захватить рыночные переломные моменты, отклоняясь от сигналов. Преимущества стратегии заключаются в перекрестной проверке нескольких показателей и совершенной системе контроля риска, но также необходимо обратить внимание на такие вопросы, как ложные прорывы и оптимизация параметров.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © JayQwae
//@version=5
strategy("Enhanced AC Divergence Strategy with Stochastic Divergence", overlay=true)
// Input settings
tp_pips = input.float(0.0020, "Take Profit (in price)", step=0.0001)
sl_pips = input.float(0.0040, "Stop Loss (in price)", step=0.0001) // 40 pips
ac_length = input.int(5, "AC Length")
rsi_length = input.int(14, "RSI Length")
stoch_k = input.int(14, "Stochastic K Length")
stoch_d = input.int(3, "Stochastic D Smoothing")
stoch_ob = input.float(80, "Stochastic Overbought Level")
stoch_os = input.float(20, "Stochastic Oversold Level")
// Accelerator Oscillator Calculation
high_low_mid = (high + low) / 2
ao = ta.sma(high_low_mid, 5) - ta.sma(high_low_mid, 34)
ac = ao - ta.sma(ao, ac_length)
// RSI Calculation
rsi = ta.rsi(close, rsi_length)
// Stochastic Oscillator Calculation
k = ta.sma(ta.stoch(close, high, low, stoch_k), stoch_d)
d = ta.sma(k, stoch_d)
// Stochastic Divergence Detection
stoch_bull_div = ta.lowest(close, 5) < ta.lowest(close[1], 5) and ta.lowest(k, 5) > ta.lowest(k[1], 5)
stoch_bear_div = ta.highest(close, 5) > ta.highest(close[1], 5) and ta.highest(k, 5) < ta.highest(k[1], 5)
// Main Divergence Detection
bullish_div = ta.lowest(close, 5) < ta.lowest(close[1], 5) and ac > ac[1] and stoch_bull_div
bearish_div = ta.highest(close, 5) > ta.highest(close[1], 5) and ac < ac[1] and stoch_bear_div
// Plot divergences
plotshape(bullish_div, title="Bullish Divergence", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(bearish_div, title="Bearish Divergence", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// Strategy rules
if (bullish_div)
strategy.entry("Buy", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Buy", limit=close + tp_pips, stop=close - sl_pips)
if (bearish_div)
strategy.entry("Sell", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Sell", limit=close - tp_pips, stop=close + sl_pips)
// Alerts
if (bullish_div)
alert("Bullish Divergence detected! Potential Buy Opportunity", alert.freq_once_per_bar)
if (bearish_div)
alert("Bearish Divergence detected! Potential Sell Opportunity", alert.freq_once_per_bar)