Estratégia de stop-profit e stop-loss de negociação de equilíbrio de retração de trailing adaptável

OCA GAP
Data de criação: 2024-12-12 14:25:36 última modificação: 2024-12-12 14:25:36
cópia: 2 Cliques: 413
1
focar em
1617
Seguidores

Estratégia de stop-profit e stop-loss de negociação de equilíbrio de retração de trailing adaptável

Visão geral

A estratégia é um sistema de negociação auto-adaptável baseado em brechas e mudanças de preço, que permite obter ganhos estáveis através da configuração de pontos de entrada flexíveis e um stop loss dinâmico. A estratégia usa uma estratégia de aumento de posição em forma de pirâmide e, ao mesmo tempo, combina com o sistema de gerenciamento de ordens OCA para controlar o risco.

Princípio da estratégia

A estratégia funciona através dos seguintes mecanismos centrais:

  1. Mecanismo de negociação de brecha: identificação de brechas para cima e para baixo, configuração de entrada de stop loss no local da brecha
  2. Seguimento de tendências: direção da tendência de acordo com a relação entre o preço de abertura e o preço de fechamento
  3. Posicionamento em pirâmide: permissão para manter até 100 ordens na mesma direção
  4. Stop loss dinâmico: Stop loss dinâmico baseado no preço médio da posição
  5. Gerenciamento de ordens OCA: use ordens de portfólio OCA para garantir que as ordens de stop e stop loss sejam executadas mutuamente
  6. Limitação de transações diárias: controle de risco ao definir o número máximo de pedidos de transação diária

Vantagens estratégicas

  1. Adaptabilidade: a estratégia é capaz de ajustar automaticamente a direção de negociação e o volume de posições de acordo com as condições do mercado
  2. Risco controlado: o risco é controlado por meio de múltiplos mecanismos, incluindo stop loss, ordens OCA e restrições de transação intradiária
  3. Alta flexibilidade: apoiar a hipoteca em forma de pirâmide para obter mais lucro em situações de tendência
  4. Eficiência de execução: entrada com stop loss e posicionamento rápido a preços-chave
  5. Nível elevado de sistematização: decisão de negociação totalmente sistematizada, reduzindo o impacto emocional da intervenção humana

Risco estratégico

  1. Risco de deslizamento: um deslizamento grave pode ocorrer em uma corrida rápida
  2. Risco de transação excessiva: entradas e saídas frequentes podem levar a custos de transação mais elevados
  3. Risco sistêmico: pode sofrer grandes perdas em mercados altamente voláteis
  4. Risco de gestão de fundos: Aumento de risco em pirâmide pode levar a uma utilização excessiva dos fundos
  5. Risco técnico: interrupções no funcionamento do programa podem causar problemas na gestão de pedidos

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

  1. Introdução de indicadores de volatilidade: Parâmetros de stop loss ajustados de acordo com a dinâmica da volatilidade do mercado
  2. Otimização do mecanismo de adição de depósitos: conceber regras de adição mais detalhadas para evitar o uso excessivo de fundos
  3. Melhorar o sistema de controle de vento: adicionar mais indicadores de controle de vento, como o limite máximo de retirada por dia
  4. Melhorar a execução de pedidos: otimizar o mecanismo de entrada de pedidos e reduzir o impacto de pontos de deslizamento
  5. Aumentar o julgamento do sentimento do mercado: a combinação de indicadores como volume de transação para otimizar o momento de entrada

Resumir

Trata-se de uma estratégia de negociação racional e logicamente rigorosa, projetada para garantir a estabilidade e a segurança da negociação por meio de múltiplos mecanismos. A principal vantagem da estratégia reside na sua capacidade de adaptação e controle de risco, mas também requer atenção aos riscos trazidos pela volatilidade do mercado.

Código-fonte da estratégia
/*backtest
start: 2024-12-04 00:00:00
end: 2024-12-11 00:00:00
period: 10m
basePeriod: 10m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Greedy Strategy - maclaurin", pyramiding = 100, calc_on_order_fills=false, overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)
backtestStartDate = input(timestamp("1 Jan 1990"),
     title="Start Date", group="Backtest Time Period",
     tooltip="This start date is in the time zone of the exchange " +
     "where the chart's instrument trades. It doesn't use the time " +
     "zone of the chart or of your computer.")
backtestEndDate = input(timestamp("1 Jan 2023"),
     title="End Date", group="Backtest Time Period",
     tooltip="This end date is in the time zone of the exchange " +
     "where the chart's instrument trades. It doesn't use the time " +
     "zone of the chart or of your computer.")
inTradeWindow = true
tp = input(10)
sl = input(10)
maxidf = input(title="Max Intraday Filled Orders", defval=5)
// strategy.risk.max_intraday_filled_orders(maxidf)
upGap = open > high[1]
dnGap = open < low[1]
dn = strategy.position_size < 0 and open > close
up = strategy.position_size > 0 and open < close
if inTradeWindow and upGap
    strategy.entry("GapUp", strategy.long, stop = high[1])
else
    strategy.cancel("GapUp")
if inTradeWindow and dn
    strategy.entry("Dn", strategy.short, stop = close)
else
    strategy.cancel("Dn")
if inTradeWindow and dnGap
    strategy.entry("GapDn", strategy.short, stop = low[1])
else
    strategy.cancel("GapDn")
if inTradeWindow and up
    strategy.entry("Up", strategy.long, stop = close)
else
    strategy.cancel("Up")
XQty = strategy.position_size < 0 ? -strategy.position_size : strategy.position_size
dir = strategy.position_size < 0 ? -1 : 1
lmP = strategy.position_avg_price + dir*tp*syminfo.mintick
slP = strategy.position_avg_price - dir*sl*syminfo.mintick
float nav = na
revCond = strategy.position_size > 0 ? dnGap : (strategy.position_size < 0 ? upGap : false)
if inTradeWindow and not revCond and XQty > 0
    strategy.order("TP", strategy.position_size < 0 ? strategy.long : strategy.short, XQty, lmP, nav, "TPSL",  "TPSL")
    strategy.order("SL", strategy.position_size < 0 ? strategy.long : strategy.short, XQty, nav, slP, "TPSL", "TPSL")
if XQty == 0 or revCond
    strategy.cancel("TP")
    strategy.cancel("SL")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)