Estratégia de acompanhamento da reversão extrema

Autora:ChaoZhang, Data: 2024-02-20 15:17:41
Tags:

img

Resumo

A estratégia de acompanhamento da reversão do extremo acompanha os pontos extremos do intervalo de flutuação de preços e faz a reversão de posições longas/cortas nos pontos extremos para acompanhar as tendências.

Princípio da estratégia

A estratégia baseia-se principalmente nos seguintes princípios:

  1. Usar a função de segurança para obter preços altos e baixos de diferentes linhas K do ciclo para detectar se são iguais aos anteriores, de modo a julgar se novos pontos extremos são atingidos.

  2. Quando novos pontos extremos forem detectados, faça uma posição curta se for atualmente um mercado de alta e faça uma posição longa se for atualmente um mercado de baixa.

  3. Defina o ponto de stop loss como o novo ponto extremum formado após a posição longa/curta ser feita para acompanhar as tendências com stop loss.

  4. Definir o intervalo de tempo efetivo da estratégia configurando o ano de início, o mês e a data para fazer ajustes para diferentes períodos de tempo.

Vantagens

As principais vantagens desta estratégia são:

  1. Capturar eficazmente os pontos extremos das alterações de preços e fazer posições de reversão para acompanhar as tendências.

  2. Configurar a gestão do tempo e do risco para controlar o tempo de utilização e o capital da estratégia para reduzir os riscos.

  3. Utilize novos pontos extremos como pontos de stop loss para ajustar dinamicamente as posições de stop loss com base no novo intervalo de flutuação de preços.

  4. Lógica de estratégia simples e clara para fácil compreensão, depuração e otimização.

Riscos

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

  1. Pode haver um erro de julgamento na determinação dos pontos extremos, causando erros em posições longas/cortas.

  2. A posição de stop loss está próxima do ponto de entrada, aumentando a probabilidade de ação de stop loss.

  3. Nenhuma consideração sobre posições de pirâmide ao longo de tendências e posições inversas, menos lucrativas em mercados de tendências.

  4. A configuração de divisas e intervalos de tempo é bastante rígida, não pode fazer ajustes dinâmicos.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimize a lógica do ponto extremo com mais filtros para evitar erros de julgamento.

  2. Adicionar um mecanismo de stop loss flutuante baseado nas alterações de preço e volatilidade para ajustar a distância de stop loss.

  3. Introduzir módulos de posicionamento baseados em tendências e volatilidade para melhorar a rentabilidade.

  4. Estabelecer um mecanismo de otimização de parâmetros para testes automáticos e ajuste de parâmetros.

  5. Incorporar modelos de aprendizagem de máquina para auxiliar na tomada de decisões estratégicas.

Resumo

A estratégia de rastreamento de reversão de extremos funciona capturando extremos de preços e rastreando tendências, adaptáveis e lucrativas.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Extremum Strategy v1.0", shorttitle = "Extremum str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
tf = input('W', title = 'Timeframe for extremums')
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Levels
highm = request.security(syminfo.tickerid, tf, high[1])
lowm = request.security(syminfo.tickerid, tf, low[1])
upcolorm = highm == highm[1] ? lime : na
dncolorm = lowm == lowm[1] ? red : na
plot(highm, color = upcolorm, linewidth = 3)
plot(lowm, color = dncolorm, linewidth = 3)

//Signals
size = strategy.position_size
up = size > 0 ? highm * 1000000 : highm != highm[1] ? highm : up[1]
dn = size < 0 ? 0 : lowm != lowm[1] ? lowm : dn[1]
exit = true

//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]

if highm > 0 and high[1] < highm and highm == highm[1]
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = up)
    
if lowm > 0 and low[1] > lowm and lowm == lowm[1]
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dn)

if exit
    strategy.close_all()

Mais.