Stratégie de cassure de l'EMA suivant la tendance


Date de création: 2024-01-12 14:23:11 Dernière modification: 2024-01-12 14:23:11
Copier: 0 Nombre de clics: 620
1
Suivre
1617
Abonnés

Stratégie de cassure de l’EMA suivant la tendance

Aperçu

La stratégie est une stratégie de rupture de type suivi de tendance basée sur les moyennes mobiles indicielles (EMA). Elle détermine la direction de la tendance sur les périodes lunaire, périodique et solaire et exécute des opérations d’entrée et de sortie spécifiques sur les périodes solaires.

Principe de stratégie

Le jugement des tendances

  1. Sur la ligne lunaire, les prix sont supérieurs à l’EMA du 8 et à l’EMA du 21, ce qui est considéré comme une tendance à plusieurs têtes;
  2. Sur la courbe circulaire, le prix est supérieur à l’EMA du 8e jour, et l’EMA du 8e jour est supérieur à l’EMA du 21e jour, ce qui est considéré comme une tendance à plusieurs têtes;
  3. Sur la chaîne solaire, le prix est supérieur à l’EMA du 8 et à l’EMA du 21, ce qui est considéré comme une tendance à plusieurs têtes;

Signaux d’entrée

  1. La tendance à la baisse a été observée sur la chaîne solaire, où le point bas a touché l’EMA du 8 juillet.
  2. La régression est la forme Ring Low de Lower High et Lower Low;
  3. Le prix de clôture supérieur au sommet de la journée précédente constitue un signal de renversement de tendance;

Signaux de sortie

Définir les paramètres d’arrêt et de perte pour atteindre la sortie.

Analyse des avantages

  1. L’analyse des tendances sur trois périodes permettra d’améliorer l’exactitude de l’analyse.
  2. Les points bas de la régression touchent les supports constitutifs de l’EMA, ce qui augmente la certitude d’entrée;
  3. Le blogueur a également publié un article dans lequel il explique comment les gens ont commencé à utiliser les réseaux sociaux.

Analyse des risques

  1. L’incohérence entre les jugements des trois périodes peut provoquer des signaux erronés.
  2. La réaction est trop forte pour que la stratégie soit inefficace.
  3. Les parties de rupture du marché pourraient entraîner des pertes massives.

Direction d’optimisation

  1. Les indicateurs comme le MACD, le RSI et d’autres ont été ajoutés.
  2. Optimiser le paramètre EMA;
  3. la correction de l’amplitude du stop loss combinée à l’indicateur de volatilité;

Résumer

L’ensemble de la stratégie est une stratégie de suivi de la tendance, et le potentiel de gain est très bon si la tendance est correctement jugée. Il faut faire attention à éviter les erreurs de jugement de la tendance et à éviter les signaux erronés causés par des retournements excessifs.

Code source de la stratégie
/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © the_daily_trader

//@version=5
// ---------------------        Start of Code        ---------------------
strategy("Swing Trades Validator", overlay=true, margin_long=100, pyramiding = 0)

// Indicator Display Checks
TakeProfitPercent       = input.float(title="Profit Target %", defval=10, minval=1, step=0.05)
StopLossPercent         = input.float(title="Stop Loss %", defval=10, minval=1, step=0.05)
pullbackchoice          = input.bool(false, "Relaxed Entry Rules")

