La stratégie Triple EMA Trend Following est une stratégie très adaptée pour suivre les tendances du marché. Elle utilise trois EMA de périodes différentes comme signaux de trading pour établir des positions longues ou courtes lorsqu'il y a une confirmation de tendance suffisante.
L'avantage de cette stratégie est qu'elle peut réduire les faux signaux et assurer une force de tendance suffisante avant d'entrer dans une position.
La stratégie utilise des EMA à 7-, 14 et 21 périodes comme indicateurs de signal d'entrée. La logique spécifique est que lorsque le prix franchit simultanément les trois EMA, passez long; lorsque le prix franchit simultanément les trois EMA, passez court.
Cette conception permet de réduire les faux signaux et de s'assurer que la tendance est suffisamment claire avant d'entrer.
La stratégie utilise un système de stop loss adaptatif basé sur l'ATR et le drawdown maximum. Elle calcule la volatilité des prix en temps réel et définit des lignes de stop loss en conséquence. Plus précisément, elle calcule un certain multiple d'ATR comme zone tampon de stop loss.
Lors d'une tendance haussière, la ligne de stop loss se déplacera vers le haut avec de nouveaux sommets, avec un bon effet de poursuite. Lorsque le prix retombe au point le plus bas de la zone tampon, la ligne de stop loss sera déclenchée pour fermer les positions. Cela peut contrôler le risque de stop loss en fonction des conditions du marché.
La stratégie utilise une méthode de prise de profit en pourcentage fixe. Après l'ouverture d'une position, une ligne de prise de profit sera fixée à un certain pourcentage au-dessus du prix d'entrée. Lorsque le prix monte à la ligne de prise de profit, la position sera fermée pour prendre des profits.
L'avantage de ce pourcentage fixe de prise de profit est qu'il permet de préétablir un niveau de profit cible qui satisfera la sortie une fois atteinte.
Peut éviter d'ouvrir aveuglément des positions sur des marchés volatils en les combinant avec des indicateurs de jugement de tendance; peut également utiliser des méthodes mobiles de rapport de profit ou de rapport de profit pour rendre les méthodes de profit plus flexibles.
La stratégie peut également être optimisée dans les aspects suivants:
Utilisez plus d'indicateurs pour déterminer le moment de l'entrée, tels que MACD, KD, etc., pour éviter d'être pris au piège dans des marchés volatils.
Essayez de déplacer prendre profit, ou rapport de profit prendre profit méthodes, pour rendre prendre profit méthodes plus souples.
Ajouter un mécanisme de suivi à la baisse à la méthode de stop loss, permettant de suivre à nouveau les points inférieurs lorsque le prix chute à nouveau, contrôlant ainsi le risque.
Ajuster les paramètres de la période EMA en fonction des caractéristiques des différents produits, optimisant le jugement de la tendance.
Ajouter le module de taille de position, peut ajuster par taille de transaction basée sur le ratio d'utilisation des fonds.
La stratégie de suivi des tendances triple EMA est une stratégie très pratique de suivi des tendances. Elle possède de fortes capacités de jugement des tendances, tout en disposant également de mécanismes adaptatifs de prise de profit et d'arrêt de perte pouvant gérer automatiquement les ordres. Du point de vue de l'optimisation, les systèmes de prise de profit et d'arrêt de perte peuvent être améliorés pour s'ajuster en fonction des conditions du marché en temps réel. Mais dans l'ensemble, cette stratégie est un choix de risque facile à mettre en œuvre et contrôlable.
/*backtest start: 2023-01-01 00:00:00 end: 2023-06-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(shorttitle='Three EMAs Trend-following Strategy',title='Three EMAs Trend-following Strategy (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1) //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" ema_1 = ema(close, input(7)) ema_2 = ema(close, input(12)) ema_3 = ema(close, input(21)) Take_profit= ((input (4))/100) longTakeProfit = strategy.position_avg_price * (1 + Take_profit) length = input(20, "Length", minval = 2) src = input(close, "Source") factor = input(3.0, "Multiplier", minval = 0.25, step = 0.25) volStop(src, atrlen, atrfactor) => var max = src var min = src var uptrend = true var stop = 0.0 atrM = nz(atr(atrlen) * atrfactor, tr) max := max(max, src) min := min(min, src) stop := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src) uptrend := src - stop >= 0.0 if uptrend != nz(uptrend[1], true) max := src min := src stop := uptrend ? max - atrM : min + atrM [stop, uptrend] [vStop, uptrend] = volStop(src, length, factor) go_long = crossover(close, ema_1) and crossover(close, ema_2) and crossover(close, ema_3) closeLong = close > longTakeProfit or crossunder(close, vStop) //Entry strategy.entry(id="long", long = true, when = go_long and window()) //Exit strategy.close("long", when = closeLong and window()) plot(vStop,"Vstop", color.black, linewidth=2) plot(ema_1,"EMA Short", color.green, linewidth=1) plot(ema_2,"EMA Mid", color.purple, linewidth=1) plot(ema_3,"EMA Long", color.red, linewidth=1)