Cette stratégie utilise les moyennes mobiles (MA) et l'EMA sur différentes périodes pour identifier et négocier des tendances.
L'idée de base est basée sur la comparaison de 3 SMA de différentes périodes pour déterminer la dynamique des prix.
Plus précisément, la stratégie utilise 3 SMA - 3e, 8e et 10e période SMA. Lorsque le prix est inférieur à tous les 3 SMA, il est considéré comme une tendance à la baisse.
En outre, une EMA à 5 périodes vérifie si le corps de la bougie pointe vers le haut avant d'entrer dans des transactions longues.
Pour les règles de sortie, le nombre maximal de clôtures rentables ou la durée maximale sont utilisés comme mécanisme de stop loss.
En combinant des MAs de différents délais, cette stratégie peut filtrer efficacement le bruit du marché et capturer les tendances à moyen et long terme.
L'utilisation de l'EMA pour vérifier la direction du corps de la bougie réduit le glissement inutile de l'achat dans les bougies en chute libre.
Dans l'ensemble, il s'agit d'un système stable et fiable, adapté à une tendance de plusieurs semaines à plusieurs mois.
La stratégie est sensible aux paramètres. Le choix sous-optimal de 3 périodes SMA ou 1 EMA peut détériorer la qualité du signal. Les paramètres doivent être optimisés pour différents instruments.
Le risque d'écart n'est pas géré. Une nouvelle fondamentale soudaine selon laquelle les prix d'écart pourraient entraîner des pertes.
Plus de délais de MAs ou EMA peuvent être ajoutés pour améliorer encore la précision de la tendance.
Un stop loss de prix modéré peut être testé pour verrouiller les bénéfices tout en réduisant les pertes lors de mouvements extrêmes.
L'apprentissage automatique peut optimiser dynamiquement les paramètres pour s'adapter à l'évolution des conditions du marché.
La stratégie est solide et fiable dans l'ensemble, utilisant des croisements MA pour déterminer la tendance complétée par un filtre EMA. Une optimisation des paramètres et des contrôles prudents des risques peuvent améliorer le taux de gain et la rentabilité.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Free Strategy #02 (ES / SPY)", overlay=true) // Inputs Quantity = input(1, minval=1, title="Quantity") SmaPeriod01 = input(3, minval=1, title="SMA Period 01") SmaPeriod02 = input(8, minval=1, title="SMA Period 02") SmaPeriod03 = input(10, minval=1, title="SMA Period 03") EmaPeriod01 = input(5, minval=1, title="EMA Period 01") MaxProfitCloses = input(5, minval=1, title="Max Profit Close") MaxBars = input(10, minval=1, title="Max Total Bars") // Misc Variables src = close BarsSinceEntry = 0 MaxProfitCount = 0 Sma01 = sma(close, SmaPeriod01) Sma02 = sma(close, SmaPeriod02) Sma03 = sma(close, SmaPeriod03) Ema01 = ema(close, EmaPeriod01) // Conditions Cond00 = strategy.position_size == 0 Cond01 = close < Sma03 Cond02 = close <= Sma01 Cond03 = close[1] > Sma01[1] Cond04 = open > Ema01 Cond05 = Sma02 < Sma02[1] // Update Exit Variables BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1 MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1]) // Entries strategy.entry(id="L1", long=true, qty=Quantity, when=(Cond00 and Cond01 and Cond02 and Cond03 and Cond04 and Cond05)) // Exits strategy.close("L1", (BarsSinceEntry - 1 >= MaxBars or MaxProfitCount >= MaxProfitCloses))