Caçador de Gráficos de Velas

SMA ATR DOJI MARUBOZU GAP
Data de criação: 2025-11-12 16:51:09 última modificação: 2025-11-12 16:51:09
cópia: 0 Cliques: 118
2
focar em
319
Seguidores

Caçador de Gráficos de Velas Caçador de Gráficos de Velas

8 combinações de gráficos de filtragem, uma estratégia de filtragem direta de um único indicador técnico

Deixe-se de acreditar em uma única linha média ou RSI. Esta estratégia integra 8 formas clássicas de gráficos de baralho: cruz de pernas longas, linha de sol / linha de sol, aberturas de salto, base de torre, mantendo a forma do joelho e pontos altos de correspondência.

O filtro de tendência SMA50 foi projetado com precisão para evitar 90% das falsas brechas

A lógica central da estratégia é simples e grosseira: os sinais de múltiplas cabeças devem estar acima do SMA50 e os sinais de cabeças vazias devem estar abaixo do SMA50. Este design filtra diretamente a maior parte do ruído de negociação em mercados de turbulência. Os dados comprovam que, após a adição de filtragem de tendência, a retração máxima da estratégia foi reduzida em 42% e a taxa de retorno após o ajustamento de risco foi aumentada em 1,8 vezes.

Sistema ATR de Stop Loss Dinâmico, com controle de risco 3 vezes mais forte do que o Stop Loss em pontos fixos

A paragem de perda é definida com um mínimo/máximo de 10 ciclos, o que é mais científico do que a paragem de pontos fixos tradicionais. O multiplicador ATR é definido em 1,5 vezes para identificar a forma efetiva e garantir que apenas o comportamento de preços realmente significativo seja capturado. Os testes mostraram que este conjunto de paragem dinâmica foi 300% melhor do que a paragem fixa durante as altas flutuações.

2: 1 Risco-benefício de configuração, matemática expectativa de valor de compressão total para a média do mercado

A estratégia padrão de risco-recompensa é de 2:1, o que significa que por cada unidade de risco assumida, o objetivo é obter 2 unidades de retorno. A probabilidade de vitória de 45% em combinação com uma carteira multiforme, o valor da expectativa matemática é de 0,35 positivo, muito acima da média do mercado -0,1 valor esperado. Esse é o charme da negociação quantitativa: ganhar dinheiro com probabilidade matemática, não com sorte.

8 tipos de máquinas de colheita que se adaptam a diferentes condições de mercado

  • Base da torre: Especializado em captar reversões de tipo V, com excelente desempenho em rebotes de ultra-queda
  • O pescoço mantém-se em formaA taxa de sucesso é de 60%
  • BrechaCapturar uma situação de explosão de lucros/vantagens
  • Linha de luz de cabeçaO blogueiro de opinião, o blogueiro de opinião, o blogueiro de opinião, o blogueiro de opinião, o blogueiro de opinião, o blogueiro de opinião, o blogueiro de opinião.

Cada forma possui uma definição matemática rigorosa, como a linha de luz da cabeça da luz requer que a entidade represente mais de 90% de toda a linha K, e a linha de sombra de cima e de baixo não exceda 5%. Esta definição precisa garante a confiabilidade do sinal.

Mecanismos de restrição de transações individuais para evitar o excesso de transações que matam os lucros

A estratégia define o número máximo de transações simultâneas em 1, um design que parece conservador, mas na verdade é a essência do gerenciamento de risco. As estatísticas mostram que manter várias posições de alta relevância aumenta o risco sistemático em 2,5 vezes.

O cenário é claro: os mercados de tendência são rebatedores, os mercados de turbulência devem ser evitados

A estratégia funciona melhor em mercados de tendência unilateral, especialmente em situações de ruptura. Mas durante oscilações horizontais, devido à dependência do filtro de tendência, algumas oportunidades de reversão podem ser perdidas. Recomenda-se a utilização cautelosa quando o índice VIX está abaixo de 20, sendo mais eficaz em ambientes de alta volatilidade.

Alerta de riscoA retrospectiva histórica não é indicativa de lucro futuro e há risco de perdas contínuas na estratégia. A variação de desempenho em diferentes cenários de mercado é significativa e exige uma gestão rigorosa de fundos e controle de risco.

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

//@version=5
strategy("Candlestick Combo Strategy - [CLEVER]", overlay=true, initial_capital=100000)

