Estrategia de negociación de tipos de cambio

El autor:¿ Qué pasa?, Fecha: 2023-09-28 11:26:44
Las etiquetas:

Resumen general

Esta estrategia calcula la tasa de cambio a lo largo del tiempo para determinar las señales de compra / venta.

Estrategia lógica

La estrategia se basa principalmente en los siguientes indicadores:

  1. Promedio móvil simple rápido (default 14 días): para medir la tendencia a corto plazo
  2. Promedio móvil sencillo lento (100 días por defecto): para medir la tendencia a largo plazo
  3. Promedio móvil simple de referencia (30 días por defecto): para determinar la dirección general
  4. Tasa de cambio: calculada en función del precio más alto/más bajo durante el período de observación (default 12 bares) para juzgar la magnitud de la fluctuación de los precios

Reglas específicas de entrada:

  1. Precio por debajo de la SMA de referencia
  2. ROC por encima del umbral bajo de ROC preestablecido (por defecto 2,3%)
  3. Aumento rápido de la SMA y disminución lenta de la SMA, lo que indica un posible cruce

Reglas específicas de salida:

  1. Precio por encima de la SMA de referencia
  2. ROC por encima del umbral alto de ROC preestablecido (default 4,7%)
  3. 3 barras ascendentes consecutivas
  4. Beneficio corriente > 0
  5. SMA rápida por encima de la SMA lenta

El tamaño de la posición es el porcentaje (default 96%) del capital total para apalancamiento.

Análisis de ventajas

La estrategia tiene las siguientes ventajas:

  1. El uso de ROC para detectar oscilaciones permite capturar movimientos al alza/abajo para obtener mayores rendimientos.

  2. La combinación de SMA rápido/lento ayuda a identificar con mayor precisión los puntos bajos/altos.

  3. La SMA de referencia proporciona una dirección general para evitar la distracción por el ruido a corto plazo.

  4. Seguir el stop loss bloquea las ganancias y reduce el riesgo a la baja.

  5. El apalancamiento del tamaño de la posición amplifica las ganancias.

En general, la estrategia utiliza ROC, SMA y otras herramientas de manera efectiva para capitalizar las oscilaciones de precios.

Análisis de riesgos

La estrategia también presenta los siguientes riesgos:

  1. Los parámetros incorrectos de ROC y SMA pueden causar señales perdidas o malas operaciones.

  2. El tamaño excesivo de la posición aumenta el riesgo. El porcentaje de orden debe ser probado y ajustado.

  3. El porcentaje de stop loss puede ajustarse.

  4. Inclinado a los golpes en los mercados variados, debe incorporar filtros de tendencia y gestión de riesgos.

  5. La robustez debe verificarse mediante el comercio en vivo entre los mercados.

Los riesgos se pueden gestionar mediante la optimización de parámetros, el tamaño de las posiciones, los ajustes de stop loss, las pruebas de robustez, etc.

Direcciones de optimización

La estrategia puede mejorarse en los siguientes aspectos:

  1. Añadir otros indicadores técnicos como volatilidad, volumen para mejorar la precisión de la señal.

  2. Optimizar el número de operaciones mediante la reducción de la frecuencia de operaciones para minimizar los impactos de la sierra.

  3. Incorporar técnicas de ruptura alrededor de los niveles clave de precios.

  4. Utilice el aprendizaje automático para optimizar los parámetros.

  5. Prueba de la robustez en diferentes mercados y plazos.

  6. Ajuste de parámetros especializados para diferentes productos como acciones, divisas, etc.

  7. Refinar continuamente las señales y los controles de riesgos en función de los resultados en tiempo real.

Resumen de las actividades

