
La stratégie est un système de trading de suivi de tendance basé sur des canaux G personnalisés et des moyennes mobiles indicielles (EMA). Les canaux G sont constitués d’un axe supérieur (a), un axe inférieur (b) et un axe intermédiaire (avg) pour déterminer les limites des canaux en calculant dynamiquement les prix actuels et historiques. La stratégie est combinée à l’EMA en tant que filtre de tendance pour générer des signaux de négociation et capturer efficacement les virages de tendance du marché par la croisée des prix avec les lignes de la chaîne et la relation de position avec l’EMA.
La logique centrale de la stratégie comprend deux composants principaux: le canal G et le filtre EMA. Le canal G est calculé en fonction des prix actuels et des données historiques, en ajustant dynamiquement la largeur du canal grâce à un algorithme d’adaptation. La trajectoire ascendante (a) prend la plus grande valeur de la trajectoire ascendante actuelle et l’ajuste dynamiquement en fonction des paramètres de la largeur et de la longueur du canal; la trajectoire descendante (b) utilise une méthode similaire pour calculer la plus petite valeur; la trajectoire moyenne est la moyenne arithmétique de la trajectoire ascendante.
Le système de négociation de filtrage de tendances de la chaîne G et de l’EMA est une stratégie de négociation complète combinant rupture de la chaîne et suivi de la tendance. Grâce aux caractéristiques dynamiques de la chaîne G et aux fonctions de confirmation de tendance de l’EMA, la stratégie est capable de capturer efficacement les points de retournement du marché et de contrôler les risques de négociation. Bien qu’il existe certaines limitations, la performance globale de la stratégie est susceptible d’être encore améliorée par les orientations d’optimisation proposées.
/*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")