Estrategia cuantitativa para el avance de los precios de negociación

El autor:¿ Qué pasa?, Fecha: 2023-12-22 12:42:15
Las etiquetas:

img

Resumen general

Esta es una estrategia de negociación cuantitativa a corto plazo basada en el promedio móvil simple (SMA), el promedio móvil exponencial (EMA), los canales de Keltner, el indicador MACD y el oscilador estocástico.

Principio de la estrategia

La estrategia utiliza SMA de 25 períodos, EMA de 200 períodos para construir líneas de promedio móvil dual. Cuando el precio atraviesa los promedios móviles dobles hacia arriba, se genera una señal de compra. Cuando el precio atraviesa los promedios móviles dobles hacia abajo, se genera una señal de venta.

Al mismo tiempo, esta estrategia utiliza canales de Keltner de 10 períodos. El avance de las bandas superior e inferior del canal también sirve como señales auxiliares. El indicador MACD genera señales comerciales con su línea rápida, línea lenta e histograma. El oscilador estocástico también forma señales largas y cortas con la cruz dorada y la cruz muerta de su línea %K y línea %D.

Específicamente, cuando el precio de cierre está por encima tanto de la SMA como de la EMA, y dentro de los canales de Keltner, el histograma MACD es negativo y el %K estocástico está por debajo de 50, se activa una señal de entrada larga.

Ventajas estratégicas

  1. El uso de dos promedios móviles combinados con el indicador de canal puede filtrar eficazmente las falsas rupturas.
  2. La integración de señales de múltiples indicadores técnicos puede mejorar la fiabilidad.
  3. Las reglas largas/cortas claras facilitan la eficiencia de la ejecución programática.
  4. Apto para estrategias de negociación cuantitativa de alta frecuencia.

Riesgos estratégicos y optimización

  1. Como estrategia de negociación a corto plazo, tiene altos riesgos de frecuencia de negociación.
  2. No existe ningún mecanismo de stop loss, lo que conduce a grandes riesgos de pérdida.
  3. Considere la posibilidad de añadir indicadores de volatilidad para optimizar las condiciones de entrada y de stop loss.
  4. Se pueden probar diferentes períodos de parámetros para encontrar combinaciones óptimas.

Conclusión

Esta estrategia integra cuatro indicadores técnicos comúnmente utilizados: promedios móviles, canal, MACD y estocástico. Determina el largo / corto basado en el avance del precio, una estrategia comercial cuantitativa típica a corto plazo. En comparación con las estrategias de indicador único, su combinación de múltiples indicadores mejora la precisión de la señal y vale la pena probar y optimizar más.


/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
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=5
strategy(title="Scalping Trading System Crypto and Stocks", overlay=true)
src = input(low, title="Source")

//sma and ema
len = input.int(25, minval=1, title="Length SMA" , group="Moving Averages")
len2 = input.int(200, minval=1, title="Length EMA", group="Moving Averages")

out = ta.sma(src, len)
out2 = ta.ema(src, len2)


//keltner
lengthk = input.int(10, minval=1, title="Length Keltner Channel",group="Keltner")
mult = input(2.0, "Multiplier",group="Keltner")
BandsStyle = input.string("Average True Range", options = ["Average True Range", "True Range", "Range"], title="Bands Style",group="Keltner")
atrlength = input(14, "ATR Length",group="Keltner")

ma = ta.sma(src, lengthk)
rangema = BandsStyle == "True Range" ? ta.tr(true) : BandsStyle == "Average True Range" ? ta.atr(atrlength) : ta.rma(high - low, lengthk)
upper = ma + rangema * mult
lower = ma - rangema * mult

//stoch
periodK = input.int(10, title="%K Length", minval=1,group="Stochastic")
smoothK = input.int(1, title="%K Smoothing", minval=1,group="Stochastic")
periodD = input.int(1, title="%D Smoothing", minval=1,group="Stochastic")
k = ta.sma(ta.stoch(close, high, low, periodK), smoothK)
d = ta.sma(k, periodD)

//macd 1
fast_length = input(title="Fast Length MACD", defval=4,group="MACD Fast")
slow_length = input(title="Slow Length MACD", defval=34,group="MACD Fast")
signal_length = input.int(title="Signal Smoothing MACD",  minval = 1, maxval = 50, defval = 5,group="MACD Fast")
sma_source = input.string(title="Oscillator MA Type MACD",  defval="EMA", options=["SMA", "EMA"],group="MACD Fast")
sma_signal = input.string(title="Signal Line MA Type MACD", defval="EMA", options=["SMA", "EMA"],group="MACD Fast")

fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal




long= close > out and close < upper and close > lower and hist < 0 and k < 50 and close > out2 

short= close < out and close < upper and close > lower and hist > 0 and k > 50 and close < out2 

strategy.entry("long",strategy.long,when= long)

strategy.entry("short",strategy.short,when=short)


Más.