O recurso está a ser carregado... Carregamento...

Tendência de seguir a estratégia com stop loss

Autora:ChaoZhang, Data: 2023-10-30 15:21:54
Tags:

img

Resumo

Esta estratégia combina a tendência seguindo com o trailing stop loss e tomando lógica de lucro para andar continuamente a tendência para lucros. Ele usa a média móvel para determinar a direção da tendência e gerar sinais de negociação quando o preço quebra as linhas MA. Depois de entrar em posição longa, a estratégia define stop loss com base no valor ATR e ajusta-o com a lógica de stop loss para seguir a tendência. Quando o preço sobe para um certo nível, é necessário lucro parcial para bloquear alguns ganhos.

Estratégia lógica

  1. Configure o horário de início e parada do backtest com base na entrada do usuário.

  2. Iniciar o preço de parada longa e curta, e percentual de atraso.

  3. Entrar em longo quando o preço ultrapassa a linha MA.

  4. Calcular a distância de stop loss com o ATR e definir o preço de stop loss.

  5. À medida que o preço continua a subir, a pista para parar a perda para cima para bloquear mais lucros.

  6. Quando o preço atingir o limiar de lucro, obtém lucro parcial.

  7. Entrar em curto quando o preço cruzar abaixo da linha MA.

  8. Calcular a distância de stop loss com o ATR e definir o preço de stop loss.

  9. À medida que o preço continua a cair, a pista de parada de perdas para baixo para bloquear mais lucros.

  10. Quando o preço atingir o limiar de lucro, obtém lucro parcial.

Vantagens

  • O trailing stop loss pode seguir as tendências e capturar mais lucros enquanto protege os lucros.

  • O ATR dinâmico de stop loss reage melhor às oscilações do mercado do que o stop loss fixo.

  • O lucro parcial contribui para o bloqueio de alguns ganhos e reduz os riscos de retirada.

  • Lógica simples e clara, fácil de entender e implementar.

Riscos

  • A reversão súbita da tendência pode desencadear grandes perdas com uma distância larga de stop loss.

  • O stop loss baseado no ATR pode ser demasiado sensível e ser interrompido prematuramente.

  • A taxa de lucro parcial inadequada pode perder as tendências ou aumentar as perdas.

  • Muitos parâmetros precisam de otimização, como período ATR, percentagens de atraso, taxa de lucro.

  • A estratégia baseia-se apenas no MA e no ATR, podem ocorrer sinais errados.

Optimização

  • Adicione outros indicadores como MACD, KD para filtrar sinais de negociação e evitar sinais MA errados.

  • Considere os rácios dinâmicos de lucro baseados na força da tendência.

  • Teste diferentes períodos de ATR para obter a estabilidade ideal ou use outros indicadores para parar a perda.

  • Introduzir aprendizado de máquina para otimizar automaticamente parâmetros e ajustá-los dinamicamente.

  • Usar modelos de aprendizagem profunda para detectar tendências e gerar sinais automaticamente.

Resumo

A estratégia integra trailing stop loss, dynamic ATR stop loss e partial take profit para seguir tendências e controlar drawdowns. Mas tem algumas limitações como a simples detecção de tendências e a otimização de parâmetros difíceis. Isso dá boas direções para melhorar ainda mais a estratégia usando mais técnicas e indicadores para melhorar a estabilidade e lucratividade.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © felipefs

//@version=4
strategy("Meu Script", overlay=true)
plot(ohlc4)

//Funçao de Datas
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(6, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false

//Funções de Trailing Stop
long_stop_price = 0.0
short_stop_price = 0.0
long_trail_perc = 0
short_trail_perc = 0

long_stop_price := if (strategy.position_size > 0)
    stopValue = close * (1 - long_trail_perc)
    max(stopValue, long_stop_price[1])
else
    0

short_stop_price := if (strategy.position_size < 0)
    stopValue = close * (1 + short_trail_perc)
    min(stopValue, short_stop_price[1])
else
    999999

//Função de Debug
debug(value) =>
    x = bar_index
    y = close
    label.new(x, y, tostring(value))
    
//Take Profit
profit = close * (1 + 0.12)
strategy.entry("Long", true)
strategy.exit("Take Profit 1 Long", from_entry="Long", limit=profit, qty_percent=50.0)
 
//ATR Stop
 
// xATRTrailingStopLong = 0.0
// xATR = atr(nATRPeriod)
// nLossLong = nATRMultipLong * xATR

// if (strategy.position_size > 0)
//     xATRTrailingStopLong := max(nz(xATRTrailingStopLong[1]), close - nLossLong)

Mais.