La idea central de esta estrategia es combinar el indicador KST y las líneas EMA para identificar y seguir tendencias. Genera señales de compra cuando el indicador KST cruza por encima de 0 y cierra por encima de la línea EMA, y señales de venta cuando cruza por debajo de 0 y cierra por debajo de la línea EMA. Esta estrategia simple y práctica puede rastrear automáticamente las tendencias y es adecuada para las tenencias a medio y largo plazo.
Calcular el indicador KST: Calcular el ROC de 10, 15, 20 y 30 períodos, tomar una suma ponderada y suavizarla con una SMA de 9 períodos para derivar el indicador KST.
Calcular la línea EMA: Calcular una línea EMA de 50 períodos.
Generar señal de compra: Cuando la línea rápida de KST cruza por encima de la línea lenta de KST (cruz dorada) y está por debajo de 0, mientras que el cierre está por encima de la línea EMA, se activa una señal de compra.
Generar una señal de venta: Cuando la línea rápida de KST cruza por debajo de la línea lenta de KST (cruz muerta) y está por encima de 0, mientras que el cierre está por debajo de la línea EMA, se activa una señal de venta.
Establecer el stop loss de seguimiento: el stop loss registra el 1% del valor de la cuenta para realizar el stop loss automático.
KST identifica los cambios de tendencia, EMA confirma la dirección.
El uso de cruces rápidos / lentos y línea 0 evita operaciones innecesarias.
El EMA como soporte/resistencia filtra más señales falsas.
El stop loss automático controla el riesgo y permite que las ganancias funcionen.
Los parámetros simples hacen que la implementación y la optimización sean fáciles.
KST tiene retraso en la detección de cambios de tendencia, puede perder algunas oportunidades.
La EMA se ha retrasado en torno a las reversiones de tendencia.
El alto de pérdida demasiado ancho aumenta las pérdidas, demasiado apretado se detiene por los picos.
Las señales frecuentes pueden aumentar los costos de transacción y pueden endurecer las reglas de entrada para reducir las operaciones.
Optimizar los períodos de KST para la sensibilidad a instrumentos específicos.
Prueba otras medias móviles como MA, WMA para ver cuál combina mejor con KST.
Experimenta paradas dinámicas basadas en métricas de volatilidad como ATR.
Añadir filtros como picos de volumen para evitar trampas.
Considere combinar con indicadores como RSI, MACD para más dimensiones.
Los parámetros de ensayo en todos los instrumentos para optimizar cada uno.
Esta estrategia tiene una lógica clara y confiable que es fácil de implementar. KST identifica los giros de tendencia, filtra la EMA y detiene el riesgo de control. Rastrea automáticamente las tendencias a mediano y largo plazo. Los parámetros razonables proporcionan un gran espacio de optimización. Los usuarios pueden ajustar para diferentes instrumentos. Aplicable para que los principiantes aprendan y los profesionales sigan adelante.
/*backtest start: 2022-10-31 00:00:00 end: 2023-11-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Know Sure Thing and EMA Strategy by JLX", shorttitle="KST EMA JLX", format=format.price, precision=4, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value = 100) roclen1 = input(10, minval=1, title = "ROC Length #1") roclen2 = input(15, minval=1, title = "ROC Length #2") roclen3 = input(20, minval=1, title = "ROC Length #3") roclen4 = input(30, minval=1, title = "ROC Length #4") smalen1 = input(10, minval=1, title = "SMA Length #1") smalen2 = input(10, minval=1, title = "SMA Length #2") smalen3 = input(10, minval=1, title = "SMA Length #3") smalen4 = input(15, minval=1, title = "SMA Length #4") siglen = input(9, minval=1, title = "Signal Line Length") smaroc(roclen, smalen) => sma(roc(close, roclen), smalen) kst = smaroc(roclen1, smalen1) + 2 * smaroc(roclen2, smalen2) + 3 * smaroc(roclen3, smalen3) + 4 * smaroc(roclen4, smalen4) sig = sma(kst, siglen) plot(kst, color=color.green, title="KST") plot(sig, color=color.red, title="Signal") hline(0, title="Zero") len = input(50, minval=1, title="Length EMA") src = input(close, title="Source EMA") offset = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500) fastEMA = ema(src, len) delta = kst - sig buySignal = crossover(delta, 0) and kst < 0 and close > fastEMA sellSignal = crossunder(delta, 0) and kst > 0 and close < fastEMA longTrailPerc = input(title="Trail Long Loss (%)", type=input.float, minval=0.0, step=0.1, defval=1) * 0.01 shortTrailPerc = input(title="Trail Short Loss (%)",type=input.float, minval=0.0, step=0.1, defval=1) * 0.01 // STEP 2: // Determine trail stop loss prices longStopPrice = 0.0, shortStopPrice = 0.0 longStopPrice := if (strategy.position_size > 0) stopValue = close * (1 - longTrailPerc) max(stopValue, longStopPrice[1]) else 0 shortStopPrice := if (strategy.position_size < 0) stopValue = close * (1 + shortTrailPerc) min(stopValue, shortStopPrice[1]) else 999999 // Submit entry orders if (buySignal) strategy.entry(id="EL", long=true) if (sellSignal) strategy.entry(id="ES", long=false) // STEP 3: // Submit exit orders for trail stop loss price if (strategy.position_size > 0) strategy.exit(id="XL TRL STP", stop=longStopPrice) if (strategy.position_size < 0) strategy.exit(id="XS TRL STP", stop=shortStopPrice) alertcondition(crossover(delta, 0) and kst < 0 and close > fastEMA,'Long alert', 'You should buy') alertcondition(crossunder(delta, 0) and kst > 0 and close < fastEMA, 'Short alert', 'You should sell')