La estrategia se basa en una estrategia de seguimiento de tendencias en la línea media. Utiliza la línea media EMA de diferentes períodos para construir múltiples grupos de señales de negociación y realizar operaciones de seguimiento de tendencias.
La estrategia utiliza cinco EMAs de diferentes períodos para construir una señal de negociación. Son las líneas de 10 días, 20 días, 50 días, 100 días y 200 días respectivamente. La estrategia establece 4 grupos de condiciones de compra en función de la relación entre el precio y estas líneas medias, para lograr una subida de la pirámide.
Cuando el precio está por debajo de la línea de 20 días y por encima de la línea de 50 días, se activa el primer grupo de compras; cuando el precio está por debajo de la línea de 50 días y por encima de la línea de 100 días, se activa el segundo grupo de compras; cuando el precio está por debajo de la línea de 100 días y por encima de la línea de 200 días, se activa el tercer grupo de compras; cuando el precio está por debajo de la línea de 200 días, se activa el cuarto grupo de compras. El número de compras también aumenta gradualmente, respectivamente qt1, qt2, qt3 y qt4
En el caso de la venta, la estrategia utiliza dos conjuntos de condiciones de parada simultáneas. El primer grupo es el de parada cuando el precio está por encima de la línea de 10 días y la línea de 10 días está por encima de las otras líneas medias; el segundo grupo es el de parada cuando el precio está por debajo de la línea de 10 días del día anterior y la línea de 10 días está por encima de las otras líneas medias. Estos dos conjuntos de condiciones pueden bloquear eficazmente las ganancias de la línea corta intermedia.
La mayor ventaja de esta estrategia es que se puede seguir automáticamente la tendencia del mercado para lograr la tenencia de la línea larga. A través de múltiples conjuntos de condiciones de compra y acumulación por lotes, se puede reducir constantemente el costo de compra y obtener ganancias adicionales. Al mismo tiempo, también se evita el riesgo de precio que conlleva un solo punto de compra.
La estrategia también se ha optimizado en términos de pérdidas. La estrategia sigue el punto de inflexión de la media a corto plazo hacia arriba, lo que permite detener rápidamente las pérdidas y bloquear las ganancias. Esto evita el riesgo de una mayor expansión de las pérdidas.
El mayor riesgo de esta estrategia es quedar atrapado en la línea larga de ajuste. La señal de la línea media no es confiable cuando el mercado está en un estado de agitación o en un canal descendente. En este caso, es posible seguir comprando y manteniendo posiciones, con mayores pérdidas.
Otro punto de riesgo es que la línea media no siempre es precisa. Los saltos o expansiones de precios en el corto plazo pueden hacer que la línea media emita una señal errónea. Esto requiere verificación y optimización en combinación con otros indicadores técnicos.
Se puede considerar la adición de otros indicadores técnicos en las condiciones de compra, como el indicador de volumen de transacción, la señal de Bollinger Bands, etc. Esto puede mejorar aún más la tasa de éxito de la compra.
En las condiciones de venta, también se puede agregar Boll en la vía o un soporte clave como una segunda línea de parada. Esto puede reducir las pequeñas paradas innecesarias. O se puede agregar la función de parada móvil para ajustar la parada en tiempo real y bloquear aún más los beneficios.
La estrategia utiliza un sistema de seguimiento de tendencias en línea. La estrategia utiliza un sistema de seguimiento de tendencias en línea.
/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA_zorba1", shorttitle="zorba_ema", overlay=true)
// Input parameters
qt1 = input.int(5, title="Quantity 1", minval=1)
qt2 = input.int(10, title="Quantity 2", minval=1)
qt3 = input.int(15, title="Quantity 3", minval=1)
qt4 = input.int(20, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)
// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=10, day=27)
in_date_range = true
// Profit condition
profit_percentage = input(1, title="Profit Percentage") // Adjust this value as needed
// Pyramiding setting
pyramiding = input.int(2, title="Pyramiding", minval=1, maxval=10)
// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]
// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and (close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and (close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
// Exit condition for when today's close is less than the previous day's low
//exit_condition_3 = close < low[1]
// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)
strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)