Estratégia de stop loss de acompanhamento dinâmico


Data de criação: 2023-12-21 15:58:54 última modificação: 2023-12-21 15:58:54
cópia: 1 Cliques: 761
1
focar em
1623
Seguidores

Estratégia de stop loss de acompanhamento dinâmico

Visão geral

Esta estratégia baseia-se na linha do sol para determinar a direção da tendência e, em seguida, usa o novo ponto mais alto ou mais baixo formado na linha K de 15 minutos como ponto de parada ou ponto de parada de rastreamento, permitindo a estratégia de ajuste dinâmico do ponto de parada para bloquear mais lucros.

Princípio da estratégia

  1. Comparando o preço de fechamento do dia K com o preço de fechamento do dia anterior, para determinar a direção da tendência. Se o preço de fechamento for superior ao preço de fechamento do dia anterior, é definido como uma tendência ascendente; Se o preço de fechamento for inferior ao preço de fechamento do dia anterior, é definido como uma tendência descendente.

  2. Em uma tendência ascendente, faça mais quando o preço de fechamento da linha K de 15 minutos for superior ao preço máximo da linha K de 15 minutos anterior; em uma tendência descendente, faça menos quando o preço de fechamento da linha K de 15 minutos for inferior ao preço mínimo da linha K de 15 minutos anterior.

  3. Depois de fazer o plus, o preço mais baixo da linha K de 15 minutos anterior é o ponto de parada. Depois de fazer o short, o preço mais alto da linha K de 15 minutos anterior é o ponto de parada.

  4. Quando a linha K de 15 minutos cria novamente um novo ponto alto ou baixo, ajuste o ponto de parada. Ajuste para um novo ponto baixo quando for feito em excesso, ajuste para um novo ponto alto quando for feito em vazio, realize o stop de rastreamento dinâmico.

Análise de vantagens

A maior vantagem desta estratégia é que pode ser ajustada dinamicamente o ponto de parada, ao mesmo tempo em que garante o controle de risco, para maximizar o bloqueio de lucros, reduzindo a probabilidade de parada de ser chocado.

As vantagens são:

  1. Com base na operação de tendências, é possível avaliar a evolução do mercado em tempo hábil e escolher a direção correta de negociação.

  2. Os jogadores podem entrar e sair com mais frequência, capturando mais oportunidades.

  3. Ajustar dinamicamente a estratégia de stop loss para reduzir o risco de o stop loss ser atingido por novos altos ou baixos.

  4. A posição de parada de prejuízos é razoavelmente ajustada para evitar prejuízos irrelevantes.

Análise de Riscos

Os principais riscos desta estratégia são os erros de julgamento de tendências. Os pontos de risco específicos são os seguintes:

  1. A análise da tendência do dia-a-dia pode ser errada, o que pode levar a um erro de direção.

  2. A probabilidade de que o ponto de parada de 15 minutos seja ultrapassado é maior se houver uma forte oscilação em curto prazo.

  3. A identificação incorreta dos pontos de inflexão da tendência pode levar a perdas.

A solução é a seguinte:

  1. Adicione outros indicadores de ciclo de tempo para um julgamento integrado, evitando erros com base em apenas um único ciclo.

  2. Avaliar a volatilidade do mercado e, se houver uma grande volatilidade, permitir uma margem de perda apropriada.

  3. Aumentar o mecanismo de julgamento de pontos de viragem de tendências e liquidar as posições antes da viragem.

Direção de otimização

A estratégia ainda tem espaço para ser melhorada:

  1. Aumentar o conhecimento de outros indicadores de ciclo e otimizar as tendências.

  2. Teste diferentes configurações de stop loss e selecione o parâmetro ideal.

  3. Aumentar os indicadores de capacidade e evitar que a capacidade se desvie de uma transação errada.

  4. Adição de mecanismos de reversão de tendências e otimização de pontos de saída.

  5. Avaliar o aumento do intervalo de trailing stop para reduzir ainda mais a probabilidade de o trailing stop ser atingido.

