Tendência de Impulso da KST EMA Seguindo a Estratégia

Autora:ChaoZhang, Data: 2023-11-07 16:36:21
Tags:

img

Resumo

A ideia central desta estratégia é combinar o indicador KST e as linhas EMA para identificar e seguir tendências. Gerar sinais de compra quando o indicador KST cruza acima de 0 e fecha acima da linha EMA, e sinais de venda quando cruza abaixo de 0 e fecha abaixo da linha EMA. Esta estratégia simples e prática pode rastrear automaticamente as tendências e é adequada para participações de médio a longo prazo.

Estratégia lógica

  1. Calcular o indicador KST: Calcular o ROC de 10, 15, 20 e 30 períodos, tomar uma soma ponderada e suavizar com uma SMA de 9 períodos para derivar o indicador KST.

  2. Calcular a linha EMA: Calcular uma linha EMA de 50 períodos.

  3. Gerar sinal de compra: Quando a linha rápida KST cruza acima da linha lenta KST (cruz de ouro) e está abaixo de 0, enquanto o fechamento está acima da linha EMA, um sinal de compra é acionado.

  4. Gerar sinal de venda: Quando a linha rápida KST cruza abaixo da linha lenta KST (cruz morta) e está acima de 0, enquanto o fechamento está abaixo da linha EMA, um sinal de venda é acionado.

  5. Configurar o stop loss final: o stop loss registra 1% do valor da conta para realizar o stop loss automático.

Vantagens

  1. O KST identifica mudanças de tendência, a EMA confirma a direcção.

  2. O uso de cruzamentos rápidos/lentos e de linhas zero evita transações desnecessárias.

  3. A EMA como suporte/resistência filtra mais sinais falsos.

  4. O stop loss automático controla o risco e permite que os lucros funcionem.

  5. Parâmetros simples facilitam a implementação e otimização.

Riscos

  1. O KST tem atrasos na detecção de mudanças de tendência, pode perder algumas oportunidades, pode encurtar períodos ou otimizar a ponderação.

  2. A EMA tem atrasos em relação às inversões de tendência.

  3. O stop loss demasiado largo aumenta as perdas, o too tight é interrompido por picos, são necessários testes cuidadosos para otimizar.

  4. Os sinais frequentes podem aumentar os custos de transacção, podem endurecer as regras de entrada para reduzir os negócios.

Orientações de otimização

  1. Otimizar os períodos de KST para a sensibilidade a instrumentos específicos.

  2. Teste outras médias móveis como MA, WMA para ver qual combina melhor com KST.

  3. Experimenta paradas dinâmicas baseadas em métricas de volatilidade como ATR.

  4. Adicione filtros como picos de volume para evitar armadilhas.

  5. Considere combinar com indicadores como RSI, MACD para mais dimensões.

  6. Testar parâmetros em todos os instrumentos para otimizar cada um deles.

Conclusão

Esta estratégia tem uma lógica clara e confiável que é fácil de implementar. KST identifica tendências, filtra a EMA e pára de controlar o risco. Ele rastreia automaticamente tendências de médio a longo prazo. Parâmetros razoáveis fornecem grande espaço de otimização. Os usuários podem ajustar para diferentes instrumentos. Aplicável para iniciantes aprenderem e profissionais construirem. Com otimização adicional, mostra promessa como um sistema robusto de tendência.


/*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')





Mais.