Esta estrategia identifica oportunidades comerciales alrededor de oscilaciones a corto plazo utilizando el análisis de ROC y SMA. Ayuda a capitalizar los cambios rápidos, pero también requiere controles de riesgo adecuados. Parámetros de ajuste fino, dimensionamiento de posiciones, stop losses y pruebas de robustez pueden mejorar su estabilidad y adaptabilidad. La estrategia sirve como plantilla de referencia para el comercio cuantificado, pero necesita personalización para diferentes mercados.


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

// @version=4
// Author: Sonny Parlin (highschool dropout)
// Best if run on 5m timeframe
strategy(shorttitle="ROC+Strategy", title="Rate of Change Strategy",
                                      overlay=true,  currency=currency.USD,
                                      initial_capital=10000)

// Inputs and variables
ss = input(14, minval=10, maxval=50, title="SMA Fast (days)")
ff = input(100, minval=55, maxval=200, title="SMA Slow (days)")
ref = input(30, minval=20, maxval=50, title="SMA Reference (days)")
lowOffset = input(0.023, "ROC Low (%)", minval=0, step=0.01)
highOffset = input(0.047, "ROC High (%)", minval=0, step=0.01)
orderStake = input(0.96, "Order Stake (%)", minval=0, step=0.01)
lookback = input(12, "Lookback Candles", minval=1, step=1) 

// SMA
smaFast = sma(close, ss)
smaSlow = sma(close, ff)
smaRef = sma(close, ref)
ROC = (max(close[lookback],close) - min(close[lookback],close)) / max(close[lookback],close)

// Set up SMA plot but don't show by default
plot(smaFast, "smaFast", color=#00ff00, display = 0)
plot(smaSlow, "smaSlow", color=#ff0000, display = 0)
plot(smaRef, "smaRef", color=#ffffff, display = 0)

// The buy stratey:
// Guard that the low is under our SMA Reference line 
// Guard that the rate of change over the lookback period is greater than our 
// ROC lowOffset %, default is 0.023. (low < smaRef) and (ROC > lowOffset)
// SMA fast is on the rise and SMA slow is falling and they are very likely
// to cross. (rising(smaFast,1)) and (falling(smaSlow, 1)) 
enterLong = (low < smaRef) and (ROC > lowOffset) and (rising(smaFast,1)) and (falling(smaSlow,1)) 

// The sell Strategy:
// Guard that close is higher than our SMA reference line and that the rate of 
// change over the lookback period is greater than our highOffset %, default
// is 0.047. (close > smaRef) and (ROC > highOffset)
// Guard that close has risen by 3 candles in a row (rising(close,3)) 
// Guard that we currently have profit (strategy.openprofit > 0)
// Guard that SMA fast is higher than smaSlow (smaFast > smaSlow)
// If it keeps going up past our close position the trailing stoploss will kick in!
enterShort = (close > smaRef) and (ROC > highOffset) and (rising(close,3)) and (strategy.openprofit > 0) and (smaFast > smaSlow)

// Order size is based on total equity
// Example 1:
// startingEquity = 2000
// close = 47434.93
// orderStake = 0.45
// (2,000 × orderStake) / close = orderSize = 0.0189733599 = approx $900

// Example 2:
// startingEquity = 2000
// close = 1.272
// orderStake = 0.45
// (startingEquity × orderStake) / close = orderSize = 707.5471698113 = approx $900
orderSize = (strategy.equity * orderStake) / close

// Trailing Stoploss
// I'm using 2.62 as my default value, play with this for different results.
longTrailPerc = input(title="Trailing Stoploss (%)",
     type=input.float, minval=0.0, step=0.1, defval=3.62) * 0.01
     
longStopPrice = 0.0

longStopPrice := if (strategy.position_size > 0)
    stopValue = close * (1 - longTrailPerc)
    max(stopValue, longStopPrice[1])
else
    0

if (enterLong)
    strategy.entry("Open Long Position", strategy.long, orderSize, when=strategy.position_size <= 0)
    
if (enterShort)
    strategy.exit(id="Close Long Position", stop=longStopPrice)


//plot(strategy.equity)

Más.