Estrategia de trading de cruces dorados basada en EMA


Fecha de creación: 2024-02-22 17:48:09 Última modificación: 2024-02-22 17:48:09
Copiar: 1 Número de Visitas: 729
1
Seguir
1617
Seguidores

Estrategia de trading de cruces dorados basada en EMA

Descripción general

La estrategia de comercio cruzado de oro EMA genera una señal de compra cuando el EMA de período corto atraviesa el EMA de período largo; genera una señal de venta cuando el EMA de período corto atraviesa el EMA de período largo.

Principio de estrategia

El núcleo de la estrategia es calcular el promedio de EMA de dos períodos diferentes, incluyendo un promedio de EMA de período más corto, con un período de 9 años por defecto, y un promedio de EMA de período más largo, con un período de 20 años por defecto. El código calcula los dos períodos por separado mediante la invocación de la función de construcción de ema en el guión de pin. Luego, se genera una transacción al juzgar si los dos períodos de EMA se cruzan.

La determinación de la señal de cruce se realiza a través de las funciones de cruce y cruce de dos funciones incorporadas en el guión de pin. La función de cruce determina si la línea rápida pasa por debajo de la línea lenta y devuelve el valor de la barra; la función de cruce de la barra determina si la línea rápida pasa por debajo de la línea lenta y devuelve el valor de la barra. De acuerdo con los valores devueltos de estas dos funciones, el código envía las instrucciones de compra o venta correspondientes.

Además de esto, el código también proporciona algunas condiciones auxiliares, como establecer fechas de inicio y finalización, limitar solo a hacer más o solo a hacer vacío, etc., lo que ayuda a realizar una retroalimentación o optimización más precisa.

Análisis de las ventajas

La mayor ventaja de esta estrategia es que es muy simple, directa, fácil de entender y implementar, adecuada para el aprendizaje de los principiantes. Además, la media móvil en sí misma es un indicador de seguimiento de tendencias, que puede seguir de manera efectiva las tendencias del mercado y aprovechar las tendencias para generar ingresos adicionales. Finalmente, la estrategia tiene menos parámetros y es fácil de ajustar, lo que también es una de sus ventajas.

Análisis de riesgos

La estrategia se enfrenta principalmente al riesgo de negociación de ruido y reversión de la tendencia. La línea EMA es susceptible a las fluctuaciones del mercado a corto plazo y puede generar señales erróneas que conducen a operaciones innecesarias, lo que aumenta la frecuencia y el costo de las operaciones. Por otro lado, cuando se emite una señal cruzada, la tendencia puede estar ya cerca del punto de reversión, momento en el que el riesgo de negociación es mayor.

Se puede reducir el ruido de la negociación mediante el ajuste del ciclo de EMA o la adición de otras condiciones de filtración. Al mismo tiempo, se puede establecer un stop loss para controlar las pérdidas individuales. Los parámetros de optimización pueden hacer que la estrategia sea más estable.

Dirección de optimización

La estrategia puede ser optimizada en las siguientes direcciones:

  1. Optimización de los parámetros del ciclo EMA para encontrar la combinación óptima de parámetros
  2. Añadir filtros para otros indicadores, como MACD, RSI, etc., para reducir las falsas señales
  3. Aumentar los indicadores de tendencia para evitar el cambio de tendencia
  4. La combinación de las opciones de valores fundamentales
  5. Ajuste de la administración de la posición, como el establecimiento de un stop loss según el ATR

Resumir

El cruce de oro EMA es una estrategia de seguimiento de tendencias simple y efectiva. Utiliza el cruce de EMA para generar señales de negociación que pueden capturar automáticamente las tendencias de los precios y beneficiarse de las tendencias en los precios. La estrategia es fácil de entender y ajustar, es muy adecuada para que los principiantes la aprendan, y también puede integrarse como un módulo en estrategias más complejas.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
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/
// This strategy has been created for illustration purposes only and should not be relied upon as a basis for buying, selling, or holding any asset or security.
// © kirilov

//@version=4
strategy(
     "EMA Cross Strategy",
     overlay=true,
     calc_on_every_tick=true,
     currency=currency.USD
     )

// INPUT:

// Options to enter fast and slow Exponential Moving Average (EMA) values
emaFast = input(title="Fast EMA", type=input.integer, defval=9, minval=1, maxval=9999)
emaSlow = input(title="Slow EMA", type=input.integer, defval=20, minval=1, maxval=9999)

// Option to select trade directions
tradeDirection = input(title="Trade Direction", options=["Long", "Short", "Both"], defval="Both")

// Options that configure the backtest date range
startDate = input(title="Start Date", type=input.time, defval=timestamp("01 Jan 1970 00:00"))
endDate = input(title="End Date", type=input.time, defval=timestamp("31 Dec 2170 23:59"))


// CALCULATIONS:

// Use the built-in function to calculate two EMA lines
fastEMA = ema(close, emaFast)
slowEMA = ema(close, emaSlow)


// PLOT:

// Draw the EMA lines on the chart
plot(series=fastEMA, color=color.black, linewidth=2)
plot(series=slowEMA, color=color.red, 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 = crossover(fastEMA, slowEMA)
shortCondition = crossunder(fastEMA, slowEMA)


// ORDERS:

// Submit entry (or reverse) orders
if (longCondition and inDateRange)
    strategy.entry(id="long", long=true, when = longOK)
if (shortCondition and inDateRange)
    strategy.entry(id="short", long=false, when = shortOK)
    
// Submit exit orders in the cases where we trade only long or only short
if (strategy.position_size > 0 and shortCondition)
    strategy.exit(id="exit long", stop=close)
if (strategy.position_size < 0 and longCondition)
    strategy.exit(id="exit short", stop=close)