Estratégia de rompimento de canal oscilante


Data de criação: 2023-11-15 16:01:09 última modificação: 2023-11-15 16:01:09
cópia: 1 Cliques: 660
1
focar em
1617
Seguidores

Estratégia de rompimento de canal oscilante

Visão geral

A estratégia é uma estratégia de negociação de ruptura baseada em indicadores de canal. Ela utiliza a característica de oscilação de um canal de ascensão e descensão, fazendo mais quando o preço quebra o canal de ascensão e fechando quando o preço quebra o canal de descensão, pertencendo ao tipo de estratégia de seguimento de tendência.

Princípio da estratégia

A estratégia utiliza primeiro o eixo médio do canal de cálculo do SMA, adicionando um valor de parâmetro para o trajeto ascendente e subtraindo um valor de parâmetro para o trajeto descendente, formando um canal de preços. Depois, determina se o preço quebrou o trajeto ascendente e descendente e, em combinação com o aumento da quantidade de transação, como sinal de abertura de posição. Quando o preço retorna ao canal, como sinal de posição plana.

A lógica de negociação da estratégia é a seguinte:

  1. Calcule o eixo central do canal: SMA ((preço de fechamento, N)

  2. Linha de órbita do túnel: eixo central + valor do parâmetro

  3. Linha de suborbitação do túnel: eixo central - valor do parâmetro

  4. Ao romper a linha de sucesso, faça uma entrada extra se você atender a condição de volume de transação maior do que o dobro do ciclo anterior

  5. O que é que a China está a fazer?

  6. Ao quebrar a linha de queda, se a condição de volume de transação maior que o dobro do ciclo anterior for atendida, a entrada será fechada.

  7. A posição de cabeça vazia ao entrar no canal.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. A utilização de indicadores de canal permite um acompanhamento eficaz da tendência dos preços.

  2. A combinação de condições de aumento de volume de transações permite uma eficiente filtragem de brechas falsas.

  3. O retorno ao portal funciona como um mecanismo de parada e saída de perdas, que pode limitar os prejuízos de uma única transação.

  4. As características de vibração são adequadas para capturar tendências de linhas curtas.

  5. A lógica da implementação é simples, fácil de entender e implementar.

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. Quando o preço está no lado do canal por um longo período, o risco de perdas é gerado por uma sequência de posições de abertura de contrapartida.

  2. A configuração inadequada dos parâmetros de canal pode causar muitos sinais errados.

  3. A falta de critérios para avaliar o aumento do volume de transações pode ter deixado de lado o verdadeiro sinal de ruptura.

  4. O mecanismo de desistência de prejuízos pode ser demasiado conservador e perder uma situação importante.

Direção de otimização

A estratégia pode ser melhorada em vários aspectos:

  1. Optimizar os parâmetros de canal para que sejam mais adequados às características de diferentes mercados.

  2. Optimizar ou aumentar as condições de abertura de posição, como considerar a linha média com mais vazio ou a forma de Kline, para evitar falsas rupturas.

  3. Otimizar o mecanismo de parada e saída de perdas, liberar adequadamente a amplitude de parada e evitar a saída prematura.

  4. Aumentar o mecanismo de gestão de posições e ajustar as posições e a taxa de utilização de fundos de acordo com as condições do mercado.

  5. Combinando mais indicadores para avaliar a direção das tendências em grande escala, evite fazer frente às grandes tendências.

Resumir

A estratégia em geral é uma estratégia de acompanhamento de tendências mais simples e prática. Utiliza a característica de oscilação do canal de preço para capturar efetivamente a tendência de linha curta. Mas também é necessário prestar atenção à configuração de parâmetros de otimização e à prevenção dos riscos contidos, para obter um melhor efeito da estratégia.

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

//Copyright, 2022, Cache_that_pass.  You are free to use this script however you see fit and reproduce it in any manner.

//@version=5

            //////  Name the strategy between the 2 quotation marks.  Consider setting commission type and value in strategy header to match exchanges rates. //////

strategy("Oscillating SSL Channel Strategy", "O-SSL Strat", overlay=true, pyramiding=1, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 100, calc_on_order_fills=true)



            //////  Inputs and calculations used by script  //////

period = input(title='Period', defval=25)
len = input(title='Period', defval=25)
smaHigh = ta.sma(high, len)
smaLow = ta.sma(low, len)
Hlv = int(na)
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh

            //////  Show me the money  //////

plot(sslDown, linewidth=2, color=color.new(color.red, 0))
plot(sslUp, linewidth=2, color=color.new(color.lime, 0))


            //////  Trade execution logic  //////  
            
//pseudo-code//
        //Go long when high (or maybe close) breaks above the sslUp and volume is 2x or > Volume[1] and sslUp > sslDown
        //Close the above longs when sslUp crosses under sslDown (or set takeprofit and stop loss exits)
        //
        //Go short when low is lower than the sslUp and volume is 2x or > Volume[1] and sslDown > sslUp
        //Close shorts when sslDown crosses under sslUp

longCondition1 = (sslUp > sslDown)
longCondition2 = ta.crossover(high, sslUp)
//longCondition3 = (volume >= (volume[1]*1.89))
longCondition = ((longCondition1) and (longCondition2))// and (longCondition3))

longExit = ta.crossunder(sslUp, sslDown)

            //////  Bring It  //////
if (longCondition)
    strategy.entry("Bring It", strategy.long)

            //////  Sling It  //////
if (longExit)
    strategy.close("Bring It", comment="Sling It")


shortCondition1 = (sslDown) > (sslUp)
shortCondition2 = ta.crossunder(low, sslUp)
//shortCondition3 = (volume >= (volume[1]*1.89))
shortCondition = ((shortCondition1) and (shortCondition2))// and (shortCondition3))

shortExit = ta.crossunder(sslDown, sslUp)

            //////  Bring It  //////
if (shortCondition)
    strategy.entry("Bring It", strategy.long)

            //////  Sling It  //////
if (shortExit)
    strategy.close("Bring It", comment="Sling It")

            //////  Sling It  //////
if (shortCondition)
    strategy.entry("Sling It", strategy.short)

            //////  Bling It  //////
if (shortExit)
    strategy.close("Sling It", comment="Bring It")