Cette stratégie est un système de trading de suivi de tendance basé sur le canal G personnalisé et la moyenne mobile exponentielle (EMA). Le canal G se compose de lignes supérieures (a), inférieures (b) et moyennes (avg), déterminant les limites du canal grâce au calcul dynamique des prix actuels et historiques.
La logique de base comprend deux composants principaux: le filtre G-Channel et EMA. Les calculs G-Channel sont basés sur les prix actuels et les données historiques, ajustant dynamiquement la largeur du canal via un algorithme adaptatif. La ligne supérieure (a) prend le maximum du prix actuel et de la ligne supérieure précédente, ajustée par des paramètres de largeur et de longueur du canal; la ligne inférieure (b) utilise une méthode similaire pour les valeurs minimales; la ligne du milieu est la moyenne arithmétique. Les signaux de trading sont déclenchés en combinant les croisements de prix avec les lignes de canal et la position relative à l'EMA: les signaux d'achat se produisent lorsque le prix dépasse la ligne inférieure alors qu'il est en dessous de l'EMA; les signaux de vente se produisent lorsque le prix dépasse la ligne supérieure alors qu'il est en dessous de l'EMA.
Le G-Channel et EMA Trend Filter Trading System est une stratégie de trading complète combinant les ruptures de canal et le suivi de tendance. Grâce aux caractéristiques dynamiques du G-Channel et à la fonction de confirmation de tendance de l'EMA, la stratégie capte efficacement les points tournants du marché tout en contrôlant les risques de trading. Bien que certaines limitations existent, la performance globale de la stratégie peut être encore améliorée grâce aux directions d'optimisation proposées. Cette stratégie convient aux marchés tendance et peut servir de cadre de base pour construire des systèmes de trading plus complexes.
/*backtest start: 2024-11-04 00:00:00 end: 2024-12-04 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("G-Channel with EMA Strategy", overlay=true) // G-Channel Indicator length = input.int(100, title="G-Channel Length") src = input(close, title="Source") var float a = na var float b = na a := math.max(src, nz(a[1])) - (nz(a[1]) - nz(b[1])) / length b := math.min(src, nz(b[1])) + (nz(a[1]) - nz(b[1])) / length avg = (a + b) / 2 // G-Channel buy/sell signals crossup = ta.crossover(close, b) crossdn = ta.crossunder(close, a) bullish = ta.barssince(crossdn) <= ta.barssince(crossup) // EMA Indicator emaLength = input.int(200, title="EMA Length") ema = ta.ema(close, emaLength) // Buy Condition: G-Channel gives a buy signal and price is below EMA buySignal = bullish and close < ema // Sell Condition: G-Channel gives a sell signal and price is above EMA sellSignal = not bullish and close > ema // Plotting the G-Channel and EMA plot(a, title="Upper", color=color.blue, linewidth=2, transp=100) plot(b, title="Lower", color=color.blue, linewidth=2, transp=100) plot(avg, title="Average", color=bullish ? color.lime : color.red, linewidth=1, transp=90) plot(ema, title="EMA", color=color.orange, linewidth=2) // Strategy Execution if (buySignal) strategy.entry("Buy", strategy.long) if (sellSignal) strategy.entry("Sell", strategy.short) // Plot Buy/Sell Signals plotshape(buySignal, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")