Estratégia de rompimento da zona de valor entre ciclos


Data de criação: 2023-12-12 10:58:22 última modificação: 2023-12-12 10:58:22
cópia: 0 Cliques: 364
1
focar em
1213
Seguidores

Estratégia de rompimento da zona de valor entre ciclos

Visão geral

A ideia central desta estratégia é combinar os indicadores RSI de diferentes períodos para avaliar a região de preços atual e, ao descobrir que os indicadores RSI de períodos maiores têm uma ruptura, adotar a compra ou venda correspondente em períodos menores. A estratégia combina os benefícios dos indicadores técnicos de diferentes períodos para avaliar o valor relativo dos preços atuais através de várias dimensões temporais e procurar melhores pontos de entrada.

Princípio da estratégia

A estratégia é baseada em identificar áreas de preço e encontrar oportunidades de negociação através das seguintes etapas:

  1. Calcular os pontos mais altos (Swing High) e mais baixos (Swing Low) do indicador RSI em períodos maiores (por exemplo, a linha do dia)
  2. Determine se o RSI de período maior atingiu um máximo ou um mínimo em um determinado período de retrospectiva
  3. Se ocorrer uma ruptura, então em um menor período (por exemplo, a linha de 5 minutos) julgar o movimento de preços (por exemplo, a linha de 5 minutos), tomar a correspondente compra ou venda de operações

Por exemplo, quando o indicador RSI da linha diária entra em uma nova alta, julgamos que estamos em uma posição de alta, e se a linha RSI da linha diária entra em uma nova baixa, julgamos que estamos em uma posição de baixa. Em ambos os casos, fazemos compras e vendas na linha de 5 minutos.

Análise de vantagens

A estratégia tem as seguintes vantagens em comparação com a estratégia tradicional de focar apenas em um ciclo de tempo:

  1. A avaliação do valor relativo dos preços atuais é mais precisa. Indicadores de grandes ciclos, como a linha do sol, podem filtrar o ruído do mercado de curto prazo e determinar tendências de grandes ciclos e áreas de valor.

  2. A combinação de diferentes indicadores de ciclo de tempo aumenta a confiabilidade do sinal. Dependendo apenas de um único indicador de ciclo, é fácil ter um sinal errado, enquanto vários indicadores de ciclo emitem sinais simultaneamente.

  3. Aproveite as oportunidades de curto prazo de forma mais eficiente. Os grandes ciclos como o do Sol nos indicam a direção do grande, e nós só precisamos procurar oportunidades em pequenos ciclos de 5 minutos para lucrar.

  4. Retiradas menores. Combinação de ciclos de tempo, ajudando a evitar ser encaixado. Quando o indicador de grande ciclo se desloca, nós iremos parar o prejuízo e sair.

Análise de Riscos

Os principais riscos desta estratégia são:

  1. Erro de julgamento de indicadores de grande ciclo. Indicadores como o RSI da linha do dia não podem julgar efetivamente a área de valor, o que pode levar ao erro de sinal. Isso requer a configuração de parâmetros para otimizar o RSI.

  2. Os movimentos de preços de pequenos períodos não são compatíveis com os julgamentos de grandes períodos. Às vezes, os movimentos de preços de pequenos períodos são contrapostos à tendência de grandes períodos, e é necessário definir um stop loss para controlar os prejuízos.

  3. A má gestão de fundos. Se a gestão de riscos não for adequada, a perda única é muito grande, o que pode levar à dificuldade de recuperação.

Direção de otimização

A estratégia ainda tem muito espaço para otimização, principalmente a partir dos seguintes pontos:

  1. Optimização de parâmetros de ciclo. Pode testar mais combinações de períodos para encontrar os melhores parâmetros.

  2. Optimização dos parâmetros do RSI. Pode-se ajustar os parâmetros do RSI para ver se pode melhorar a precisão de julgamento.

  3. Adicionar outros indicadores. Pode-se adicionar mais indicadores para a combinação, como adicionar a linha média para determinar a direção da tendência.

  4. Mecanismo de Stop Loss Optimizado. O ponto de stop loss pode ser ajustado dinamicamente de acordo com a situação de retirada.

  5. Optimizar o gerenciamento de posições. Pode gerenciar de forma mais científica e racional as posições específicas de cada transação.

Resumir

Esta estratégia de arbitragem de valor entre as diferentes dimensões de tempo através da avaliação do indicador de RSI pessimista entre os períodos. Esta idéia de julgamento entre períodos vale a pena explorar mais, podemos aperfeiçoar continuamente através de métodos de otimização de parâmetros, otimização de stop loss, otimização de combinação, etc. para tornar a estratégia mais vantajosa.

Código-fonte da estratégia
/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy("Swing MTF", shorttitle="Swing MTF", overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 10000, slippage = 5)
//
otf_period = input(defval=2, title="Look Back Period (2nd Timeframe)")
otf = input(defval="180", title="Second Momentum Timeframe")

// Function to dectect a new bar
is_newbar(res) =>
    t = time(res)
    change(t) != 0 ? true : false

// Check how many bars are in our upper timeframe
since_new_bar = barssince(is_newbar(otf))
otf_total_bars = na
otf_total_bars := since_new_bar == 0 ? since_new_bar[1] : otf_total_bars[1]

//Calculate RSI Values
ctf_rsi = rsi(open, otf_period)

breakline=input(title="Breaks in lines", defval = true, type=bool)

so = request.security(syminfo.tickerid, otf, rsi(open, otf_period))
sc = request.security(syminfo.tickerid, otf, rsi(close, otf_period))


final_otf_so = na
final_otf_so := barstate.isrealtime ? since_new_bar == otf_total_bars ? so : final_otf_so[1] : so

final_otf_sc = na
final_otf_sc := barstate.isrealtime ? since_new_bar == otf_total_bars ? sc : final_otf_sc[1] : sc

barsback = input(11, title='Bars back to check for a swing')
// showsig = input(false, title='Show Signal Markers')
 
swing_detection(index)=>
    swing_high = false
    swing_low = false
    start = (index*2) - 1 // -1 so we have an even number of
    swing_point_high = final_otf_so[index]
    swing_point_low = final_otf_sc[index]
    
    //Swing Highs
    for i = 0 to start
        swing_high := true
        if i < index 
            if final_otf_so[i] > swing_point_high 
                swing_high := false
                break
        // Have to do checks before pivot and after seperately because we can get
        // two highs of the same value in a row. Notice the > and >= difference
        if i > index
            if final_otf_so[i] >= swing_point_high 
                swing_high := false
                break
        
    //Swing lows
    for i = 0 to start
        swing_low := true
        if i < index
            if final_otf_sc[i] < swing_point_low 
                swing_low := false
                break  
        // Have to do checks before pivot and after seperately because we can get
        // two lows of the same value in a row. Notice the > and >= difference
        if i > index
            if final_otf_sc[i] <= swing_point_low 
                swing_low := false
                break 
        
    [swing_high, swing_low]
 
// Check for a swing
[swing_high, swing_low] = swing_detection(barsback)
 

long =  final_otf_so > final_otf_sc
short = final_otf_so < final_otf_sc

if swing_low and long
    strategy.entry("My Long Entry Id", strategy.long)


if swing_high and short
    strategy.entry("My Short Entry Id", strategy.short)