Estratégia de reversão de pivô multi-timeframe e sistema de stop-profit e stop-loss dinâmico de porcentagem

MTF Pivot TP SL
Data de criação: 2025-02-08 15:04:47 última modificação: 2025-02-08 15:04:47
cópia: 1 Cliques: 412
1
focar em
1617
Seguidores

Estratégia de reversão de pivô multi-timeframe e sistema de stop-profit e stop-loss dinâmico de porcentagem

Visão geral

A estratégia é um sistema de negociação avançado, baseado em análise de vários períodos de tempo, que captura oportunidades de reversão de mercado ao identificar pontos-chave cruciais em períodos de tempo mais elevados. A estratégia combina um mecanismo de stop-loss de porcentagem dinâmico, controlando eficazmente o risco e buscando ganhos estáveis. O sistema também inclui controle de intervalo de negociação e testes de intervalos de tempo, o que o torna mais adequado para o ambiente de negociação em disco real.

Princípio da estratégia

A lógica central da estratégia é baseada nos seguintes elementos-chave:

  1. Em um período de tempo mais longo (de 60 minutos por defeito), a análise do ponto central é usada para definir as condições de formação do eixo central através dos parâmetros leftBars e rightBars.
  2. Gerenciar o risco e os objetivos de lucro de cada transação através de um percentual de stop-loss calculado dinamicamente.
  3. A análise de períodos de tempo múltiplos fornece um julgamento mais confiável da estrutura do mercado, reduzindo os sinais falsos.
  4. O mecanismo de controle do intervalo de negociação (default 1440 minutos) evita o excesso de negociação e melhora a qualidade do sinal.
  5. A função de teste de intervalo de tempo permite a validação de estratégias em determinados intervalos históricos.

Vantagens estratégicas

  1. A análise de períodos de tempo múltiplos oferece uma visão mais abrangente do mercado, reduzindo a possibilidade de falsas rupturas.
  2. A percentagem dinâmica de stop loss se adapta a diferentes cenários de mercado, aumentando a estabilidade da estratégia.
  3. O controle do intervalo de transação é eficaz na prevenção de transações excessivas e na redução dos custos de transação.
  4. A função de teste de intervalo de tempo facilita a otimização da estratégia e a análise do desempenho histórico.
  5. A estrutura do código é clara, fácil de manter e modificar.

Risco estratégico

  1. Em mercados altamente voláteis, a paralisação por percentual fixo pode não ser suficientemente flexível.
  2. O intervalo de negociação mais longo pode perder parte do sinal válido.
  3. O atraso na identificação dos pontos centrais pode ter levado a um tempo de entrada pouco ideal.
  4. O mercado horizontal pode gerar muitos sinais falsos.

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

  1. A introdução de um indicador de volatilidade adaptável para ajustar dinamicamente o percentual de stop-loss.
  2. Adição de filtros de cenário de mercado para ajustar os parâmetros de estratégia de acordo com a intensidade da tendência.
  3. Integrar análise de tráfego para melhorar a confiabilidade do sinal de entrada.
  4. Realização de ajustamentos intercalares de transações dinâmicas com base nas flutuações do mercado.
  5. A inclusão da proteção do mecanismo móvel de parada de prejuízos já é uma vantagem.

Resumir

A estratégia fornece uma estrutura de sistema de negociação completa através de análise de múltiplos ciclos de tempo e gestão de risco dinâmico. Embora existam alguns locais que precisam de otimização, o conceito de design global é razoável e tem uma boa praticidade.

Código-fonte da estratégia
/*backtest
start: 2025-01-01 00:00:00
end: 2025-01-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Pivot Reversal Strategy with MTF TP & SL in Percent and Test Range", overlay=true)

// Входные параметры
higher_tf = input.timeframe("60", title="Higher Timeframe for Breakout Check")  // Таймфрейм для анализа пробоя
leftBars = input(4, title="Left Bars")
rightBars = input(2, title="Right Bars")
TP_percent = input.float(1.0, title="Take Profit (%)", minval=0.1, step=0.1)   // Тейк-профит в процентах
SL_percent = input.float(0.5, title="Stop Loss (%)", minval=0.1, step=0.1)    // Стоп-лосс в процентах
trade_interval = input.int(1440, title="Minimum Time Between Trades (Minutes)") // Интервал между сделками

// Диапазон тестирования (используем UNIX timestamps)
start_date = input(timestamp("2023-01-01 00:00 +0000"), title="Start Date")  // Стартовая дата для тестирования
end_date = input(timestamp("2023-12-31 23:59 +0000"), title="End Date")    // Конечная дата для тестирования

// Проверка, попадает ли текущая свеча в указанный диапазон времени
in_test_range = true

// Определение пивотов на более крупном таймфрейме
higher_tf_high = request.security(syminfo.tickerid, higher_tf, ta.pivothigh(leftBars, rightBars))
higher_tf_low = request.security(syminfo.tickerid, higher_tf, ta.pivotlow(leftBars, rightBars))

// Последнее время открытия сделки
var float last_trade_time = na

// Логика для лонга
swh_cond = not na(higher_tf_high)
hprice = 0.0
hprice := swh_cond ? higher_tf_high : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

if le and in_test_range and (na(last_trade_time) or (time - last_trade_time >= trade_interval * 60 * 1000))
    tp_price_long = hprice * (1 + TP_percent / 100)  // Тейк-профит в процентах
    sl_price_long = hprice * (1 - SL_percent / 100)  // Стоп-лосс в процентах
    strategy.entry("PivRevLE", strategy.long, stop=hprice + syminfo.mintick)
    strategy.exit("TP_SL_Long", from_entry="PivRevLE", 
                  limit=tp_price_long, 
                  stop=sl_price_long)
    last_trade_time := time

// Логика для шорта
swl_cond = not na(higher_tf_low)
lprice = 0.0
lprice := swl_cond ? higher_tf_low : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

if se and in_test_range and (na(last_trade_time) or (time - last_trade_time >= trade_interval * 60 * 1000))
    tp_price_short = lprice * (1 - TP_percent / 100)  // Тейк-профит в процентах
    sl_price_short = lprice * (1 + SL_percent / 100)  // Стоп-лосс в процентах
    strategy.entry("PivRevSE", strategy.short, stop=lprice - syminfo.mintick)
    strategy.exit("TP_SL_Short", from_entry="PivRevSE", 
                  limit=tp_price_short, 
                  stop=sl_price_short)
    last_trade_time := time

// Для наглядности отображаем уровни на графике
plot(le and in_test_range ? hprice * (1 + TP_percent / 100) : na, color=color.green, title="Long Take Profit")
plot(le and in_test_range ? hprice * (1 - SL_percent / 100) : na, color=color.red, title="Long Stop Loss")
plot(se and in_test_range ? lprice * (1 - TP_percent / 100) : na, color=color.green, title="Short Take Profit")
plot(se and in_test_range ? lprice * (1 + SL_percent / 100) : na, color=color.red, title="Short Stop Loss")