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

Autora:ChaoZhang, Data: 2024-02-21 14:55:41
Tags:

img

Resumo

A ideia principal desta estratégia é determinar a direção do longo e curto com base na tendência de preço semanal. Em uma tendência de alta, ele vai longo quando há um padrão de vela de alta. Ele tira lucro quando o preço sobe para o nível de lucro pré-definido e para a perda quando cai para o nível de stop loss pré-definido.

Estratégia lógica

A estratégia define em primeiro lugar as condições para julgar a tendência semanal:

isUptrend = close > close[1]
isDowntrend = close < close[1] 

Se o fechamento atual for superior ao fechamento anterior, é considerado uma tendência de alta, caso contrário, é uma tendência de queda.

Em seguida, define-se o sinal de negociação intradiário:

buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend

Isto é, o fechamento anterior é maior do que o fechamento anterior (lente de alta), e o fechamento anterior é maior do que o fechamento anterior ao dia anterior (gap up), e está em uma tendência de alta.

Depois de entrar na posição, o stop loss é definido para o fechamento anterior menos 1.382 vezes o corpo real do dia anterior:

stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen())

O lucro obtido é fixado no fechamento anterior mais 2 vezes a diferença entre o fechamento anterior e o stop loss:

takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss)

Isto realiza a estratégia de stop loss e take profit.

Análise das vantagens

As vantagens desta estratégia incluem:

  1. A negociação de acordo com as tendências evita riscos de curto-circuito contra-tendência
  2. O sinal de entrada combina a vela de alta e o gap para evitar uma entrada longa prematura
  3. O posicionamento de stop loss é razoável para controlar perdas únicas
  4. O intervalo de lucro é grande com alto potencial de lucro

Análise de riscos

Há também alguns riscos:

  1. Incapaz de determinar pontos de inversão da tendência, pode perder oportunidades de viragem
  2. Stop loss está muito perto com maior probabilidade de ser preso
  3. Nenhuma consideração do controlo dos custos, o lucro pode diminuir com alta frequência de negociação

Para controlar estes riscos, podem ser consideradas algumas otimizações:

  1. Configurar reboques perto de stop loss para seguir o stop loss
  2. Adicionar módulo de controlo de custos para limitar a frequência de encomendas
  3. Adicionar juízo de SUPPORTO/RESISTÊNCIA

Orientações de otimização

A estratégia pode também ser otimizada das seguintes formas:

  1. Determinar a tendência com base em mais fatores como a direção da MA, a mudança de volume, etc.
  2. Otimize os sinais de entrada com mais padrões de velas
  3. Trail stop loss e take profit de forma dinâmica de acordo com a flutuação do preço
  4. Adicionar módulo quantitativo ao dimensionamento da posição de controlo
  5. Combinações de vários prazos para filtragem com base em tendências de nível superior

Resumo

Em geral, esta é uma estratégia bastante prática, destacando a negociação de acordo com as tendências, enquanto controla os riscos. Pode servir como uma estratégia de negociação intradiária básica e pode ser otimizada modularmente para diferentes mercados e produtos para criar carteiras de negociação diversificadas.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Trend Following Strategy with Stop Loss and Take Profit", overlay=true)

// Function to get previous day's close and open
getPrevDayClose() =>
    request.security(syminfo.tickerid, "D", close[1])

getPrevDayOpen() =>
    request.security(syminfo.tickerid, "D", open[1])

// Determine weekly trend
isUptrend = close > close[1]
isDowntrend = close < close[1]

// Determine daily conditions for buy
buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend

// Calculate stop loss and take profit
stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen())
takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss)

// Strategy logic
if (isUptrend)
    strategy.entry("Buy", strategy.long, when = buyCondition)
    strategy.exit("Take Profit/Stop Loss", from_entry="Buy", loss=stopLoss, profit=takeProfit)
    
if (isDowntrend)
    strategy.entry("Sell", strategy.short)

// Plotting the trend on the chart
plotshape(series=isUptrend, title="Uptrend", color=color.green, style=shape.triangleup, location=location.abovebar)
plotshape(series=isDowntrend, title="Downtrend", color=color.red, style=shape.triangledown, location=location.belowbar)

// Plotting stop loss and take profit levels on the chart
plot(stopLoss, color=color.red, title="Stop Loss", linewidth=2, style=plot.style_cross)
plot(takeProfit, color=color.green, title="Take Profit", linewidth=2, style=plot.style_cross)


Mais.