OPEN-SOURCE SCRIPT

Pin Bar - BTC/USDT

148
//version=6
strategy("Estratégia Aprimorada - Pullback c/ RSI, MACD, ATR, Volume e Pin Bar - BTC/USDT", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=2)

// === 1. Confirmação de Tendência em Multi-Timeframe ===
// Usamos o timeframe diário para confirmar que o preço está acima da MA200
dailyClose = request.security(syminfo.tickerid, "D", close)
dailyMA200 = request.security(syminfo.tickerid, "D", ta.sma(close, 200))
trendUpHigherTF = dailyClose > dailyMA200

// === 2. Indicadores no Timeframe Atual ===
ma5 = ta.sma(close, 5)
rsiValue = ta.rsi(close, 14)
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
atrValue = ta.atr(14)
avgVolume = ta.sma(volume, 20)
volumeFilter = volume > avgVolume

// === 3. Detecção de Pullback ===
// Conta candles consecutivos com fechamento menor que o anterior
var int consecDown = 0
if close < close[1]
consecDown += 1
else
consecDown := 0
pullback = (consecDown >= 3)

// === 4. Padrão de Reversão (Bullish Pin Bar) ===
body = math.abs(close - open)
lowerWick = math.min(open, close) - low
bullishPinBar = (lowerWick > 2 * body) and (close > open)

// === 5. Condições Técnicas Adicionais ===
rsiCond = rsiValue < 30
macdCrossover = ta.crossover(macdLine, signalLine)
// Para maior confirmação, exige que o fechamento esteja acima de uma MA curta
shortMACond = close > ma5

// === 6. Condição de Entrada ===
entryCond = trendUpHigherTF and pullback and volumeFilter and rsiCond and macdCrossover and bullishPinBar and shortMACond

// === 7. Plotagens para Visualização ===
plot(ma5, color=color.orange, title="MA5")
dailyMAPlot = request.security(syminfo.tickerid, "D", ta.sma(close,200))
plot(dailyMAPlot, color=color.blue, title="Daily MA200")
hline(30, color=color.red, title="RSI 30")

plotshape(entryCond, title="Sinal de Compra", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small)

// === 8. Execução da Estratégia com Gestão de Risco ===
if entryCond
// Define o nível inicial do stop loss usando ATR (1.5x ATR abaixo do preço de entrada)
stopLevel = close - atrValue * 1.5
strategy.entry("Long", strategy.long)
// Saída com trailing stop: o stop se ajusta conforme o preço sobe, com distância de 1.5x ATR
strategy.exit("Exit Long", "Long", stop=stopLevel, trail_points=atrValue * 1.5)

Declinazione di responsabilità

Le informazioni ed i contenuti pubblicati non costituiscono in alcun modo una sollecitazione ad investire o ad operare nei mercati finanziari. Non sono inoltre fornite o supportate da TradingView. Maggiori dettagli nelle Condizioni d'uso.