Estrategia MACD multi-marcos de tiempo optimizada en tiempo y espacio

El autor:¿ Qué pasa?, fecha: 2024-01-29 10:15:34
Las etiquetas:

img

Resumen general

Esta estrategia optimiza los parámetros del indicador MACD, se combina con el promedio móvil, la acción del precio y los tiempos de negociación específicos para lograr una estrategia de negociación de divisas de alta tasa de ganancia.

Estrategia lógica

  1. Si los precios de cierre de las últimas 3 líneas K son superiores a los precios de apertura, se juzgará como una tendencia al alza; si los precios de cierre de las últimas 3 líneas K son inferiores a los precios de apertura, se juzgará como una tendencia a la baja.

  2. Calcule la línea rápida, la línea lenta y la diferencia MACD. El parámetro de la línea rápida es 12, el parámetro de la línea lenta es 26 y el parámetro de la línea de señal es 9.

  3. El horario de negociación está establecido entre las 09:00 y las 9:15 cada día.

    • Ir largo cuando la tendencia alcista coincide con el cruce de la diferencia MACD por encima de 0
    • Ir corto cuando la tendencia bajista coincide con el cruce de la diferencia MACD por debajo de 0
  4. El take profit está establecido en 0.3 pips, y el stop loss está establecido en 100 pips.

  5. Cierre todas las posiciones durante las 21:00-21:15.

Ventajas de la estrategia

  1. Utilizando una combinación de indicadores de varios marcos de tiempo para juzgar de manera exhaustiva la dirección de la tendencia y mejorar la precisión de las decisiones.

  2. Optimizar el tiempo de negociación para evitar períodos de alta volatilidad del mercado, reduciendo el riesgo innecesario de stop loss.

  3. Establecer relaciones razonables para obtener ganancias y detener pérdidas para maximizar el bloqueo de ganancias y evitar la ampliación de pérdidas.

  4. En general, la estrategia tiene una tasa de ganancia muy alta y es adecuada para operaciones frecuentes a corto plazo.

Riesgos de la estrategia

  1. El tiempo de negociación es relativamente fijo, puede perder oportunidades comerciales si no puede entrar en el mercado a tiempo.

  2. El indicador MACD es propenso a señales engañosas. Negocie con precaución si no se puede determinar una clara tendencia alcista o bajista.

  3. Los parámetros deben ajustarse de acuerdo con los diferentes productos.

  4. El riesgo general es pequeño, pero posiciones excesivamente grandes bajo alto apalancamiento pueden llevar a pérdidas enormes.

Direcciones para la optimización de la estrategia

  1. Combinar con otros indicadores para determinar la tendencia, evitando señales engañosas del MACD. Por ejemplo, combinar bandas de Bollinger, RSI, etc.

  2. Optimizar los ratios de toma de ganancias/detención de pérdidas mediante el cálculo de parámetros óptimos a partir de los datos de backtest.

  3. Ampliar las variedades de comercio aplicables a la estrategia, evaluar los efectos de ajuste de parámetros en diferentes productos.

  4. Introducir algoritmos de aprendizaje automático para seleccionar los parámetros óptimos de forma dinámica en función de las diferentes condiciones del mercado.

Conclusión

En general, esta estrategia es muy adecuada para los operadores novatos. La lógica es clara, el espacio de optimización es grande y los riesgos son controlables. Al personalizar los tiempos de apertura y establecer ratios de pérdida de ganancias razonables, se pueden lograr altos rendimientos. Se pueden realizar optimizaciones adicionales para ajustar dinámicamente los parámetros y adaptarse a entornos de mercado más complejos.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-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/
// © exlux99

//@version=4
strategy("Very high win rate strategy", overlay=true)


//

fast_length =12
slow_length= 26
src = close
signal_length = 9
sma_source = false
sma_signal = false

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

//ma

len=10
srca = input(close, title="Source")
out = hma(srca, len)

fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true


timeinrange(res, sess) => time(res, sess) != 0

// = input('0900-0915', type=input.session, title="My Defined Hours")
myspecifictradingtimes = '0900-0915'
exittime = '2100-2115'

optionmacd=true


entrytime = time(timeframe.period, myspecifictradingtimes) != 0
exit = time(timeframe.period, exittime) != 0     

if(time_cond and optionmacd )
    if(close > open and close[1] > open[1] and close[2] > open[2] and entrytime  and crossover(hist,0))
        strategy.entry("long",1)
    if(close< open and close[1] < open[1] and close[2] < open[2] and entrytime and crossunder(hist,0))
        strategy.entry("short",0)      


tp = input(0.0003, title="tp")
//tp = 0.0003
sl = input(1.0 , title="sl")
//sl = 1.0
strategy.exit("closelong", "long" , profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick, alert_message = "closelong")
strategy.exit("closeshort", "short" , profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick, alert_message = "closeshort")


Más.