La stratégie exploite les avantages des moyennes mobiles et des indicateurs relativement faibles pour identifier et suivre les tendances. Elle ne nécessite que deux indicateurs pour pouvoir juger les tendances et choisir le moment des entrées/sorties. La stratégie vise à saisir les tendances des prix sur les longues et moyennes lignes et à éviter d’être induit en erreur par le bruit du marché à court terme.
La stratégie utilise la moyenne des EMA de trois cycles différents, EMA-A ayant le plus court cycle, EMA-B suivant, EMA-C ayant le plus long cycle. Lorsque le cycle court traverse EMA-A sur le cycle plus long EMA-B, cela indique que le prix est en tendance haussière, et cela peut faire plus; à l’inverse, lorsque EMA-A traverse EMA-B, cela indique que le prix est en tendance baissière, et cela peut faire moins.
La stratégie est également combinée avec l’indicateur RSI pour localiser le point de sortie. Lorsque le RSI dépasse la ligne 70 lors d’une position à plusieurs têtes, il est à plat. Lorsque le RSI dépasse la ligne 30 lors d’une position à vide, il est à plat.
Ces risques peuvent être atténués par l’optimisation des paramètres RSI ou l’ajout de conditions de filtrage supplémentaires. Des techniques d’analyse techniques telles que la tendance, la résistance au support peuvent également être combinées pour améliorer la performance de la stratégie.
Cette stratégie intègre le suivi de la tendance et l’indicateur de surachat et de survente. Il suffit de deux indicateurs simples pour pouvoir juger et capturer la tendance. Grâce à l’optimisation des paramètres et à l’optimisation des règles, l’efficacité peut être considérablement améliorée tout en restant simple.
/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 00:00:00
period: 2h
basePeriod: 15m
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/
//@author Alorse
//@version=5
// strategy(title='Tendency EMA + RSI [Alorse]', shorttitle='Tendece EMA + RSI [Alorse]', overlay=true, pyramiding=0, currency=currency.USD, default_qty_type=strategy.percent_of_equity, initial_capital=1000, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.01)
// Bollinger Bands
len = input.int(14, minval=1, title='Length', group='RSI')
src = input.source(close, 'Source', group='RSI')
rsi = ta.rsi(src, len)
// Moving Averages
len_a = input.int(10, minval=1, title='EMA A Length', group='Moving Averages')
out_a = ta.ema(close, len_a)
plot(out_a, title='EMA A', color=color.purple)
len_b = input.int(20, minval=1, title='EMA B Length', group='Moving Averages')
out_b = ta.ema(close, len_b)
plot(out_b, title='EMA B', color=color.orange)
len_c = input.int(100, minval=1, title='EMA C Length', group='Moving Averages')
out_c = ta.ema(close, len_c)
plot(out_c, title='EMA B', color=color.green)
// Strategy Conditions
stratGroup = 'Strategy'
showLong = input.bool(true, title='Long entries', group=stratGroup)
showShort = input.bool(false, title='Short entries', group=stratGroup)
closeAfterXBars = input.bool(true, title='Close after X # bars', tooltip='If trade is in profit', group=stratGroup)
xBars = input.int(24, title='# bars')
entryLong = ta.crossover(out_a, out_b) and out_a > out_c and close > open
exitLong = rsi > 70
entryShort = ta.crossunder(out_a, out_b) and out_a < out_c and close < open
exitShort = rsi < 30
bought = strategy.opentrades[0] == 1 and strategy.position_size[0] > strategy.position_size[1]
entry_price = ta.valuewhen(bought, open, 0)
var int nPastBars = 0
if strategy.position_size > 0
nPastBars := nPastBars + 1
nPastBars
if strategy.position_size == 0
nPastBars := 0
nPastBars
if closeAfterXBars
exitLong := nPastBars >= xBars and close > entry_price ? true : exitLong
exitLong
exitShort := nPastBars >= xBars and close < entry_price ? true : exitShort
exitShort
// Long Entry
strategy.entry('Long', strategy.long, when=entryLong and showLong)
strategy.close('Long', when=exitLong)
// Short Entry
strategy.entry('Short', strategy.short, when=entryShort and showShort)
strategy.close('Short', when=exitShort)