Estratégia de saída de lucro com percentagem múltipla

Autora:ChaoZhang, Data: 2023-12-01 15:22:29
Tags:

img

Resumo

Esta estratégia implementa a funcionalidade de definir saídas de lucro porcentuais múltiplas. A estratégia julga primeiro as condições longas e curtas para entrar em posições. Em seguida, usa uma função personalizada percentAsPoints para converter as porcentagens em tiques de preço. O programa define 4 saídas com percentagens de lucro de 1%, 2%, 3% e 4% com base nas configurações, e também define uma saída de stop loss comum de 2%. Isso alcança o efeito de saídas de lucro porcentuais múltiplas.

Estratégia lógica

A lógica central desta estratégia é usar crossovers SMA para determinar entradas. Especificamente, quando o SMA rápido (14) cruza acima do SMA lento (28), ele vai longo. Quando o SMA rápido (14) cruza abaixo do SMA lento (28), ele vai curto.

Então, como definir saídas de lucro porcentuais múltiplas? Aqui, uma função personalizada percentAsPoints é usada para converter porcentagens em tiques de preço.

percentAsPoints(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na) 

Se o tamanho da posição não for igual a 0, ele calcula os ticks de preço por percentagem multiplicada pelo preço médio de entrada e dividida pelo tamanho mínimo de tick.

Com esta função, podemos facilmente converter percentagens em ticks. O programa define então 4 saídas baseadas em percentagens de lucro de 1%, 2%, 3% e 4%:

lossPnt = percentAsPoints(2)

strategy.exit("x1", qty_percent = 25, profit = percentAsPoints(1), loss = lossPnt)   

strategy.exit("x2", qty_percent = 25, profit = percentAsPoints(2), loss = lossPnt)

strategy.exit("x3", qty_percent = 25, profit = percentAsPoints(3), loss = lossPnt)  

strategy.exit("x4", profit = percentAsPoints(4), loss = lossPnt)

Além disso, um stop loss comum de 2% é usado para todas as saídas.

Análise das vantagens

Esta estratégia de saída de lucro com percentagem múltipla tem as seguintes vantagens:

  1. A estratégia de saída é uma estratégia que permite obter lucros passo a passo, evitando a perda de lucros maiores.

  2. A saída em lotes permite a recuperação de capital, reduzindo os riscos. Por exemplo, com 25% de tamanho do lote, 1% de lucro pode retornar 1/4 do capital, e posições posteriores são todas por lucros puros.

  3. 2% de stop loss evita perdas extremas em movimentos anormais do mercado.

  4. A implementação é simples e limpa, fácil de entender e modificar.

Análise de riscos

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

  1. As saídas percentuais podem causar chocidade lateral, com os preços oscilando em torno dos preços de saída, desencadeando saídas frequentes.

  2. As saídas por lotes aumentam o número de negócios e as comissões.

  3. O posicionamento de saída inadequado também pode afetar os retornos.

  4. As saídas de percentagem fixa não têm em conta a volatilidade e as tendências do mercado.

Orientações de otimização

Tendo em conta os riscos acima referidos, poderão ser realizadas melhorias adicionais nos seguintes aspectos:

  1. Otimizar as saídas para se adaptar com base na volatilidade e força do mercado usando métodos como as saídas ATR. Saídas mais apertadas em mercados agitados e saídas mais largas em tendências fortes.

  2. Otimizar percentagens e intervalos de lote para encontrar combinações ideais de risco-retorno. Adicionar otimização de parâmetros para encontrar os melhores parâmetros.

  3. Reduzir o número de saídas para evitar o excesso de negociação.

  4. Considere fatores de comissão, evite saídas em que o lucro projetado seja menor que os custos de comissão.

  5. Usar saídas de carteira de ordens com base na profundidade em vez de mover os preços de saída.

Resumo

Esta estratégia atinge o efeito de saídas de lucro porcentuais múltiplas, com 4 saídas em 1%, 2%, 3% e 4%, permitindo saídas lucrativas graduais e usando 2% de stop loss para evitar grandes perdas em movimentos extremos. Equilibra riscos e retornos e evita perdas de lucros adicionais. Mas alguns riscos existem, como choppiness e frequências de negociação mais altas. As sugestões de otimização fornecidas podem ajudar a melhorar o desempenho em mais condições de mercado quando incorporadas na estratégia.


/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-30 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © adolgov

//@version=4
strategy("Multiple %% profit exits example", overlay=false, default_qty_value = 10)

longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)

percentAsPoints(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)

lossPnt = percentAsPoints(2)

strategy.exit("x1", qty_percent = 25, profit = percentAsPoints(1), loss = lossPnt)
strategy.exit("x2", qty_percent = 25, profit = percentAsPoints(2), loss = lossPnt)
strategy.exit("x3", qty_percent = 25, profit = percentAsPoints(3), loss = lossPnt)
strategy.exit("x4", profit = percentAsPoints(4), loss = lossPnt)

profitPercent(price) =>
    posSign = strategy.position_size > 0 ? 1 : strategy.position_size < 0 ? -1 : 0
    (price - strategy.position_avg_price) / strategy.position_avg_price * posSign * 100

p1 = plot(profitPercent(high), style=plot.style_linebr, title = "open profit % upper bound")
p2 = plot(profitPercent(low), style=plot.style_linebr, title = "open profit % lower bound")
fill(p1, p2, color = color.red)

Mais.