Estrategia de impulso de doble marco de tiempo

El autor:¿ Qué pasa?, Fecha: 2024-04-25 17:33:02
Las etiquetas:La SMA

img

Resumen general

Esta estrategia es una estrategia de impulso de doble marco de tiempo. Determina la dirección de la tendencia en el marco de tiempo superior utilizando un promedio móvil simple (SMA) e identifica puntos de reversión en el marco de tiempo inferior utilizando puntos de pivote (PivotLow y PivotHigh).

Principios de estrategia

El principio principal de esta estrategia es que la dirección de tendencia del marco de tiempo superior influirá en el movimiento del marco de tiempo inferior. Cuando el marco de tiempo superior muestra una tendencia alcista, los retrocesos en el marco de tiempo inferior son más propensos a ser oportunidades de compra; cuando el marco de tiempo superior muestra una tendencia bajista, los rebotes en el marco de tiempo inferior son más propensos a ser oportunidades de cortocircuito. Esta estrategia utiliza el promedio móvil simple (SMA) para determinar la dirección de tendencia del marco de tiempo superior y los puntos de giro (PivotLow y PivotHigh) para identificar los puntos de reversión en el marco de tiempo inferior.

Ventajas estratégicas

  1. El análisis de doble marco de tiempo, aprovechando el impacto del marco de tiempo más alto en el marco de tiempo más bajo, aumenta la probabilidad de que las operaciones tengan éxito.
  2. El uso de SMA para determinar la dirección de la tendencia es relativamente confiable, y el uso de puntos de pivote para capturar puntos de reversión es relativamente preciso.
  3. Los parámetros son ajustables, lo que hace que la estrategia sea altamente adaptable. Los usuarios pueden ajustar los marcos de tiempo más altos e inferiores, el período de la SMA y los parámetros de los puntos de pivote de acuerdo con sus necesidades.
  4. La lógica es clara y fácil de entender y aplicar.

Riesgos estratégicos

  1. Si la tendencia del marco temporal superior cambia repentinamente, es posible que el marco temporal inferior no haya reaccionado todavía, lo que hace que la estrategia fracase.
  2. Riesgo de la configuración de parámetros. La configuración inadecuada de parámetros puede conducir a un mal rendimiento de la estrategia. Por ejemplo, elegir un período SMA que sea demasiado corto puede conducir a una negociación frecuente, mientras que elegir uno que sea demasiado largo puede conducir a juicios de tendencia rezagados.
  3. Riesgo de condiciones extremas de mercado: en condiciones extremas de mercado (por ejemplo, subidas o bajadas bruscas), esta estrategia puede fracasar porque el marco temporal inferior puede no seguir la tendencia del marco temporal superior.

Direcciones para la optimización de la estrategia

  1. Se puede añadir lógica para determinar si la tendencia del marco de tiempo superior ha cambiado con el fin de ajustar la negociación en el marco de tiempo inferior más rápidamente.
  2. Optimizar la selección de parámetros: se pueden utilizar métodos de optimización de parámetros (como algoritmos genéticos, búsqueda en cuadrícula, etc.) para encontrar la combinación óptima de parámetros.
  3. Se pueden añadir medidas de control de riesgos (como stop-loss, gestión de posiciones, etc.) para reducir las pérdidas en condiciones extremas de mercado.
  4. Fusión multifactorial: otros indicadores o factores (como la volatilidad, el volumen, etc.) pueden considerarse incorporados a la estrategia para mejorar su solidez.

Resumen de las actividades

Esta estrategia de impulso de doble marco de tiempo aprovecha la conexión entre los marcos de tiempo más altos y más bajos, determinando la dirección de la tendencia en el marco de tiempo más alto y capturando puntos de reversión en el marco de tiempo más bajo para lograr el seguimiento de la tendencia y la negociación de reversión.


/*backtest
start: 2023-04-19 00:00:00
end: 2024-04-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Riester

//@version=5
strategy("Dual Timeframe Momentum", overlay=true, precision=6, pyramiding=0, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=25.0, commission_value=0.05)

n = input.int(20, "Moving Average Period", minval=1)
src = input.source(close, "Source")
high_tf = input.timeframe("240", "Resolution")
pivot_l = input.int(5, "Pivot Let Bars")
pivot_r = input.int(2, "Pivot Right Bars")

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Calculations
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

// 1. Define low and high timeframe prices
low_src = src
high_src = request.security(syminfo.tickerid, high_tf, src)

// 2. Use simple moving average to determine trend of higher timeframe (up or down)
high_tf_ma = ta.sma(high_src, n)
plot(high_tf_ma,  color=color.yellow)
high_tf_trend = high_tf_ma > high_tf_ma[1] ? 1 : -1

// 3. Use pivots to identify reversals on the low timeframe
low_tf_pl = ta.pivotlow(high_src, pivot_l, pivot_r)
plot(low_tf_pl, style=plot.style_line, linewidth=3, color= color.green, offset=-pivot_r)

low_tf_ph = ta.pivothigh(high_src, pivot_l, pivot_r)
plot(low_tf_ph, style=plot.style_line, linewidth=3, color= color.red, offset=-pivot_r)

bool long = low_tf_pl and high_tf_trend == 1
bool short = low_tf_ph and high_tf_trend == -1

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Plots
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

// this message is an alert that can be sent to a webhook, which allows for simple automation if you have a server that listens to alerts and trades programmatically.
enter_long_alert = '{"side": "Long", "order": "Enter", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'
exit_long_alert = '{"side": "Long", "order": "Exit", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'

if long
    strategy.entry(id="Long", direction=strategy.long, limit=open, alert_message=enter_long_alert)

if short
    strategy.close(id="Long", comment="Close Long", alert_message=exit_long_alert)


Relacionados

Más.