Estratégia de stop loss e take profit em percentagem fixa baseada em médias móveis

Autora:ChaoZhang, Data: 2023-12-18 11:30:39
Tags:

img

Resumo

Esta estratégia utiliza médias móveis para gerar sinais de negociação e estabelece um percentual fixo de stop loss e níveis de lucro com base no preço de entrada para controlar o risco e a recompensa de cada negociação.

Estratégia lógica

A estratégia usa primeiro a média móvel exponencial de 5 dias (EMA) e a EMA de 32 dias para determinar a direção da tendência.

Após entrar em uma negociação, a estratégia define dinamicamente o stop loss e take profit para cada negociação com base na porcentagem de stop loss e take profit definida pelo usuário. Especificamente, para negociações longas, o stop loss é definido no preço de entrada × (1 - porcentagem de stop loss) e o take profit é definido no preço de entrada × (1 + take profit percentage). Para negociações curtas, ele é invertido - stop loss no preço de entrada × (1 + stop loss percentage) e take profit no preço de entrada × (1 - take profit percentage).

Isto permite assegurar uma relação risco/recompensa fixa para cada transacção e controlar o risco e o lucro.

Análise das vantagens

Esta forma de definir stop loss e take profit tem várias vantagens significativas:

  1. Pode limitar a perda máxima por negociação e controlar eficazmente o risco de negociação.

  2. Pode bloquear a taxa de lucro fixa por negócio e garantir o retorno.

  3. Os pontos de stop loss e take profit variam com o preço de entrada real, em vez de utilizar valores fixos.

  4. Os utilizadores podem determinar o seu apetite por riscos ajustando os parâmetros de entrada.

  5. Lógica estratégica simples e intuitiva, fácil de entender e verificar.

Análise de riscos

Há também alguns riscos com esta estratégia:

  1. As médias móveis podem gerar sinais inválidos excessivos, com grande probabilidade de serem interrompidas após a entrada.

  2. O rácio de lucro pode ser elevado demais para resultar em uma rentabilidade insuficiente, baixo demais para não ganhar o suficiente.

  3. O stop loss demasiado próximo pode aumentar a probabilidade de ser parado e deve dar algum amortecimento.

  4. A escolha dos produtos de negociação e dos prazos pode afetar a eficácia.

Soluções correspondentes:

  1. Otimizar os parâmetros da média móvel para reduzir os sinais falsos.

  2. Teste diferentes rácios de lucro para encontrar o ideal.

  3. Ajustar a distância de stop loss com base na volatilidade do mercado.

  4. Avaliar o desempenho da estratégia em diferentes produtos e prazos.

Orientações de otimização

A estratégia pode ser melhorada nos seguintes aspectos:

  1. Adicionar outros indicadores de validação da tendência para evitar sinais falsos excessivos das médias móveis.

  2. Otimizar o stop loss e obter percentagens de lucro com base em dados de backtest para encontrar parâmetros ideais.

  3. Mudar o stop-loss para trailing stop para obter mais lucro.

  4. Adicionar regras de dimensionamento de posições com pirâmide e stop loss para gerir o risco comercial.

  5. Avaliar a variação do desempenho em diferentes instrumentos de negociação e prazos.

Resumo

Esta estratégia identifica a direção da tendência com médias móveis, e define uma porcentagem fixa de stop loss e take profit com base no preço de entrada para controlar o risco e a recompensa de uma única negociação.


/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © theCrypster 2020

//@version=4
strategy("Fixed Percent Stop Loss & Take Profit %", overlay=true)

// Moving Averages to get some example trades generated
eg1 = ema(close, 5)
eg2 = ema(close, 32)

long = crossover(eg1, eg2)
short = crossunder(eg1, eg2)

strategy.entry("LONG", strategy.long, when=long)
strategy.entry("SHORT", strategy.short, when=short)

//
// The Fixed Percent Stop Loss Code
// User Options to Change Inputs (%)
stopPer = input(5.0, title='Stop Loss %', type=input.float) / 100
takePer = input(10.0, title='Take Profit %', type=input.float) / 100

// Determine where you've entered and in what direction
longStop = strategy.position_avg_price * (1 - stopPer)
shortStop = strategy.position_avg_price * (1 + stopPer)
shortTake = strategy.position_avg_price * (1 - takePer)
longTake = strategy.position_avg_price * (1 + takePer)

if strategy.position_size > 0 
    strategy.exit(id="Close Long", stop=longStop, limit=longTake)
if strategy.position_size < 0 
    strategy.exit(id="Close Short", stop=shortStop, limit=shortTake)

//PLOT FIXED SLTP LINE
plot(strategy.position_size > 0 ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL")
plot(strategy.position_size < 0 ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL")
plot(strategy.position_size > 0 ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit")
plot(strategy.position_size < 0 ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit")

//




Mais.