Cette stratégie génère des signaux de négociation basés sur trois lignes moyennes mobiles exponentielles (EMA) avec des périodes différentes: EMA à court terme avec une période de 5 jours, EMA à moyen terme avec une période de 8 jours et EMA à long terme avec une période de 13 jours.
Cette stratégie évalue la tendance du marché en calculant les EMA de différentes périodes. L'EMA à court terme reflète le prix moyen des derniers jours tandis que les EMA à moyen et long terme reflètent le prix moyen sur des périodes plus longues. Le croisement de l'EMA à court terme sur les EMA à moyen et long terme signale une rupture à la hausse du prix, de sorte qu'une position longue est prise. Inversement, lorsque l'EMA à court terme traverse sous les deux autres, il signale une rupture à la baisse du prix, de sorte qu'une position courte est prise.
Plus précisément, cette stratégie calcule simultanément les EMA de 5 jours, 8 jours et 13 jours. Elle génère des signaux longs lorsque l'EMA de 5 jours traverse les EMA de 8 jours et 13 jours; elle génère des signaux courts lorsque l'EMA de 5 jours traverse sous les deux autres. Après un long, la position est fermée une fois que l'EMA de 5 jours traverse à nouveau sous l'EMA de 13 jours. De même pour la position courte.
Idées d'amélioration:
Il s'agit d'un système de rupture typique qui juge les renversements de tendance en comparant les croisements entre les EMA à court, moyen et long terme. Sa simplicité de signalisation facilite la facilité de négociation, mais souffre également du retard inhérent aux EMA et de l'incapacité de filtrer les tendances réelles des corrections temporaires.
/*backtest start: 2023-11-16 00:00:00 end: 2023-11-23 00:00:00 period: 30m 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", 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") longOnly = input(type=input.bool,defval=false,title="Long Only") shortEma = ema(hl2,short_period) midEma = ema(hl2,mid_period) longEma = ema(hl2,long_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 = ((shortEma > midEma) and crossover(shortEma,longEma)) or ((shortEma > longEma) and crossover(shortEma,midEma)) 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 exitLong() => crossunder(shortEma,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 exitShort() => crossover(shortEma,longEma) strategy.entry(id="Short", long=strategy.short, when=enterShort()) strategy.close(id="Short", when=exitShort())