
La stratégie est un système de trading quantitatif qui combine un indicateur d’oscillation accélérée (AC) et un indicateur aléatoire (Stochastic). Il capte les changements de dynamique du marché en identifiant les écarts entre les prix et les indicateurs techniques, prédisant ainsi un potentiel renversement de tendance. La stratégie intègre également une ligne horizontale (SMA) et un indicateur relativement faible (RSI) pour augmenter la fiabilité du signal et définit des stop-loss fixes pour contrôler les risques.
La logique de base de la stratégie est basée sur la synergie de plusieurs indicateurs techniques. On calcule d’abord l’indicateur d’oscillation accélérée ((AC), qui est obtenu par la différence entre les moyennes de 5 et 34 cycles de la valeur moyenne des prix, puis en soustrayant la moyenne de ses N cycles. On calcule également les valeurs K et D des indicateurs aléatoires pour confirmer le signal de décalage.
Il s’agit d’une stratégie de trading quantitatif qui combine plusieurs indicateurs techniques pour capturer les points de retournement du marché en s’éloignant des signaux. L’avantage de la stratégie réside dans la vérification croisée de plusieurs indicateurs et un système de contrôle des risques bien développé, mais il faut également faire attention aux problèmes tels que les faux-bouts et l’optimisation des paramètres.
/*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)