Estrategia de trading de rango basada en el oscilador estocástico

ATR
Fecha de creación: 2024-06-17 14:52:10 Última modificación: 2024-06-17 14:52:10
Copiar: 0 Número de Visitas: 568
1
Seguir
1617
Seguidores

Estrategia de trading de rango basada en el oscilador estocástico

Descripción general

La estrategia utiliza un indicador de oscilación aleatoria (estocástico) para identificar el estado de sobrecompra y sobreventa en el mercado, para desencadenar operaciones con parámetros predefinidos de riesgo y retorno, con la esperanza de obtener ganancias dentro de un rango de negociación fluctuante. La idea principal de la estrategia es comprar en los bajos de los rangos de negociación y vender en los altos de los rangos de negociación, mientras se controla estrictamente el riesgo.

Principio de estrategia

  1. Cuando el indicador de oscilación aleatoria cae por encima del nivel de sobreventa ((20), la estrategia abre una posición más alta; cuando el indicador de oscilación aleatoria rompe el nivel de sobreventa ((80), la estrategia abre una posición baja.
  2. Los niveles de stop loss y stop stop se establecen de acuerdo con el doble de la amplitud real promedio (ATR), mientras que el riesgo de cada operación se controla en el 1% de los intereses de la cuenta.
  3. Para evitar el exceso de transacciones, la estrategia obliga a separar al menos 20 líneas K entre cada transacción para permitir un período de enfriamiento y evitar la oscilación.

Ventajas estratégicas

  1. La estrategia es capaz de capturar las fluctuaciones de los precios dentro de un rango de negociación oscilante, comprando en los bajos y vendiendo en los altos con la esperanza de obtener ganancias.
  2. La estrategia adopta medidas estrictas de gestión de riesgos, que incluyen paradas y paradas basadas en ATR y un riesgo fijo del 1% por transacción, lo que ayuda a controlar los retiros y las pérdidas por transacción.
  3. La estrategia evita el comercio frecuente y el engaño por el ruido del mercado al establecer el mínimo intervalo entre las transacciones (20 líneas K).
  4. La lógica de la estrategia es clara, fácil de entender e implementar, y es adecuada para su aplicación en una variedad de entornos de mercado.

Riesgo estratégico

  1. El éxito de la estrategia depende en gran medida de la correcta identificación de los rangos de negociación, lo que puede conducir a operaciones perdedoras.
  2. La estrategia puede perder oportunidades de negociación de tendencia si el mercado rompe el intervalo de negociación y se forma una tendencia.
  3. A pesar de las medidas de gestión de riesgos adoptadas por la estrategia, en condiciones extremas de mercado, es posible que se produzcan pérdidas superiores a las esperadas.
  4. Los parámetros de la estrategia (por ejemplo, el nivel de sobrecompra/sobreventa, el multiplicador de ATR, etc.) necesitan ser optimizados para diferentes condiciones de mercado, y los parámetros inadecuados pueden causar un mal desempeño.

Dirección de optimización de la estrategia

  1. Considere combinar otros indicadores técnicos (como MACD, RSI, etc.) para confirmar las señales de negociación y mejorar la fiabilidad de la señal.
  2. Introducción de mecanismos dinámicos de stop loss y de suspensión, por ejemplo, ajustando el stop loss a medida que el precio se mueve en la dirección favorable con el fin de obtener una mayor tasa de rendimiento.
  3. Para la identificación de la zona de transacción, se puede explorar el uso de tecnologías más avanzadas, como algoritmos de aprendizaje automático, para mejorar la precisión.
  4. En el mercado de tendencia, se puede considerar la introducción de filtros de tendencia para evitar el comercio en el mercado de tendencia.

Resumir

Las estrategias de trading de bandas de fluctuación basadas en indicadores de oscilación aleatoria intentan activar operaciones dentro de bandas de negociación predeterminadas, utilizando señales de sobreventa y sobreventa de indicadores aleatorios. La estrategia controla el riesgo a través de una estricta gestión del riesgo y la intermitencia de la negociación. Aunque la estrategia tiene ciertas ventajas, su éxito depende en gran medida de la correcta identificación de las bandas de negociación.

Código Fuente de la Estrategia
/*backtest
start: 2023-06-11 00:00:00
end: 2024-06-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Range Trading with Stochastic", overlay=true)

// Input Parameters
overboughtLevel = input.int(80, title="Overbought Level", minval=1, maxval=100)
oversoldLevel = input.int(20, title="Oversold Level", minval=1, maxval=100)
stochLength = input.int(14, title="Stochastic Length", minval=1)
riskPerTrade = input.float(0.01, title="Risk per Trade (%)", minval=0.01, maxval=100, step=0.01)
barsBetweenTrades = input.int(20, title="Bars Between Trades", minval=1)

// Calculate Stochastic Oscillator
k = ta.sma(ta.stoch(close, high, low, stochLength), 3)
d = ta.sma(k, 3)

// Variables to Track Time Since Last Trade
var lastTradeBar = 0
barsSinceLastTrade = bar_index - lastTradeBar

// Risk Management
atr = ta.atr(14)
stopLoss = 2 * atr
takeProfit = 2 * atr
riskAmount = strategy.equity * riskPerTrade / 100
positionSize = 1

// Entry Conditions
longCondition = k < oversoldLevel and strategy.position_size == 0 and barsSinceLastTrade >= barsBetweenTrades
shortCondition = k > overboughtLevel and strategy.position_size == 0 and barsSinceLastTrade >= barsBetweenTrades

// Entry/Exit Orders
if longCondition
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("Long Exit", "Long", stop=close - stopLoss, limit=close + takeProfit)
    lastTradeBar := bar_index // Update last trade bar
if shortCondition
    strategy.entry("Short", strategy.short, qty=positionSize)
    strategy.exit("Short Exit", "Short", stop=close + stopLoss, limit=close - takeProfit)
    lastTradeBar := bar_index // Update last trade bar

// Plot Stochastic
plot(k, color=color.blue, title="%K")
plot(d, color=color.orange, title="%D")
hline(overboughtLevel, color=color.red, title="Overbought")
hline(oversoldLevel, color=color.green, title="Oversold")