La estrategia se basa en el cruce de las medias móviles y el indicador ATR para automatizar el seguimiento de la tendencia. Se toman posiciones de más cabeza cuando la línea EMA rápida atraviesa la línea EMA lenta; se toman posiciones de menos cabeza cuando la línea EMA rápida atraviesa la línea EMA lenta. Al mismo tiempo, se combina con el indicador ATR para determinar la dirección de la tendencia y se emite una señal de negociación solo cuando el ATR determina la dirección de la tendencia.
La estrategia se basa principalmente en dos indicadores técnicos:
EMA mediano: EMA mediano con dos parámetros diferentes, se considera una señal de más cabeza cuando la línea rápida atraviesa la línea lenta, y se considera una señal de cabeza vacía cuando la línea baja atraviesa.
Indicador ATR: el indicador ATR puede determinar la amplitud y la intensidad de las fluctuaciones de los precios, y por lo tanto determinar la tendencia de la tendencia actual. Cuando el valor del ATR es menor, indica que se encuentra en la liquidación, en este momento no es conveniente establecer una posición; cuando el valor del ATR es mayor y se dirige hacia arriba, indica que se encuentra en el mercado de tendencia, en este momento espera que el EMA golden fork haga más; cuando el valor del ATR es mayor y se dirige hacia abajo, indica que se encuentra en el mercado de tendencia, en este momento espera que el EMA dead fork haga vacío.
Busque oportunidades de compra y venta a través de la intersección de las líneas medias de la EMA, mientras que en combinación con el indicador ATR filtre las señales de comercio poco tendenciales y evite quedar atrapado en la recomposición de la oscilación del mercado.
La estrategia tiene las siguientes ventajas:
El trading sólo cuando los indicadores ATR lo juzgan como una tendencia, lo que ayuda a evitar ser encerrado en una oscilación desconocida.
La búsqueda de puntos de venta y venta mediante el método de la línea recta y rápida es sencilla y eficaz.
La sensibilidad y la suavidad de la línea media del EMA se pueden ajustar según las preferencias personales mediante la regulación de parámetros.
Un sistema de trading automático completo, que se puede implementar con solo dos indicadores simples, puede ser fácilmente desarrollado y optimizado para estrategias a través del editor Pine.
Sin necesidad de ajustar los parámetros con frecuencia, para lograr una política simple de ParameterSet y Forget.
La estrategia también tiene algunos riesgos que deben ser considerados:
Los EMA cruzados son propensos a generar falsas señales y pueden provocar pérdidas innecesarias. Se pueden suavizar algunos indicadores ajustando los parámetros de EMA.
Los indicadores ATR a veces pueden tener errores en el juicio de la consolidación y la tendencia, lo que lleva a oportunidades de negociación perdidas. El umbral numérico del ATR puede ser relajado adecuadamente.
La estrategia en sí no tiene en cuenta el análisis de factores a gran escala, y si se produce una reversión en un mercado de noticias importantes, es difícil de juzgar a través de un cruce de líneas medias rápidas, lo que requiere una intervención manual para escapar de la cima.
Se puede reducir el impacto de estos riesgos mediante ciertas optimizaciones.
La estrategia también incluye las siguientes mejoras:
Se puede considerar la inclusión de otros indicadores para formar un sistema de combinación de indicadores y mejorar la precisión de la señal. Por ejemplo, la combinación de indicadores RSI evita el riesgo de sobrecompra y sobreventa.
Se pueden elegir los parámetros más adecuados para diferentes tipos de transacciones y diferentes zonas de negociación, lo que hace que los parámetros de EMA y ATR se ajusten mejor a las características del mercado actual.
La optimización de los parámetros dinámicos se puede lograr a través de métodos como el aprendizaje automático. Los parámetros del indicador se pueden ajustar según las condiciones del mercado en tiempo real, en lugar de usar valores fijos y estáticos.
Esta estrategia en su conjunto es una estrategia de seguimiento de tendencias muy práctica. Sólo se necesita una combinación de dos indicadores simples para lograr un sistema de negociación más completo. Se puede adaptar a los comerciantes de diferentes preferencias mediante la regulación de los parámetros.
/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This strategy has been created for GMT trade 4h by Zhukov
//@version=5
strategy('ZhukovTrade', overlay=true, calc_on_every_tick=true, currency=currency.USD)
// INPUT:
// Options to enter fast and slow Exponential Moving Average (EMA) values
emaFast = input.int(title='Fast EMA', defval=100, minval=1, maxval=9999)
emaSlow = input.int(title='Slow EMA', defval=200, minval=1, maxval=9999)
// Option to select trade directions
tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Both')
// Options that configure the backtest date range
startDate = input(title='Start Date', defval=timestamp('01 Jan 2023 00:00'))
endDate = input(title='End Date', defval=timestamp('31 Dec 2023 23:59'))
// CALCULATIONS:
// Use the built-in function to calculate two EMA lines
fastEMA = ta.ema(close, emaFast)
slowEMA = ta.ema(close, emaSlow)
emapos = ta.ema(close,200)
// PLOT:
// Draw the EMA lines on the chart
plot(series=fastEMA, color=color.new(color.orange, 0), linewidth=2)
plot(series=slowEMA, color=color.new(color.blue, 0), linewidth=2)
plot(series=emapos, color=color.new(color.red, 0), linewidth=2)
// CONDITIONS:
// Check if the close time of the current bar falls inside the date range
inDateRange = true
// Translate input into trading conditions
longOK = tradeDirection == 'Long' or tradeDirection == 'Both'
shortOK = tradeDirection == 'Short' or tradeDirection == 'Both'
// Decide if we should go long or short using the built-in functions
longCondition = ta.crossover(fastEMA, slowEMA)
shortCondition = ta.crossunder(fastEMA, slowEMA)
// ORDERS:
// Set take profit and stop loss percentages
take_profit_percent = input(0, title="Take Profit Percent")
stop_loss_percent = input(0, title="Stop Loss Percent")
// Submit entry (or reverse) orders
atrPeriod = input(12, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)
[supertrend, direction] = ta.supertrend(factor, atrPeriod)
bodyMiddle = plot((open + close) / 2, display=display.none)
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend = plot(direction < 0? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr)
fill(bodyMiddle, upTrend, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle, downTrend, color.new(color.red, 90), fillgaps=false)
if longCondition and inDateRange
if longOK and direction<0
strategy.entry(id='long', direction=strategy.long, alert_message = "LONG")
if shortCondition and inDateRange
if shortOK and direction>0
strategy.entry(id='short', direction=strategy.short, alert_message = "SHORT")
// Submit exit orders in the cases where we trade only long or only short
if strategy.position_size > 0 and take_profit_percent
strategy.exit(id='tp long',from_entry ="long",profit = take_profit_percent)
if strategy.position_size > 0 and stop_loss_percent
strategy.exit(id='sl long',from_entry="long",loss=stop_loss_percent)
if strategy.position_size < 0 and stop_loss_percent
strategy.exit(id='sl short',from_entry="short",loss=stop_loss_percent)
if strategy.position_size < 0 and take_profit_percent
strategy.exit(id='tp short',from_entry="short",profit = take_profit_percent)