Estratégia de ruptura de alta intradiária

Autora:ChaoZhang, Data: 2024-03-29 16:13:30
Tags:

img

Resumo

Esta estratégia é uma estratégia de negociação de alta intradiária baseada em indicadores técnicos. Ele usa principalmente três indicadores técnicos para determinar o momento das entradas longas: 1. Swing low 2. Padrão de vela alta 3. Supervenda extrema. Ao mesmo tempo, ele usa o indicador ATR (Average True Range) para calcular preços de stop-loss e take-profit. Esta estratégia é aplicável a todos os prazos e a todos os ativos subjacentes.

Princípios de estratégia

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

  1. Em uma tendência de alta, os preços das ações muitas vezes se retraçam e formam mínimos locais, que geralmente são boas oportunidades de compra.
  2. Alguns padrões especiais de velas geralmente sinalizam inversões de tendência ou continuações.
  3. Após dias consecutivos de declínio, o ímpeto de baixa enfraquece gradualmente, e o espaço para um novo declínio é limitado. O preço das ações pode se recuperar a qualquer momento.
  4. As flutuações dos preços das ações têm periodicidade e similaridade, que podem ser medidas pelo indicador ATR e utilizadas para calcular distâncias de stop-loss e take-profit adequadas.

Vantagens da estratégia

  1. Combinar três indicadores técnicos clássicos para formar um sistema de negociação quantitativo rigoroso, evitando as desvantagens da subjetividade.
  2. Os níveis de stop-loss e take-profit baseiam-se no indicador de volatilidade ATR, que pode ser objectivamente quantificado, evitando as desvantagens da subjetividade.
  3. Uma ampla gama de aplicações, sem restrições de prazos ou de activos subjacentes, permitindo a plena utilização das vantagens para obter lucros.

Riscos estratégicos

  1. Alta precisão no julgamento de tendências ascendentes unilaterais, mas frequentes entradas num mercado volátil podem conduzir a perdas aumentadas.
  2. O nível de captação de lucros é demasiado elevado, o que resulta numa captação de lucros lenta e numa baixa utilização do capital.
  3. O indicador de sobrevenda extrema tem uma capacidade limitada para julgar reversões e pode falhar em mercados em tendência.

Orientações para a otimização da estratégia

  1. Considere adicionar indicadores de tendência, como MA e MACD, para determinar a direção geral da tendência.
  2. Considere a otimização do algoritmo para encontrar os parâmetros ideais, especialmente a seleção de multiplicadores ATR. O multiplicador de lucro pode ser menor para acelerar a obtenção de lucro.
  3. O indicador de sobrevenda extrema pode ser otimizado, por exemplo, alterando-o para indicadores de sobrevenda mais maduros como o KDJ ou o RSI.

Resumo

Esta estratégia de ruptura de alta intradiária é uma estratégia de negociação quantitativa baseada em baixas de balanço, padrões de alta e reversões de sobrevenda. Ele usa três indicadores técnicos para capturar pontos de entrada longos de diferentes ângulos. Ao mesmo tempo, ele usa o indicador de volatilidade ATR para calcular níveis dinâmicos de stop-loss e take-profit. Ele pode capturar completamente os lucros em tendências de alta, mas enfrenta o risco de negociação frequente em mercados voláteis. A estratégia ainda tem espaço para otimização, como a introdução de julgamentos de tendência, otimização de parâmetros e indicadores, para melhorar ainda mais o desempenho da estratégia.


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

//@version=5
strategy("Intraday Bullish Script", overlay=true, margin_long=100, margin_short=100)



// Settings for Strategy 1
entryCondition1 = input.bool(true, title="Use Entry Condition - Strategy 1")

// Input for ATR multiplier for stop loss 
atrMultiplierforstoploss = input.float(2, title="ATR Multiplier for Stop Loss")

// Input for ATR multiplier for target price
atrMultiplierforlongs = input.float(4, title="ATR Multiplier for Target Price")

// Calculate ATR
atrLength = input.int(14, title="ATR Length")
atrValue = ta.atr(atrLength)

// Swing low condition - Strategy 1
swingLow1 = low == ta.lowest(low, 12) or low[1] == ta.lowest(low, 12)


/// 
maj_qual = 6  //input(6)
maj_len = 30  //input(30)
min_qual = 5  //input(5)
min_len = 5  //input(5)

lele(qual, len) =>
    bindex = 0.0
    bindex := nz(bindex[1], 0)
    sindex = 0.0
    sindex := nz(sindex[1], 0)
    ret = 0
    if close > close[4]
        bindex := bindex + 1
        bindex
    if close < close[4]
        sindex := sindex + 1
        sindex
    if bindex > qual and close < open and high >= ta.highest(high, len)
        bindex := 0
        ret := -1
        ret
    if sindex > qual and close > open and low <= ta.lowest(low, len)
        sindex := 0
        ret := 1
        
major = lele(maj_qual, maj_len)
minor = lele(min_qual, min_len)

ExaustionLow  = major ==  1 ? 1 : 0

Bullish3LineStrike = close[3] < open[3] and close[2] < open[2] and close[1] < open[1] and close > open[1]

// Entry and Exit Logic for Strategy 2
// Create variables to track trade directions and entry prices for each strategy
var int tradeDirection1 = na

var float entryLongPrice1 = na


// Calculate entry prices for long positions - Strategy 1
if (swingLow1 or Bullish3LineStrike)
    entryLongPrice1 := close
    tradeDirection1 := 1



// Calculate target prices for long positions based on ATR - Strategy 1
targetLongPrice1 = entryLongPrice1 + (atrMultiplierforlongs * atrValue)



// Calculate stop loss prices for long positions based on entry - Strategy 1
stopLossLongPrice1 = entryLongPrice1 - (atrMultiplierforstoploss * atrValue)


// Entry conditions for Strategy 1
if (tradeDirection1 == 1 and (swingLow1 or Bullish3LineStrike))
    strategy.entry("Long - Strategy 1", strategy.long)


// Exit conditions for long positions: When price reaches or exceeds the target - Strategy 1
if (close >= targetLongPrice1)
    strategy.close("Long - Strategy 1", comment="Take Profit Hit")

// Exit conditions for long positions: When price hits stop loss - Strategy 1
if (close <= stopLossLongPrice1)
    strategy.close("Long - Strategy 1", comment="Stop Loss Hit")

Mais.