A estratégia de negociação de breakout baixa é uma estratégia de tendência. Ela identifica a direção da tendência de curto prazo verificando a relação entre os preços de abertura e fechamento nos gráficos de velas. Quando uma tendência começa, entra em posições longas ou curtas para pegar o impulso rapidamente.
A lógica central é verificar se o preço aberto é igual ao preço mais baixo ou mais alto do candelabro. Um sinal longo é desencadeado quando o preço aberto é igual ao baixo. Um sinal curto é desencadeado quando o preço aberto é igual ao alto.
Uma vez que um sinal é acionado, uma posição de tamanho fixo será aberta imediatamente. O stop loss é definido com base no indicador ATR para rastrear a volatilidade do mercado. O nível de take profit é um múltiplo RR fixo da distância de stop loss do preço de entrada. Quando o preço atinge o stop loss ou take profit, a posição será fechada em conformidade.
A estratégia também aplanou todas as posições em uma hora de corte diária definida pelo usuário, como 30 minutos antes do fechamento do mercado dos EUA.
As principais vantagens são:
Usando preços de abertura/fechamento para identificar sinais de ruptura rapidamente.
Sinais de entrada claros e fáceis de implementar.
Parar perdas e tirar lucros em tempo hábil para bloquear lucros e limitar perdas.
Posições planas no limite diário para evitar o risco de falha durante a noite.
Neutral para o mercado, aplica-se ao forex, ações, criptomoedas, etc.
Alguns riscos a considerar:
Frequente stop loss com ATR em mercados agitados.
Superajuste para instrumentos específicos e sessões sem filtros adicionais.
O nível de lucro fixo pode ser inferior em tendências fortes.
O mau timing nas posições de aplanamento pode perder tendências ou causar perdas desnecessárias.
Algumas maneiras de otimizá-lo ainda mais:
Experimentar com várias técnicas de stop loss para diferentes condições de mercado.
Adicionar filtros utilizando indicadores de momento, etc., para evitar falsos sinais.
Ajustar dinamicamente os níveis de lucro com base na volatilidade do mercado.
Otimizar o tempo de corte diário para vários instrumentos e sessões de negociação.
A estratégia de breakout Open High Close Low oferece uma maneira simples de impulsionar o comércio. Regras claras de entrada e saída tornam mais fácil de implementar e gerenciar. Mas melhorias adicionais em parâmetros como stop loss, take profit, filtros melhorariam sua robustez em mais condições de mercado.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // Open-High-Low strategy strategy('Strategy: OLH', shorttitle="OLH", overlay=true) // Inputs slAtrLen = input.int(defval=14, title="ATR Period for placing SL", group="StopLoss settings") showSLLines = input.bool(defval=false, title="Show SL lines in chart", tooltip="Show SL lines also as dotted lines in chart. Note: chart may look untidy.", group="Stolploss settings") // Trade related rrRatio = input.float(title='Risk:Reward', step=0.1, defval=2.0, group="Trade settings") endOfDay = input.int(defval=1500, title="Close all trades, default is 3:00 PM, 1500 hours (integer)", group="Trade settings") mktAlwaysOn = input.bool(defval=true, title="Markets that never closed (Crypto, Forex, Commodity)", tooltip="Some markers never closes. For those cases, make this checked.", group="Trade settings") lotSize = input.int(title='Lot Size', step=1, defval=1, group="Trade settings") // Utils green(open, close) => close > open ? true : false red(open, close) => close < open ? true : false body(open, close) => math.abs(open - close) lowerwick = green(open, close) ? open - low : close - low upperwick = green(open, close) ? high - close : high - open crange = high - low crangep = high[1] - low[1] // previous candle's candle-range bullish = close > open ? true : false bearish = close < open ? true : false // Trade signals longCond = barstate.isconfirmed and (open == low) shortCond = barstate.isconfirmed and (open == high) // For SL calculation atr = ta.atr(slAtrLen) highestHigh = ta.highest(high, 7) lowestLow = ta.lowest(low, 7) longStop = showSLLines ? lowestLow - (atr * 1) : na shortStop = showSLLines ? highestHigh + (atr * 1) : na plot(longStop, title="Buy SL", color=color.green, style=plot.style_cross) plot(shortStop, title="Sell SL", color=color.red, style=plot.style_cross) // Trade execute h = hour(time('1'), syminfo.timezone) m = minute(time('1'), syminfo.timezone) hourVal = h * 100 + m totalTrades = strategy.opentrades + strategy.closedtrades if (mktAlwaysOn or (hourVal < endOfDay)) // Entry var float sl = na var float target = na if (longCond) strategy.entry("enter long", strategy.long, lotSize, limit=na, stop=na, comment="Enter Long") sl := longStop target := close + ((close - longStop) * rrRatio) alert('Buy:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar) if (shortCond) strategy.entry("enter short", strategy.short, lotSize, limit=na, stop=na, comment="Enter Short") sl := shortStop target := close - ((shortStop - close) * rrRatio) alert('Sell:' + syminfo.ticker + ' ,SL:' + str.tostring(math.floor(sl)) + ', Target:' + str.tostring(target), alert.freq_once_per_bar) // Exit: target or SL if ((close >= target) or (close <= sl)) strategy.close("enter long", comment=close < sl ? "Long SL hit" : "Long target hit") if ((close <= target) or (close >= sl)) strategy.close("enter short", comment=close > sl ? "Short SL hit" : "Short target hit") else if (not mktAlwaysOn) // Close all open position at the end if Day strategy.close_all(comment = "Close all entries at end of day.")