Estrategia de divisas basada en ondas fractales y SMMA

El autor:¿ Qué pasa?, Fecha: 2023-11-13 16:39:41
Las etiquetas:

img

Resumen general

Esta estrategia combina la teoría de ondas fractales y SMMA para identificar oportunidades de tendencia, y utiliza un stop loss y un trailing stop adecuados para controlar los riesgos para maximizar las ganancias.

Estrategia lógica

  • Usar SMMA para calcular el precio medio y filtrar el ruido del mercado para determinar la dirección de la tendencia
  • Identificar los puntos de reversión de la tendencia utilizando el precio más alto/más bajo dentro de ciertos períodos como ondas fractales
  • Ir corto cuando la ola de precios se rompe por encima de SMMA, ir largo cuando se rompe por debajo
  • Establecer el stop loss y el trailing stop basados en el ATR para controlar los riesgos
  • Solo se negocian dentro de las sesiones especificadas, evitando las oscilaciones de fin de semana e intradiarias

Análisis de ventajas

  • La teoría de ondas fractales identifica con precisión los puntos de inversión de tendencia, combinados con SMMA para la dirección de la tendencia
  • Las pérdidas de detención y las pérdidas de seguimiento de ATR limitan efectivamente las pérdidas por operación
  • Solo las operaciones durante las sesiones de liquidez evitan el deslizamiento y la volatilidad excesivos
  • Siguiendo el SAR parabólico estrictamente para salir en la señal de inversión maximiza el beneficio

Análisis de riesgos

  • Una onda fractal inexacta puede causar golpes en períodos no tendenciales
  • El retraso SMMA puede no alcanzar los puntos ideales de inversión de tendencia
  • La pérdida de parada demasiado apretada puede ser detenida fácilmente, demasiado suelta puede incurrir en pérdidas mayores
  • El beneficio fijo no puede adaptarse a las diferentes condiciones del mercado

Soluciones:

  • Optimizar los parámetros para el período fractal y SMMA
  • Añadir estocásticos para confirmar señales de reversión
  • Optimización dinámica de stop loss, objetivo de ganancia

Direcciones de optimización

  • Optimizar el período fractal y los parámetros SMMA
  • Añadir el indicador Estocástico para filtrar las fallas
  • Experimento con stop loss dinámico y toma de ganancias
  • Ampliar el stop loss para evitar ser detenido
  • Optimizar los parámetros para diferentes productos y sesiones de negociación

Resumen de las actividades

Esta estrategia integra la teoría de ondas fractales y SMMA para identificar puntos de tendencia e inversión en el comercio, con una parada de pérdida y una toma de ganancias adecuadas.


/*backtest
start: 2022-11-12 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("FX Strategy Based on Fractals and SMMA", overlay=true)

// パラメータ
SMMAPeriod1 = input(30, title="SMMA Period")
StopLoss1 = input(7, title="Stop Loss %")
TrailingStopCoef1 = input(2.7, title="Trailing Stop Coefficient")
fractalPeriod = input(5, title="Fractal Period")

// SMMAの計算関数
smma(src, length) =>
    var float smma = na
    if na(smma[1])
        smma := sma(src, length)
    else
        smma := (smma[1] * (length - 1) + src) / length
    smma

// フラクタルの近似
highFractal = high[2] > high[1] and high[2] > high[3] and high[2] > high[4] and high[2] > high
lowFractal = low[2] < low[1] and low[2] < low[3] and low[2] < low[4] and low[2] < low

// エントリー条件
longEntrySignal = lowFractal and close[1] < smma(close, SMMAPeriod1)
shortEntrySignal = highFractal and close[1] > smma(close, SMMAPeriod1)

// エントリー実行
if (longEntrySignal)
    strategy.entry("Long", strategy.long)

if (shortEntrySignal)
    strategy.entry("Short", strategy.short)

// トレーリングストップの計算
atrValue = atr(10)
longStopPrice = close - atrValue * TrailingStopCoef1
shortStopPrice = close + atrValue * TrailingStopCoef1

// トレーリングストップの設定
strategy.exit("Exit Long", "Long", stop=longStopPrice)
strategy.exit("Exit Short", "Short", stop=shortStopPrice)

// バックテスト期間の設定(MetaTraderのバックテストと同じ期間)
startYear = 2007
startMonth = 05
startDay = 01
endYear = 2022
endMonth = 04
endDay = 01

startDate = timestamp(startYear, startMonth, startDay, 00, 00)
endDate = timestamp(endYear, endMonth, endDay, 23, 59)

// バックテスト期間内でのみトレードを実行
if (time >= startDate and time <= endDate)
    if (longEntrySignal)
        strategy.entry("Long", strategy.long)
    if (shortEntrySignal)
        strategy.entry("Short", strategy.short)


Más.