Estratégia de reentrada dinâmica de compra exclusiva

Autora:ChaoZhang, Data: 2023-12-19 13:56:55
Tags:

img

Resumo

Esta estratégia é um sistema de negociação de compra exclusiva que gera sinais de compra com base em cruzamento de médias móveis e o Índice Semanal de Canal de Commodities (CCI) ou Índice Direcional Semanal Médio (ADX).

A estratégia também permite uma reentrada dinâmica, o que significa que pode abrir novas posições longas se o preço ultrapassar as três médias móveis após uma saída.

Princípio da estratégia

O script define as condições para gerar sinais de compra.

  • A média móvel rápida cruza acima da média móvel lenta
  • O utilizador pode escolher filtrar as transacções utilizando o CCI semanal ou o ADX semanal

Reentrada dinâmica:Se não houver uma posição longa ativa e o preço estiver acima de todas as três médias móveis, é aberta uma nova posição longa.

Condição de saída:Se o preço de fechamento cair abaixo da terceira média móvel, o script fecha a posição longa.

Análise das vantagens

As vantagens desta estratégia incluem:

  1. A utilização de múltiplos indicadores técnicos para filtrar sinais reduz os falsos sinais
  2. O mecanismo de reentrada dinâmica maximiza a captura de tendências
  3. Ser apenas longo evita os riscos de curto prazo

Análise de riscos

Os riscos desta estratégia incluem:

  1. Há um certo risco de surtos.
  2. Tempos de espera longos podem ser demasiado longos, exigindo paradas
  3. Configurações de parâmetros inadequadas podem causar negociação demasiado frequente

Soluções:

  1. Usar melhores combinações de parâmetros e combinações de indicadores para filtrar
  2. Estabelecer perdas de parada razoáveis
  3. Ajustar os parâmetros para garantir a estabilidade

Orientações de otimização

Esta estratégia pode ser otimizada por:

  1. Teste de mais combinações de indicadores técnicos para encontrar um melhor calendário de entrada
  2. Otimizar parâmetros para encontrar as melhores combinações de parâmetros
  3. Adição de mecanismos de stop loss para controlar perdas únicas
  4. Adição de dimensionamento das posições para aumentar/reduzir as posições com base nas condições de mercado

Resumo

Esta estratégia de reentrada dinâmica integra vários indicadores técnicos para determinar o tempo de entrada e adota um design dinâmico de reentrada para rastrear tendências em tempo real.


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

//@version=5
strategy("Buy Only Strategy with Dynamic Re-Entry and Exit", overlay=true)

// Input Parameters
fast_length = input(20, title="Fast Moving Average Length")
slow_length = input(30, title="Slow Moving Average Length")
third_ma_length = input(100, title="Third Moving Average Length")
cci_period = input(14, title="CCI Period for Weekly CCI")
use_cci = input(true, title="Use CCI for Entry")
use_adx = input(true, title="Use ADX for Entry")
adx_length = input(14, title="ADX Length")
adx_threshold = input(25, title="ADX Threshold")

// Calculate Moving Averages
fast_ma = ta.sma(close, fast_length)
slow_ma = ta.sma(close, slow_length)
third_ma = ta.sma(close, third_ma_length)

// Weekly Commodity Channel Index (CCI) with user-defined period
weekly_cci = request.security(syminfo.tickerid, "W", ta.cci(close,  cci_period))

// Weekly Average Directional Index (ADX)
dirmov = hlc3
plus = ta.change(dirmov) > 0 ? ta.change(dirmov) : 0
minus = ta.change(dirmov) < 0 ? -ta.change(dirmov) : 0
trur = ta.rma(ta.tr, adx_length)
plusDI = ta.rma(plus, adx_length) / trur * 100
minusDI = ta.rma(minus, adx_length) / trur * 100
sum = plusDI + minusDI
DX = sum == 0 ? 0 : math.abs(plusDI - minusDI) / sum * 100
ADX = ta.rma(DX, adx_length)

// Entry Conditions (Buy Only and Weekly CCI > 100 and/or Weekly ADX > 25)
cci_condition = use_cci ? (weekly_cci > 100) : false
adx_condition = use_adx ? (ADX > adx_threshold) : false
long_condition = ta.crossover(fast_ma, slow_ma) and (cci_condition or adx_condition)

// Exit Condition and Dynamic Re-Entry
exit_condition = close < third_ma
re_entry_condition = close > fast_ma and close > slow_ma and close > third_ma and weekly_cci > 100

// Entry and Exit Signals
strategy.entry("Long", strategy.long, when=long_condition)
strategy.close("Long", when=exit_condition)

// Dynamic Re-Entry and Exit
if strategy.position_size == 0 and re_entry_condition
    strategy.entry("Long", strategy.long)

if strategy.position_size > 0 and close < third_ma
    strategy.close("Long")

// Plot Weekly CCI and ADX for reference
plot(weekly_cci, title="Weekly CCI", color=color.orange)
plot(ADX, title="Weekly ADX", color=color.blue)


Mais.