Estratégia de regressão baseada em breakout


Data de criação: 2024-03-01 11:58:56 última modificação: 2024-03-01 11:58:56
cópia: 2 Cliques: 651
1
focar em
1617
Seguidores

Estratégia de regressão baseada em breakout

Visão geral

A estratégia é uma maneira sistemática de aproveitar a volatilidade do mercado de futuros de petróleo. Ela mede o intervalo médio de vaivém, o que significa que o vaivém é maior se a média móvel rápida for maior do que a média móvel lenta; se a média móvel lenta for maior do que a média móvel rápida, significa que o vaivém é menor.

De acordo com este princípio, identifique os potenciais pontos de entrada longos e pontos de entrada curtos. A posição mantém apenas um determinado número de barras, o que é controlado pelo parâmetro de entrada do barril Exit after bars.

Princípio da estratégia

  1. Calcular o preço de fechamento mais alto das 9 linhas K mais recentes, como critério de julgamento de ruptura
  2. Calcular o preço de fechamento mínimo das 50 linhas K mais recentes como critério de julgamento de ruptura
  3. Calcule a comparação da amplitude média das 5 e 20 linhas K mais recentes para determinar se a forma da linha K está se expandindo ou encolhendo
  4. Identificar sinais de ruptura de linhas longas e curtas: fazer mais quando o preço de fechamento é igual ao preço de fechamento máximo e a linha K está diminuindo gradualmente; fazer em branco quando o preço de fechamento é igual ao preço de fechamento mínimo e a linha K está diminuindo gradualmente
  5. A linha de equilíbrio K da raiz fixa após a ruptura: os parâmetros ajustáveis alteram o intervalo de equilíbrio

Análise de vantagens

  1. Estratégia de regressão, para determinar a direção do mercado através da comparação com os máximos históricos
  2. Combinando o juízo volátil, evita-se o falso avanço
  3. Linha de saída K de raiz fixa, bloqueia um certo lucro e evita a retirada

Análise de Riscos

  1. Os limites históricos mudam com a mudança na estrutura do mercado, podendo causar falhas de sinalização
  2. Falso arrombamento leva à prisão
  3. Parâmetros inadequados de intervalo de saída do campo podem perder mais lucros ou aumentar os prejuízos

Direção de otimização

  1. Os parâmetros de extremo valor podem ser otimizados através da estatística de caso
  2. Indicadores de volatilidade que podem ser incorporados para avaliar a probabilidade real de ruptura
  3. Otimizar o número de raízes fora de campo através de estratégias de retroalimentação

Resumir

A estratégia utiliza a ruptura e a regressão para julgar a tendência de curto prazo, pertence à estratégia de volatilidade. Através da configuração de parâmetros de otimização e da adição de indicadores de taxa de volatilidade, pode-se reduzir a probabilidade de falsa ruptura e aumentar o nível de lucro. Ao mesmo tempo, o mecanismo de saída rápida da linha K de raiz fixa, pode bloquear certos lucros e controlar eficazmente o risco.

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Celestial_Logic

//@version=5
strategy("Crudeoil Breakout strategy", overlay = true, initial_capital = 20000, default_qty_type = strategy.fixed, default_qty_value = 1)


highestCloseLookback = input(9 , title = 'Highest Close lookback')
lowestCloseLookback  = input(50, title = 'Lowest Close lookback'  ) 

exitAfter = input(10, title = 'Exit after bars')

hc = ta.highest(close,highestCloseLookback)
lc = ta.lowest(close,lowestCloseLookback)

rangeFilter = (ta.sma( (high - low), 5 ) > ta.sma((high-low), 20) ) // Candles getting bigger.

longCondition  = (close == hc ) and not rangeFilter
shortCondition = (close == lc ) and not rangeFilter
if  longCondition
    strategy.entry(id = 'long', direction = strategy.long) 
if shortCondition
    strategy.entry(id = 'short', direction = strategy.short)



var int longsince = 0 
var int shortsince = 0 

if strategy.position_size > 0 
    longsince += 1
else
    longsince := 0

if strategy.position_size < 0 
    shortsince += 1 
else 
    shortsince := 0

if longsince >= exitAfter 
    strategy.close(id = 'long', comment = 'long close')
if shortsince >= exitAfter
    strategy.close(id = 'short', comment = 'short close')