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

Estratégia de stop loss para o seguimento do gradiente

Autora:ChaoZhang, Data: 2023-10-25 14:56:28
Tags:

img

Resumo

A estratégia de Stop Loss Gradient Trailing ajusta dinamicamente a linha de stop loss para equilibrar o controle de risco e a tomada de lucro.

Princípios

A estratégia usa a faixa média verdadeira (ATR) como base para o stop loss dinâmico. A ATR reflete efetivamente a volatilidade de um estoque. A estratégia primeiro leva o período ATR como entrada, normalmente 10 dias. Em seguida, o valor ATR é calculado. À medida que o preço sobe, a linha de stop loss também se move para cima para seguir o preço. Quando o preço cai, a linha de stop loss permanece inalterada para bloquear os lucros. Além disso, a estratégia permite ajustar a distância de stop loss do preço usando um parâmetro factor.

Especificamente, a estratégia calcula o ATR atual, em seguida, multiplica-o pelo fator para obter a distância de stop loss. Se o preço estiver acima do preço de stop loss, uma posição longa é aberta. Se o preço estiver abaixo, uma posição curta é aberta. Assim, a linha de stop loss segue de perto o preço, alcançando um efeito de arrasto de gradiente.

Vantagens

  • Perda de paragem de tração dinâmica ajusta a distância de paragem com base nas condições de mercado
  • ATR calcula a distância de parada com base na volatilidade do mercado
  • Simples e fácil de automatizar a negociação
  • O valor da posição em risco deve ser calculado de acordo com o método de classificação da posição em risco.
  • Saldos entre perdas de suspensão e lucros
  • Redução de paradas desnecessárias

Riscos

  • Escolher os parâmetros apropriados do ATR é crucial
  • O stop loss demasiado próximo pode aumentar os stop out desnecessários
  • A perda de paragem demasiado elevada pode não permitir controlar os riscos
  • A própria estratégia não pode determinar as tendências do mercado
  • Necessidade de avaliar o período ATR e as definições dos fatores

Melhorias

  • Adicionar filtros como médias móveis para reduzir sinais falsos
  • Optimização automática do período ATR e do fator de stop loss através do aprendizado de máquina
  • Incorporar estratégia de captação de lucros para bloquear os lucros
  • Combinar com outros indicadores para verificar sinais de compra/venda
  • Pesquisar melhor cálculo ATR ou período ATR dinâmico
  • Explore outros algoritmos de trailing stop dinâmicos
  • Otimizar ainda mais o efeito stop loss

Conclusão

A estratégia Gradient Trailing Stop Loss equilibra efetivamente risco e lucro ajustando dinamicamente a distância de stop loss. Com lógica simples e alta configurabilidade, é adequada para negociação algorítmica.


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

//@version=5
strategy("Supertrend Strategy, by Ho.J.", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

// 백테스팅 시작일과 종료일 입력
startYear = input(2020, title="Start Year")
startMonth = input(1, title="Start Month")
startDay = input(1, title="Start Day")

endYear = input(9999, title="End Year")
endMonth = input(12, title="End Month")
endDay = input(31, title="End Day")

// 백테스팅 시간 범위 확인
backtestingTimeBool = (year >= startYear and month >= startMonth and dayofmonth >= startDay) and (year <= endYear and month <= endMonth and dayofmonth <= endDay)

atrPeriod = input(10, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)

[_, direction] = ta.supertrend(factor, atrPeriod)

var bool longCondition = false
var bool shortCondition = false

if backtestingTimeBool
    prevDirection = direction[1]
    if direction < 0
        longCondition := false
        shortCondition := true
    else if direction > 0
        longCondition := true
        shortCondition := false

if longCondition
    strategy.entry("My Long Entry Id", strategy.long)

if shortCondition
    strategy.entry("My Short Entry Id", strategy.short)

plot(strategy.equity, title="equity", color=color.rgb(255, 255, 255), linewidth=2, style=plot.style_area)

Mais.