La estrategia aprovecha las ventajas de los promedios móviles y los indicadores relativamente fuertes para identificar y seguir tendencias. Sólo necesita dos indicadores para poder juzgar las tendencias y elegir el momento de las entradas / salidas. La estrategia busca capturar las tendencias de precios de las líneas medias y largas y evitar ser engañados por el ruido del mercado a corto plazo.
La estrategia utiliza el promedio de EMA de tres períodos diferentes, EMA-A con el período más corto, EMA-B seguido, EMA-C con el más largo. Cuando el período corto en EMA-A atraviesa el EMA-B con el período más largo, indica que el precio está en una tendencia alcista, y puede hacer más; por el contrario, cuando EMA-A atraviesa EMA-B, indica que el precio se convierte en una tendencia descendente, y puede hacer vacío.
La estrategia también se combina con el indicador RSI para ubicar el punto de salida. Cuando se mantiene una posición de más cabeza, si el RSI cruza la línea 70 se borra; cuando se mantiene una posición de cabeza, si el RSI baja la línea 30 se borra. Esto puede bloquear las ganancias de la tendencia y evitar que las pérdidas se extiendan aún más.
Estos riesgos pueden ser reducidos mediante la optimización de los parámetros del RSI o mediante la adición de condiciones de filtración adicionales. También se pueden combinar métodos de análisis técnico como la tendencia y la resistencia de soporte para mejorar el rendimiento de la estrategia.
La estrategia integra el seguimiento de tendencias y el indicador de sobrecompra y sobreventa, y solo se necesitan dos indicadores simples para poder juzgar y capturar la tendencia. A través de la optimización de parámetros y la optimización de reglas, se puede aumentar considerablemente la eficacia mientras se mantiene simple. Es una plantilla de estrategia de seguimiento de tendencias muy práctica para inversores de línea media y larga.
/*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)