Estratégia de stop loss e take profit orientada por indicadores


Data de criação: 2023-11-10 11:28:06 última modificação: 2023-11-10 11:28:06
cópia: 1 Cliques: 728
1
focar em
1617
Seguidores

Estratégia de stop loss e take profit orientada por indicadores

Visão geral

Esta estratégia utiliza a média móvel como sinal de negociação, combinada com o índice de stop loss personalizado pelo usuário, para implementar uma estratégia de stop loss de tipo stop loss. A estratégia pode ser iniciada, interrompida e interrompida automaticamente, sem a necessidade de intervenção humana, e é adequada para negociação automática.

Princípio da estratégia

A lógica central desta estratégia é:

  1. Usar o SMA de 3 ciclos como sinal de negociação, fazendo mais quando o SMA acima passa por 0 e fechando quando o SMA abaixo passa por 0;

  2. Depois de entrar, o usuário pode personalizar a proporção de stop loss e stop loss;

  3. Estabelecer automaticamente uma linha de stop-loss com base no preço de entrada e na proporção de stop-loss definida pelo usuário;

  4. A configuração automática do limite de retenção de acordo com o preço de entrada e a proporção de retenção definida pelo usuário;

  5. Quando o preço toca a linha de stop loss, o stop loss é automático; quando o preço toca a linha de stop loss, o stop stop é automático;

  6. A ordem de parada de perda é automaticamente cancelada após a liquidação.

Concretamente, a estratégia calcula a média móvel de 3 períodos através da função sma e atribui o seu valor à variável ma.

Em seguida, calcule a linha de entrada long, cujo valor é ma mais o percentual de ma em lo. Lo é um parâmetro ajustável do usuário, que representa o deslocamento da linha de entrada em horas extras.

Quando ma é colocado em cima de 0, o que significa que você está começando a fazer mais, você está fazendo mais com a entrada da função strategy.entry, e o preço de entrada é long。

Ao mesmo tempo, configure o preço de parada e o preço de parada. O preço de parada é o preço de entrada menos o sl% do preço de entrada. O sl é o parâmetro ajustável do usuário, representando a proporção de parada.

A função strategy.entry define um stop loss e um stop loss. Quando o preço toca a linha de stop loss, o stop loss é automático; quando o preço toca a linha de stop loss, o stop stop é automático.

Após o equilíbrio, o stop loss é automaticamente cancelado através da função strategy.cancel.

Vantagens estratégicas

A estratégia tem as seguintes vantagens:

  1. O nível de automação é alto, não requer intervenção humana e é adequado para transações automáticas;

  2. A proporção de stop loss pode ser personalizada para controlar o risco.

  3. Os sinais de negociação são provenientes de indicadores, evitando falsas rupturas;

  4. A perda de visualização do travão é visível.

  5. A lógica da estratégia é clara, simples e fácil de entender.

Riscos e soluções

A estratégia também apresenta alguns riscos:

  1. Risco de falsos sinais no indicador. A solução é otimizar os parâmetros para garantir a estabilidade e a confiabilidade do indicador.

  2. O padrão de suspensão de perda não é razoável e pode ser muito relaxado ou muito radical. A solução é ajustar os parâmetros de suspensão de perda para diferentes mercados.

  3. A entrada de ruptura é fácil de ser manipulada. A solução é combinar tendências, indicadores de preços e outros sinais de entrada de filtro.

  4. A solução é reduzir o padrão de posição ou rastrear o stop loss.

Direção de otimização da estratégia

A estratégia pode ser melhorada em alguns aspectos:

  1. Otimizar os parâmetros das médias móveis para torná-las mais confiáveis;

  2. Otimizar as condições de entrada, evitar falsas brechas e adicionar confirmação de preço;

  3. Otimizar a estratégia de stop loss, que pode usar stop loss dinâmico, stop loss de rastreamento, etc.

  4. Otimizar o gerenciamento de fundos, ajustar os padrões de posição e reduzir o risco individual;

  5. Otimizar o tempo de entrada do filtro, combinando a tendência com indicadores de suporte e resistência.

  6. Junte-se a Pyramiding para uma estratégia de aquisição de ativos para aumentar a rentabilidade.

  7. Optimização de parâmetros para variedades específicas.

Resumir

Esta estratégia é uma estratégia de parada de perda como um indicador-driven, com a vantagem de automação de negociação, controle de risco, adequado para a negociação de quantidade. Mas também há algumas direções que precisam de otimização, como a otimização de parâmetros de indicadores, filtragem de entrada, estratégia de parada de perda, gestão de fundos, etc. Em geral, esta estratégia fornece uma estrutura técnica de negociação simples e confiável, com base na qual pode ser ampliado e otimizado para torná-lo uma estratégia mais forte.

Código-fonte da estratégia
/*backtest
start: 2023-01-01 00:00:00
end: 2023-11-09 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("example for panel signals", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//https://www.tradingview.com/script/m2a04xmb-noro-s-shiftma-tp-sl-strategy/
//Settings
lo = input(-5.0, title = "Long-line, %")
tp = input(5.0, title = "Take-profit")
sl = input(2.0, title = "Stop-loss")

//SMA
ma = sma(ohlc4, 3)
long = ma + ((ma / 100) * lo)

//Orders
avg = strategy.position_avg_price
if ma > 0
    strategy.entry("Long", strategy.long, limit = long)
    strategy.entry("Take", strategy.short, 0, limit = avg + ((avg / 100) * tp))
    strategy.entry("Stop", strategy.short, 0, stop = avg - ((avg / 100) * sl))
    
//Cancel order
if strategy.position_size == 0
    strategy.cancel("Take")
    strategy.cancel("Stop")

//Lines
plot(long, offset = 1, color = color.black, transp = 0)
take = avg != 0 ? avg + ((avg / 100) * tp) : long + ((long / 100) * tp)
stop = avg != 0 ? avg - ((avg / 100) * sl) : long - ((long / 100) * sl)
takelinecolor = avg == avg[1] and avg != 0 ? color.lime : na
stoplinecolor = avg == avg[1] and avg != 0 ? color.red : na
plot(take, offset = 1, color = takelinecolor, linewidth = 3, transp = 0)
plot(stop, offset = 1, color = stoplinecolor, linewidth = 3, transp = 0)
//
disp_panels = input(true, title="Display info panels?")
h=high
info_label_off = input(20, title="Info panel offset")
info_label_size = input(size.large, options=[size.tiny, size.small, size.normal, size.large, size.huge], title="Info panel label size")
info_panel_x = timenow + round(change(time)*info_label_off)
info_panel_y = h

info_title= "-=-=-=-=- Info Panel -=-=-=-=-"
info_div = "\n\n------------------------------"
a = "\n\ Long : " + tostring(long)
b = "\n\ Stop loss : " + tostring(stop)
c = "\n\ TP : " + tostring(take)
// info_text = a+c+b
// info_panel = disp_panels ? label.new(x=info_panel_x, y=info_panel_y, text=info_text, xloc=xloc.bar_time, yloc=yloc.price, color=color.yellow, style=label.style_labelup, textcolor=color.black, size=info_label_size) : na
// label.delete(info_panel[1])