// EMAs
emaH            = ta.ema(close, 8)
emaHyest        = ta.ema(close[1], 8)
emaHyest1       = ta.ema(close[2], 8)
emaHyest2       = ta.ema(close[3], 8)
emaL            = ta.ema(close, 21)
emaLyest        = ta.ema(close[1], 21)
emaLyest1       = ta.ema(close[2], 21)
emaLyest2       = ta.ema(close[3], 21)
emaf            = ta.ema(close, 50)
emath           = ta.ema(close, 200)
emathhigh       = ta.ema(high, 200)
emathlow        = ta.ema(low, 200)
emaslowmonthly  = request.security(syminfo.tickerid, "M", emaL) // Monthly 21ema
emafastmonthly  = request.security(syminfo.tickerid, "M", emaH) // Monthly 8ema
emaslowweekly   = request.security(syminfo.tickerid, "W", emaL) // Weekly 21ema
emafastweekly   = request.security(syminfo.tickerid, "W", emaH) // Weekly 8ema
emaslowdaily    = request.security(syminfo.tickerid, "D", emaL) // Daily 21ema
emafastdaily    = request.security(syminfo.tickerid, "D", emaH) // Daily 8ema
emafdaily       = request.security(syminfo.tickerid, "D", emaf) // Daily 50ema
emathdaily      = request.security(syminfo.tickerid, "D", emath) // Daily ema
emathdailyhigh  = request.security(syminfo.tickerid, "D", emathhigh) // Daily ema High
emathdailylow   = request.security(syminfo.tickerid, "D", emathlow) // Daily ema Low
ema21yest       = request.security(syminfo.tickerid, "D", emaLyest) // Daily 21ema 1 day ago
ema21yest1      = request.security(syminfo.tickerid, "D", emaLyest1) // Daily 21ema 2 days ago
ema21yest2      = request.security(syminfo.tickerid, "D", emaLyest2) // Daily 21ema 3 days ago
ema8yest        = request.security(syminfo.tickerid, "D", emaHyest) // Daily 8ema 1 day ago
ema8yest1       = request.security(syminfo.tickerid, "D", emaHyest1) // Daily 8ema 2 days ago
ema8yest2       = request.security(syminfo.tickerid, "D", emaHyest2) // Daily 8ema 3 days ago


// Prices
monthopen       = request.security(syminfo.tickerid, 'M', open, barmerge.gaps_off, barmerge.lookahead_on)
monthclose      = request.security(syminfo.tickerid, 'M', close, barmerge.gaps_off, barmerge.lookahead_on)
weekopen        = request.security(syminfo.tickerid, 'W', open, barmerge.gaps_off, barmerge.lookahead_on)
weekclose       = request.security(syminfo.tickerid, 'W', close, barmerge.gaps_off, barmerge.lookahead_on)
dayopen         = request.security(syminfo.tickerid, 'D', open, barmerge.gaps_off, barmerge.lookahead_on)
dayclose        = request.security(syminfo.tickerid, 'D', close, barmerge.gaps_off, barmerge.lookahead_on)
threedayhigh    = request.security(syminfo.tickerid, 'D', high[3], barmerge.gaps_off, barmerge.lookahead_on)
twodayhigh      = request.security(syminfo.tickerid, 'D', high[2], barmerge.gaps_off, barmerge.lookahead_on)
yesthigh        = request.security(syminfo.tickerid, 'D', high[1], barmerge.gaps_off, barmerge.lookahead_on)
yestlow         = request.security(syminfo.tickerid, 'D', low[1], barmerge.gaps_off, barmerge.lookahead_on)

// Conditions 
monthlybullish          = emafastmonthly > emaslowmonthly
monthlybullishprice     = close > emafastmonthly
monthlybullishcandle    = monthclose > monthopen
weeklybullish           = emafastweekly > emaslowweekly
weeklybullishprice      = close > emafastweekly
weeklybullishcandle     = weekclose > weekopen
dailybullish1           = emafdaily > emathdaily
dailybullish2           = emafastdaily > emaslowdaily
dailybullishprice       = close > emafastdaily
dailybullishcandle      = dayclose > dayopen
ringlow                 = yestlow <= ema8yest
aggropullback           = twodayhigh < threedayhigh
pullback                = (pullbackchoice ? aggropullback : 0)
pullbackfailure         = dayclose > yesthigh and yesthigh < twodayhigh or pullback
emasetup                = ema8yest > ema21yest and ema8yest1 > ema21yest1 and ema8yest2 > ema21yest2

// Target Profit and Stop Loss Inputs
// Input parameters can be found at the beginning of the code
ProfitTarget        = (close * (TakeProfitPercent / 100)) / syminfo.mintick
StopLoss            = (close * (StopLossPercent / 100)) / syminfo.mintick

longCondition = monthlybullish and monthlybullishprice and weeklybullish and weeklybullishprice and dailybullish1 and dailybullish2 and dailybullishprice and monthlybullishcandle and weeklybullishcandle and dailybullishcandle and ringlow and pullbackfailure and emasetup

if (longCondition)
    strategy.entry("Long", strategy.long)
    strategy.exit ("Exit", "Long", profit = ProfitTarget, loss = StopLoss)
    // strategy.close("Long", qty_percent = 100)


// -----------xxxxxxxxxxx-------------    End of Code     -----------xxxxxxxxxxx---------------