Esta es una estrategia de negociación de ruptura de impulso basada en las líneas K y D del indicador del Oscilador Estocástico Suavizado.
La estrategia consta de las siguientes partes:
Configuración del indicador
Utilizando un RSI de 14 períodos para generar líneas K y D del indicador del Oscilador Estocástico Suavizado, con una SMA de 3 períodos aplicada a las líneas K y D.
Generación de señales
Cuando la línea K cruza el nivel 20, se genera una señal de compra para una entrada larga.
Detener pérdida
También se utiliza el mínimo mínimo en los últimos 20 períodos como precio de stop loss.
Tamaño de la posición
El número de puntos entre el precio de stop loss y el cierre actual se calcula utilizando el mínimo mínimo de los últimos 20 períodos.
De esta manera, la estrategia identifica la ruptura del impulso en la reversión de la sobreventa como señal de entrada y adopta un tamaño preciso de la posición y un stop loss para la reversión del impulso de la operación, con un control eficaz del riesgo.
La estrategia tiene las siguientes ventajas:
Una clara señal de entrada en la brecha de la zona de sobrecompra con un fuerte impulso.
Movimientos flexibles para detener las fluctuaciones del mercado.
El tamaño preciso de las posiciones controla el riesgo de una sola operación.
Stop loss preciso basado en el mínimo histórico.
Lógica de posicionamiento simple y clara.
Una lógica estratégica simple y clara, fácil de entender.
Estructura de código limpia, fácil de leer y modificar.
Hay algunos riesgos para la estrategia:
Las fluctuaciones de precios subyacentes.
El potencial sobre el comercio.
Una tenencia direccional, incapaz de beneficiarse del movimiento inverso de precios.
Filtración ineficaz de las condiciones del mercado.
Las siguientes optimizaciones pueden ayudar a gestionar los riesgos:
Optimice los parámetros para evitar el exceso de comercio.
Utilice entradas escalonadas para reducir el riesgo de una dirección.
Añadir análisis de tendencias de marcos de tiempo más amplios para evitar operaciones en condiciones de mercado desfavorables.
Optimizar la estrategia de stop loss para evitar una sensibilidad excesiva.
Los siguientes aspectos de la estrategia pueden optimizarse:
Optimice la pérdida de parada para usar la parada de seguimiento dinámica, la pérdida de parada escalonada, el promedio móvil, etc. para hacerlo más suave.
Puede incorporar análisis de tendencia con promedios móviles, rupturas de canal, etc.
Considere dos tenencias direccionales para beneficiarse de las retracciones.
Utilice el aprendizaje automático para la optimización automática de parámetros para encontrar parámetros óptimos para cambiar las condiciones del mercado.
Optimizar el tamaño de las posiciones mediante el uso de porcentajes fijos, capital fijo, etc. para mejorar la utilización del capital.
Agregue más filtros con indicadores como volumen, bandas de Bollinger para mejorar la calidad de las señales comerciales.
En general, esta es una estrategia de ruptura de impulso simple y clara. Adopta un enfoque de stop loss prudente para controlar eficazmente el riesgo de una sola operación. Pero aún se necesitan optimizaciones para adaptar mejor la estrategia a condiciones específicas del mercado, filtrar señales ineficaces y lograr un mejor equilibrio entre el rendimiento y el riesgo. Mejorar el análisis de tendencias de marcos de tiempo más grandes y el tamaño de la posición son direcciones de optimización importantes para esta estrategia. En resumen, como una estrategia básica de ruptura de impulso, todavía es práctica y vale la pena investigar más para adaptarla a las condiciones del mercado de instrumentos comerciales específicos.
//@version=2 //descripcion: //entrada en saturacion oscilador estocastico //salida por trailing strategy("MomentumBreak#1", overlay=true,calc_on_every_tick=true, default_qty_type=strategy.fixed,currency="USD") //entradas y variables de indicadores smoothK = input(3, minval=1) smoothD = input(3, minval=1) lengthRSI = input(14, minval=1) lengthStoch = input(14, minval=1) src = input(close, title="RSI Source") rsi1 = rsi(src, lengthRSI) k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = sma(k, smoothD) overbought=input(80) oversold=input(20) //entradas de stop , trail, profit stop=input(1500) stop_dentro_de_los_ultimos_lows=input(20) trail_points=input(500) trail_offset=input(100) profit=input(1000) riesgo_en_dolares=input(15) //condicion de compra: k>80 buycondition=crossover(k,oversold) //entrada a la posicion posicionabierta=0 if year>2015 if buycondition stoplow=lowest(stop_dentro_de_los_ultimos_lows) riesgo_en_pips = (close - stoplow) valor_del_pip = (riesgo_en_dolares / riesgo_en_pips) tamanio_de_la_posicion= ( valor_del_pip) //la posicion la esta calculando bien strategy.entry("buy",strategy.long) strategy.exit("salida","buy",trail_points=trail_points,trail_offset=trail_offset,stop=stoplow,comment=tostring(stoplow)) //////////////////////////////////condicion de stop por drodown 10% equity //strategy.risk.max_drawdown(15,strategy.cash) // condicion de stop por perdida mayor a $15 en op abierta //strategy.risk.max_intraday_loss(15,strategy.cash) //formas de tomar stop: // cuando llega a una media movil: strategy.close o strategyentry o strategy.exit o strategy.order // determinado por un numero de pips strategy.exit // determinado por el calculo de la posicion: //tomar el minimo minimo de los ultimos 20 periodos, guardarlo como nivel de stop //calcular la posicion en base a ese stop: //prcio de entrada - precio de stop = pips_en-reisgo //riesgo_e_dolares / pips_en_riesgo = pip_value //position_size=10000 * pip_value