Estrategia de impulso de escala de tiempo dual

SMA
Fecha de creación: 2024-04-25 17:33:02 Última modificación: 2024-04-25 17:33:02
Copiar: 0 Número de Visitas: 592
1
Seguir
1617
Seguidores

Estrategia de impulso de escala de tiempo dual

Descripción general

La estrategia es una estrategia de dinámica en dos escalas de tiempo. Para determinar la dirección de la tendencia, se utiliza una media móvil simple (SMA) en el ciclo de tiempo de nivel superior, y se utiliza un eje central (PivotLow y PivotHigh) en el ciclo de tiempo de nivel inferior para identificar el punto de reversión.

Principio de estrategia

El principio principal de esta estrategia es que la dirección de la tendencia en el ciclo de tiempo de alto nivel afecta el movimiento del ciclo de tiempo de bajo nivel. Cuando el ciclo de tiempo de alto nivel presenta una tendencia alcista, la reversión en el ciclo de tiempo de bajo nivel es más probable que sea una oportunidad de compra; cuando el ciclo de tiempo de alto nivel presenta una tendencia descendente, la reversión en el ciclo de tiempo de bajo nivel es más probable que sea una oportunidad de descuento.

Ventajas estratégicas

  1. El análisis de doble escala de tiempo, que utiliza el efecto de los períodos de tiempo de alto nivel sobre los períodos de tiempo de bajo nivel, aumenta la probabilidad de éxito de las transacciones.
  2. El uso de SMA para determinar la dirección de la tendencia es más confiable, y el uso de puntos centrales para capturar puntos de inflexión es más preciso.
  3. Los parámetros son ajustables y adaptables. El usuario puede ajustar la escala de tiempo alta y baja según sus necesidades, el período de SMA, los parámetros de los puntos centrales, etc.
  4. La lógica es clara, fácil de entender y de implementar.

Riesgo estratégico

  1. Riesgo de cambio de tendencia. Si la tendencia en el ciclo de tiempo de nivel superior cambia repentinamente, el ciclo de tiempo de nivel inferior puede no haber reaccionado, lo que hace que la estrategia falle.
  2. El riesgo de configuración de parámetros. La configuración inadecuada de los parámetros puede causar un mal desempeño de la estrategia. Por ejemplo, la elección de un ciclo SMA demasiado corto puede conducir a operaciones frecuentes, y la elección de un período demasiado largo puede retrasar el juicio de la tendencia.
  3. Riesgo de situaciones extremas. En situaciones extremas, como la caída de una tormenta, la estrategia puede fallar. En este caso, los ciclos de tiempo de nivel bajo pueden no seguir la tendencia de los ciclos de tiempo de nivel alto.

Dirección de optimización de la estrategia

  1. Aumentar el juicio de los cambios de tendencia. Se puede agregar algo de lógica para juzgar si las tendencias de los períodos de tiempo de alto nivel cambian para ajustar más rápidamente las transacciones de los períodos de tiempo de bajo nivel.
  2. Optimización de la selección de parámetros. Se pueden utilizar algunos métodos de optimización de parámetros (como algoritmos genéticos, búsqueda de redes, etc.) para encontrar la combinación óptima de parámetros.
  3. Aumentar el control de riesgos. Se pueden agregar algunas medidas de control de riesgos (como el stop loss, la gestión de posiciones, etc.) para reducir las pérdidas en situaciones extremas.
  4. Se puede considerar la integración de otros indicadores o factores (como la volatilidad, el volumen de transacciones, etc.) en la estrategia para mejorar la estabilidad de la estrategia.

Resumir

La estrategia de dinámica de doble escala de tiempo utiliza la conexión entre los ciclos de tiempo de alto y bajo nivel para determinar la dirección de la tendencia en los ciclos de tiempo de alto nivel y capturar los puntos de inflexión en los ciclos de tiempo de bajo nivel para lograr el seguimiento de la tendencia y el cambio de tendencia. La lógica de la estrategia es clara, las ventajas son evidentes, pero también hay algunos riesgos.

Código Fuente de la Estrategia
/*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)