Estratégia combinada de quebra de momentum e acompanhamento de tendência


Data de criação: 2023-12-13 16:41:25 última modificação: 2023-12-13 16:41:25
cópia: 0 Cliques: 622
1
focar em
1621
Seguidores

Estratégia combinada de quebra de momentum e acompanhamento de tendência

Visão geral

A estratégia é uma estratégia de combinação, combinando o indicador de impulso, o indicador de acompanhamento de tendência e o indicador de linha média, para realizar o acompanhamento de tendência e a compra / venda de ruptura. A combinação do indicador estocástico com o indicador Supertrend é usada principalmente para determinar o momento de compra / venda, auxiliada pela linha média EMA para determinar a principal tendência do mercado.

Princípio da estratégia

A estratégia é composta principalmente pelos seguintes indicadores:

  1. EMAs médias: Use as EMAs 25, 50, 100 e 200 para determinar a tendência principal das quatro médias. Se a EMA25 atravessa a EMA50 e a EMA100 atravessa a EMA200, é uma tendência ascendente, caso contrário, é uma tendência descendente.

  2. Indicador de rastreamento de tendências do Supertrend: os parâmetros são o Factor 3 e o ATR 10, para determinar se o preço atual está em uma tendência ascendente ou descendente. Quando o Supertrend é verde, é uma tendência ascendente, vermelho é uma tendência descendente.

  3. Indicadores de potência estocástica: %K 8 e %D 3, para determinar se o estocástico está produzindo um golden fork ou um dead fork. Quando o %K atravessa o %D de baixo, é um golden fork, ao contrário do dead fork.

A estratégia de compra é a seguinte: EMA mostrando tendência ascendente + Supertrend mostrando tendência ascendente + Stochastic Gold Fork Time 。 A estratégia de venda é: EMA mostrando uma tendência descendente + Supertrend mostrando uma tendência descendente + Stochastic Dead Fork Time

A estratégia integra três indicadores: tendência, dinâmica e breakout, que permitem uma avaliação mais confiável do movimento do mercado e dos pontos de compra e venda.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. A combinação de vários indicadores, com um bom senso, pode filtrar eficazmente as falsas descobertas.

  2. A inclusão de indicadores de dinâmica pode ajudar a determinar o ponto de viragem mais cedo.

  3. Parâmetros personalizáveis para diferentes ambientes de mercado.

  4. Implementou uma configuração relativamente eficiente de stop loss e stop stop.

  5. Pode ser retomada em um ciclo alto como o dia, com melhor efeito.

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. A configuração inadequada dos parâmetros pode causar frequência de negociação ou instabilidade do sinal.

  2. Ainda há a possibilidade de erros na hora de escolher. Pode-se considerar a inclusão de mais indicadores de interferência.

  3. O ponto de parada é definido como o ponto máximo do indicador estocástico, que pode ser muito próximo, e pode ser considerado uma flexibilidade apropriada.

  4. Os dados de detecção são insuficientes, podendo afetar a adequação dos parâmetros. O período de detecção deve ser ampliado.

Direção de otimização

A estratégia pode ser otimizada em várias direções:

  1. Teste mais combinações de parâmetros para encontrar o parâmetro ideal. Como ajustar o parâmetro Factor da Supertrend.

  2. Adicionar mais indicadores de filtragem, como indicadores de energia, indicadores de taxa de flutuação, etc., reduzindo a probabilidade de erro de julgamento.

  3. Pode-se testar diferentes métodos de parada, como definir uma linha de parada em uma determinada porcentagem no ponto máximo.

  4. Optimizar o stop-loss, como considerar o stop-loss dinâmico, para bloquear mais lucros.

  5. Expandir o alcance da estratégia, como tentar adaptar-se a mais variedades de negócios ou tentar usá-la em ciclos mais altos.

Resumir

