Estrategias comerciales basadas en la tasa de cambio


Fecha de creación: 2023-09-28 11:26:44 Última modificación: 2023-09-28 11:26:44
Copiar: 1 Número de Visitas: 642
1
Seguir
1617
Seguidores

Descripción general

Esta estrategia determina el momento de comprar y vender mediante el cálculo de la tasa de cambio en un período de tiempo determinado. Puede ayudar a los comerciantes a aprovechar las oportunidades de cambios de precios a corto plazo.

Principio de estrategia

La estrategia se basa en los siguientes indicadores:

  1. Promedio móvil rápido y simple (de 14 días por defecto): tendencias a corto plazo para determinar precios
  2. Promedio móvil simple lento (de 100 días por defecto): se utiliza para determinar las tendencias a largo plazo de los precios
  3. Media móvil simple de referencia ((default 30 días): se utiliza para determinar la dirección general de las compras y ventas
  4. Tasa de variación: determina la amplitud de la oscilación de los precios calculando las variaciones máximas y mínimas de los precios en un período determinado en el pasado (la línea K por defecto de 12).

Las reglas específicas de compra:

  1. Precios por debajo de la media móvil simple de referencia
  2. La tasa de variación es mayor que el umbral de baja tasa de variación establecido (el 2.3 por ciento por defecto)
  3. Los SMA rápidos suben y los SMA lentos bajan, indicando que las dos curvas pueden cruzarse

Las reglas para vender:

  1. Precios más altos que el promedio móvil simple de referencia
  2. La tasa de variación es mayor que el umbral de alta tasa de variación establecido (el 4.7% por defecto)
  3. El precio sube 3 líneas K
  4. Ganancias actuales
  5. El SMA rápido es más alto que el SMA lento

El tamaño de la orden se establece en un porcentaje de la participación total (el 96 por ciento por defecto) para proporcionar un efecto de palanca.

Análisis de las ventajas estratégicas

La estrategia tiene las siguientes ventajas:

  1. El uso de la tasa de cambio para juzgar las fluctuaciones puede aprovechar las oportunidades de un rápido aumento o descenso de los precios en el corto plazo para obtener mayores ganancias.
  2. La combinación de las tendencias de los movimientos rápidos y lentos de los SMA permite una mayor precisión en la hora de comprar y vender.
  3. Establecer el SMA de referencia como una guía general para evitar ser engañados por las tendencias de las líneas cortas de precios.
  4. El uso de trazado de pérdidas para bloquear ganancias y correr riesgos.
  5. El tamaño de los pedidos proporciona un efecto de palanca que puede aumentar las ganancias.

En general, la estrategia utiliza herramientas como la tasa de cambio de precios, el índice SMA y otros para obtener un mejor rendimiento en situaciones de volatilidad.

Análisis de riesgos

La estrategia también tiene los siguientes riesgos:

  1. La configuración incorrecta de los parámetros de la tasa de variación y el SMA puede causar errores o errores en las señales de negociación. Los parámetros deben ajustarse para diferentes mercados.

  2. El tamaño de los pedidos aumenta el riesgo. Se recomienda optimizar la proporción de pedidos en la fase de prueba.

  3. El seguimiento de los estancamientos puede ser prematuro en situaciones de temblor. Se puede considerar ajustar el estancamiento.

  4. La estrategia de transacciones estables es susceptible al arbitraje. Debe combinarse con el juicio de tendencias y el riesgo de gestión de pérdidas.

  5. El análisis de los riesgos de la adecuación de los datos. La robustez de la estrategia debe ser probada en varios ensayos en diferentes mercados.

Para estos riesgos, se puede controlar el riesgo a través de la optimización de parámetros, el ajuste de órdenes, la optimización de la estrategia de stop loss y la verificación en el terreno.

Dirección de optimización de la estrategia

La estrategia también puede ser optimizada en los siguientes aspectos:

  1. Aumentar la precisión de la señal mediante la adición de otros indicadores técnicos, como la tasa de fluctuación, el volumen de transacciones, etc.

  2. Optimizar el número de transacciones para reducir el impacto de transactionsstab al reducir la frecuencia de las transacciones.

  3. Combinado con una estrategia de ruptura, establece una señal de ruptura cerca de los niveles de precios clave.

  4. Utiliza métodos de aprendizaje automático para optimizar la configuración de los parámetros.

  5. La robustez de las estrategias de prueba en múltiples mercados y períodos de tiempo para mejorar la adaptabilidad.

  6. Tener en cuenta las características de las diferentes variedades, como acciones, divisas, etc., y establecer un conjunto específico de parámetros.

  7. Optimizar continuamente las señales estratégicas y los métodos de control de riesgos en función de los resultados reales.

Resumir

Esta estrategia busca oportunidades de negociación en fluctuaciones de precios de líneas cortas a través de la tasa de cambio y el indicador SMA. Es útil para capturar tendencias rápidas, pero también debe tener en cuenta el control del riesgo. La solidez y adaptabilidad de la estrategia se puede mejorar continuamente a través de la optimización de parámetros, el ajuste de órdenes, la mejora de la estrategia de stop loss y la verificación de la liquidación.

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