La stratégie de percée rapide et lente de l'EMA est une stratégie simple et efficace pour suivre les tendances du marché. Elle utilise des croisements d'EMA de différents cycles pour générer des signaux d'achat et de vente. L'idée de base est la suivante: lorsque l'EMA de cycle court traverse au-dessus de l'EMA de cycle plus long, un signal d'achat est généré; lorsque l'EMA de cycle court traverse en dessous de l'EMA de cycle plus long, un signal de vente est généré.
La stratégie repose principalement sur la comparaison des EMA à 5 cycles, 8 cycles et 13 cycles pour générer des signaux de trading.
Cela réalise l'effet du suivi des tendances à moyen et à long terme. Lorsque la moyenne mobile à court cycle dépasse la moyenne mobile à long cycle, cela signifie que la tendance à court terme est devenue haussière et peut être achetée; lorsque la moyenne mobile à court cycle dépasse la moyenne mobile à long cycle, cela signifie que la tendance à court terme est devenue baissière et doit être vendue.
Les principaux avantages de cette stratégie sont les suivants:
Cette stratégie comporte également certains risques:
La stratégie peut être optimisée dans les aspects suivants:
En résumé, le fonctionnement de la stratégie de rupture rapide et lente de la EMA est fluide, les signaux sont plus fiables, le retrait n'est pas élevé et il convient au suivi des tendances à moyen et long terme.
/*backtest start: 2023-11-23 00:00:00 end: 2023-11-30 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © gregoirejohnb // @It is modified by ttsaadet. // Moving average crossover systems measure drift in the market. They are great strategies for time-limited people. // So, why don't more people use them? // // strategy(title="EMA Crossover Strategy by TTS", shorttitle="EMA-5-8-13 COS by TTS", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, currency=currency.TRY,commission_type=strategy.commission.percent,commission_value=0.04, process_orders_on_close = true, initial_capital = 100000) // === GENERAL INPUTS === //strategy start date start_year = input(defval=2020, title="Backtest Start Year") // === LOGIC === short_period = input(type=input.integer,defval=5,minval=1,title="Length") mid_period = input(type=input.integer,defval=8,minval=1,title="Length") long_period = input(type=input.integer,defval=13,minval=1,title="Length") rsi_period = input(type=input.integer,defval=14,minval=1,title="Length") longOnly = input(type=input.bool,defval=false,title="Long Only") shortEma = ema(close,short_period) midEma = ema(close,mid_period) longEma = ema(close,long_period) rsi = rsi(close, rsi_period) [diplus, diminus, adx] = dmi(short_period, short_period) plot(shortEma,linewidth=2,color=color.red,title="Fast") plot(midEma,linewidth=2,color=color.orange,title="Fast") plot(longEma,linewidth=2,color=color.blue,title="Slow") longEntry = crossover(shortEma,midEma) and crossover(shortEma,longEma) //or ((shortEma > longEma) and crossover(shortEma,midEma)))and (adx > 25) shortEntry =((shortEma < midEma) and crossunder(shortEma,longEma)) or ((shortEma < longEma) and crossunder(shortEma,midEma)) plotshape(longEntry ? close : na,style=shape.triangleup,color=color.green,location=location.belowbar,size=size.small,title="Long Triangle") plotshape(shortEntry and not longOnly ? close : na,style=shape.triangledown,color=color.red,location=location.abovebar,size=size.small,title="Short Triangle") plotshape(shortEntry and longOnly ? close : na,style=shape.xcross,color=color.black,location=location.abovebar,size=size.small,title="Exit Sign") // === STRATEGY - LONG POSITION EXECUTION === enterLong() => longEntry and time > timestamp(start_year, 1, 1, 01, 01) exitLong() => crossunder(shortEma,longEma) or crossunder(close, longEma) strategy.entry(id="Long", long=strategy.long, when=enterLong()) strategy.close(id="Long", when=exitLong()) // === STRATEGY - SHORT POSITION EXECUTION === enterShort() => not longOnly and shortEntry and time > timestamp(start_year, 1, 1, 01, 01) exitShort() => crossover(shortEma,longEma) strategy.entry(id="Short", long=strategy.short, when=enterShort()) strategy.close(id="Short", when=exitShort())