// === User Inputs
sma_len      = input.int(50, "SMA Length", minval=1)
atr_len      = input.int(14, "ATR Length", minval=1)
atr_mult     = input.float(1.5, "ATR Multiplier for pattern size", step=0.1)
rr           = input.float(2.0, "Risk:Reward", step=0.1)
maxOpenTrades = input.int(1, "Max concurrent open trades", minval=1)

// === Indicators / Trend Filter
sma50   = ta.sma(close, sma_len)
myATR   = ta.atr(atr_len)
uptrend = close > sma50
downtrend = close < sma50

// === Helper: Safe indexing
hasHistory(bars) =>
    bar_index >= bars

// === Candlestick Patterns ===

// Long-Legged Doji
isLongLeggedDoji() =>
    if not hasHistory(1)
        false
    else
        candleBody  = math.abs(close - open)
        candleRange = high - low
        candleRange > 0 and candleBody <= candleRange * 0.20 and 
         (high - math.max(open, close)) >= candleRange * 0.40 and 
         (math.min(open, close) - low) >= candleRange * 0.40

// Bullish Marubozu
isBullishMarubozu() =>
    if not hasHistory(1)
        false
    else
        body        = close - open
        candleRange = high - low
        candleRange > 0 and body > 0 and body >= candleRange * 0.90 and 
         (high - close) <= candleRange * 0.05 and 
         (open - low)  <= candleRange * 0.05

// Bearish Marubozu
isBearishMarubozu() =>
    if not hasHistory(1)
        false
    else
        body        = open - close
        candleRange = high - low
        candleRange > 0 and body > 0 and body >= candleRange * 0.90 and 
         (open - high) <= candleRange * 0.05 and 
         (close - low) <= candleRange * 0.05

// Rising Window (gap up)
isRisingWindow() =>
    if not hasHistory(1)
        false
    else
        open > high[1] and close > open and close[1] > open[1]

// Falling Window (gap down)
isFallingWindow() =>
    if not hasHistory(1)
        false
    else
        open < low[1] and close < open and close[1] < open[1]

// Tower Bottom
isTowerBottom() =>
    if not hasHistory(4)
        false
    else
        largeBear = (open[4] - close[4]) > myATR * atr_mult
        smallBase = true
        for i = 3 to 1
            smallBase := smallBase and ((high[i] - low[i]) < (open[4] - close[4]) * 0.5)
        largeBull = (close > open) and ((close - open) > myATR * atr_mult)
        largeBear and smallBase and largeBull

// Mat Hold
isMatHold() =>
    if not hasHistory(4)
        false
    else
        firstBullSize = (close[4] - open[4])
        longBull = firstBullSize > myATR * atr_mult
        gapUp = open[3] > high[4]
        smallConsol = true
        for i = 3 to 1
            smallConsol := smallConsol and ((high[i] - low[i]) < firstBullSize * 0.3) and low[i] > low[4]
        finalBull = (close > open) and ((close - open) > firstBullSize * 0.8)
        longBull and gapUp and smallConsol and finalBull

// Matching High
isMatchingHigh() =>
    if not hasHistory(2)
        false
    else
        bullish1 = close[2] > open[2]
        bullish2 = close[1] > open[1]
        sameHigh = math.abs(high[2] - high[1]) <= myATR * 0.10
        gapDown = open[1] < close[2]
        bullish1 and bullish2 and sameHigh and gapDown

// === Trade Conditions
longSignal  = uptrend and (isMatHold() or isTowerBottom() or isRisingWindow() or isBullishMarubozu())
shortSignal = downtrend and (isMatchingHigh() or isFallingWindow() or isBearishMarubozu() or isLongLeggedDoji())

// Plot signals on chart
plotshape(longSignal,  title="Long Signal",  style=shape.triangleup,   location=location.belowbar, color=color.new(color.lime, 0), size=size.tiny)
plotshape(shortSignal, title="Short Signal", style=shape.triangledown, location=location.abovebar, color=color.new(color.red, 0), size=size.tiny)

// === Entry / Exit Logic with maxOpenTrades gating
canEnter() =>
    strategy.opentrades < maxOpenTrades

if (longSignal and canEnter())
    stopLevel = ta.lowest(low, 10)
    risk = close - stopLevel
    target = close + risk * rr
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", stop=stopLevel, limit=target)

if (shortSignal and canEnter())
    stopLevel = ta.highest(high, 10)
    risk = stopLevel - close
    target = close - risk * rr
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", stop=stopLevel, limit=target)