A estratégia tem uma visão geral clara, a seleção de indicadores é razoável, o acompanhamento de tendências e negociações de ruptura, e os resultados de retrospecção são melhores. No entanto, ainda há espaço para otimização. A otimização multifacetada pode tornar a estratégia mais estável e confiável, através do ajuste de parâmetros, adição de mais indicadores de ondas de choque e melhoria do método de parada de perda.

Código-fonte da estratégia
/*backtest
start: 2023-12-05 00:00:00
end: 2023-12-06 07:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Supertrend + Stoch Strategy", overlay=true)

// ---inputs---
pl = input(1.5, title="P/L", minval=0.1)
lossPercentage = input(1, title="Loss Percentage", minval=1, maxval=100)
atrPeriod = input(10, "ATR Length")
factor = input(3, "Supertrend Factor")
periodK = input(8, title="%K Length", minval=1)
smoothK = input(3, title="%K Smoothing", minval=1)
periodD = input(3, title="%D Smoothing", minval=1)
ema1l = input(25, title="EMA 1 Length", minval=1)
ema2l = input(50, title="EMA 2 Length", minval=1)
ema3l = input(100, title="EMA 3 Length", minval=1)
ema4l = input(200, title="EMA 4 Length", minval=1)

// ---lines---
ema1 = ema(close, ema1l)
ema2 = ema(close, ema2l)
ema3 = ema(close, ema3l)
ema4 = ema(close, ema4l)
trendUpper = ema1 > ema2 and ema3 > ema4
trendLower = ema1 < ema2 and ema3 < ema4

[supertrend, direction] = supertrend(factor, atrPeriod)
supertrendUpper = direction < 0
supertrendLower = direction > 0

k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)
stochCrossOver = crossover(k, d)
stochCrossUnder = crossunder(k, d)

// ---plot---
plot(ema1, color=color.green)
plot(ema2, color=color.orange)
plot(ema3, color=color.blue)
plot(ema4, color=color.purple)

bodyMiddle = plot((open + close) / 2, display=display.none)
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend = plot(direction < 0 ? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr)
fill(bodyMiddle, upTrend, color.new(color.green, 95), fillgaps=false)
fill(bodyMiddle, downTrend, color.new(color.red, 95), fillgaps=false)

// ---stop place compute---
edge = 0.  // periodly high/low
edge := stochCrossOver ? high : stochCrossUnder ? low : k > d ? max(edge[1], high) : k < d ? min(edge[1], low) : edge[1]

// plot(edge)

// ---trade condition---
// longCond = trendUpper and supertrendUpper and stochCrossOver
// shortCond = trendLower and supertrendLower and stochCrossUnder
longCond = trendUpper and supertrendUpper and stochCrossOver and strategy.position_size == 0
shortCond = trendLower and supertrendLower and stochCrossUnder and strategy.position_size == 0

// ---stop & take---
stop = 0.
stop := nz(stop[1], stop)
take = 0.
take := nz(take[1], take)

if longCond
    stop := edge[1]
    take := close + (close - stop) * pl
if shortCond
    stop := edge[1]
    take := close - (stop - close) * pl

// ---trade---
qty = strategy.equity / abs(stop - close) / 100 * lossPercentage

strategy.entry("Buy", strategy.long, when=longCond, qty=qty)
strategy.exit("Close Buy","Buy", limit=take, stop=stop)

strategy.entry("Sell", strategy.short, when=shortCond, qty=qty)
strategy.exit("Close Sell","Sell", limit=take, stop=stop)

stopLine = plot(strategy.position_size != 0 ? stop : na, color=color.red, style=plot.style_linebr)
takeLine = plot(strategy.position_size != 0 ? take : na, color=color.green, style=plot.style_linebr)
entryLine = plot(strategy.position_size != 0 ? strategy.position_avg_price : na, color=color.blue, style=plot.style_linebr)
fill(entryLine, stopLine, color.new(color.red, 90), fillgaps=false)
fill(entryLine, takeLine, color.new(color.green, 90), fillgaps=false)