Resumir

Esta estratégia tem um bom desempenho geral, é clara e fácil de entender, possui vantagens como o ajuste dinâmico de parada de perdas, negociação freqüente e tendência, é capaz de controlar eficazmente o risco e bloquear os lucros, vale a pena testar e otimizar a aplicação. Mas também há algum espaço para melhorias. Recomenda-se começar a partir de vários aspectos de julgamento integrado, configuração de parâmetros de otimização, aumento do julgamento de reversão de tendência, etc., para aumentar ainda mais a estabilidade e a taxa de retorno da estratégia.

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

//@version=5
strategy("Anand's Strategy", overlay=true)

// Get the high and low of the previous day's candle
prev_high = request.security(syminfo.tickerid, "D", high[2])
prev_low = request.security(syminfo.tickerid, "D", low[2])

// var float prev_high = na
// var float prev_low = na

prev_close = request.security(syminfo.tickerid, "D", close[1])


getDayIndexedHighLow(_bar) =>
    _indexed_high = request.security(syminfo.tickerid, "D", high[_bar])
    _indexed_low = request.security(syminfo.tickerid, "D", low[_bar])
    [_indexed_high, _indexed_low]

var index = 2

while index >= 0
    [indexed_high_D, indexed_low_D] =  getDayIndexedHighLow(index)
  
    if prev_close > indexed_high_D or prev_close < indexed_low_D
        prev_high := indexed_high_D
        prev_low := indexed_low_D
        break
    // Decrease the index to move to the previous 15-minute candle
    index := index - 1


// Determine the trade direction based on the candle criterion
trade_direction = prev_close > prev_high ? 1 : (prev_close < prev_low ? -1 : 0)

// Get the current close from 15-minute timeframe
current_close = request.security(syminfo.tickerid, "15", close[1])
prev_high_15m = request.security(syminfo.tickerid, "15", high[2])
prev_low_15m = request.security(syminfo.tickerid, "15", low[2])

// var float prev_high_15m = na
// var float prev_low_15m = na

getIndexedHighLow(_bar) =>
    _indexed_high = request.security(syminfo.tickerid, "15", high[_bar])
    _indexed_low = request.security(syminfo.tickerid, "15", low[_bar])
    [_indexed_high, _indexed_low]


// Loop through previous 15-minute candles until the condition is met
var  i = 2

while i >= 2
    [indexed_high_15m, indexed_low_15m] =  getIndexedHighLow(i)
  
    if current_close > indexed_high_15m or current_close < indexed_low_15m
        prev_high_15m := indexed_high_15m
        prev_low_15m := indexed_low_15m
        break
    // Decrease the index to move to the previous 15-minute candle
    i := i - 1



buy_condition = trade_direction == 1 and current_close > prev_high_15m
stop_loss_buy = prev_low_15m

// Sell Trade Criteria in Negative Trend
sell_condition = trade_direction == -1 and current_close < prev_low_15m
stop_loss_sell = prev_high_15m


// Trailing Stop Loss for Buy Trade
// Custom Trailing Stop Function for Buy Trade
var float trail_stop_buy = na
trailing_buy_condition = buy_condition and current_close > trail_stop_buy
if trailing_buy_condition
    trail_stop_buy := current_close

// Custom Trailing Stop Function for Sell Trade
var float trail_stop_sell = na
trailing_sell_condition = sell_condition and current_close < trail_stop_sell
if trailing_sell_condition
    trail_stop_sell := current_close

// Take Buy Trade with Stop Loss
if (buy_condition)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Buy Stop Loss", "Buy", stop=stop_loss_buy)

// Take Sell Trade with Stop Loss
if (sell_condition)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Sell Stop Loss", "Sell", stop=stop_loss_sell)

// Set the background color based on the trade direction
bgcolor(trade_direction == 1 ? color.new(color.green, 90) : trade_direction == -1 ? color.new(color.red, 90) : na)