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.
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.
Esta forma de definir stop loss e take profit tem várias vantagens significativas:
Pode limitar a perda máxima por negociação e controlar eficazmente o risco de negociação.
Pode bloquear a taxa de lucro fixa por negócio e garantir o retorno.
Os pontos de stop loss e take profit variam com o preço de entrada real, em vez de utilizar valores fixos.
Os utilizadores podem determinar o seu apetite por riscos ajustando os parâmetros de entrada.
Lógica estratégica simples e intuitiva, fácil de entender e verificar.
Há também alguns riscos com esta estratégia:
As médias móveis podem gerar sinais inválidos excessivos, com grande probabilidade de serem interrompidas após a entrada.
O rácio de lucro pode ser elevado demais para resultar em uma rentabilidade insuficiente, baixo demais para não ganhar o suficiente.
O stop loss demasiado próximo pode aumentar a probabilidade de ser parado e deve dar algum amortecimento.
A escolha dos produtos de negociação e dos prazos pode afetar a eficácia.
Soluções correspondentes:
Otimizar os parâmetros da média móvel para reduzir os sinais falsos.
Teste diferentes rácios de lucro para encontrar o ideal.
Ajustar a distância de stop loss com base na volatilidade do mercado.
Avaliar o desempenho da estratégia em diferentes produtos e prazos.
A estratégia pode ser melhorada nos seguintes aspectos:
Adicionar outros indicadores de validação da tendência para evitar sinais falsos excessivos das médias móveis.
Otimizar o stop loss e obter percentagens de lucro com base em dados de backtest para encontrar parâmetros ideais.
Mudar o stop-loss para trailing stop para obter mais lucro.
Adicionar regras de dimensionamento de posições com pirâmide e stop loss para gerir o risco comercial.
Avaliar a variação do desempenho em diferentes instrumentos de negociação e prazos.
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") //