Moving Average ExponentialUsing VWAP and two different EMAs. Also includes BollingerBands, showing if the Close is above or below VWAP.
Göstergeler ve stratejiler
Pierre's H4 EMA/MA Compression Strategy (BTC)Pierre's logic and trading strategy from the X post and its related threads. The post focuses on Bitcoin (BTC) price action on a 4-hour (H4) chart, using Exponential Moving Averages (EMAs) and Moving Averages (MAs) to identify a potential "EMA/MA compression" scenario, which is a key part of his analysis.
Summary of Pierre's Logic
Pierre is analyzing Bitcoin's price movement on the H4 timeframe, focusing on a technical pattern he calls "EMA/MA compression." This concept is central to his analysis and involves the interaction of key moving averages (H4 100 MA, H4 200 EMA, and H4 300 MA) to predict price behavior. Here's the breakdown of his logic:
EMA/MA Compression Concept:
Pierre describes "EMA/MA compression" as a scenario where the price consolidates around key moving averages, leading to a tightening of volatility before a breakout or breakdown.
In this case, the H4 100 MA, H4 200 EMA, and H4 300 MA are the critical levels to watch. These moving averages act as dynamic support/resistance levels, and their behavior (break, hold, or flip) dictates the trend direction.
He notes that this compression often follows a cycle: EMA/MA compression → Trend → Gap Fills → Repeat. This cycle suggests that after a compression phase, the price tends to trend, fill any price gaps, and then return to another compression phase.
Key Levels and Conditions for a Bullish Scenario:
H4 100 MA: Must break or flip to the upside. A break above this level signals bullish momentum, while a failure to hold above it (a "flip") invalidates the bullish case.
H4 200 EMA: Acts as an "intermediary" level that must hold during pullbacks. If this level holds, it supports the bullish structure.
H4 300 MA: A critical support level. It must hold to keep the bullish scenario intact. If the price loses this level (and it flips to resistance), the bullish outlook is invalidated.
Pierre mentions that after the price breaks the H4 100 MA, it should aim to fill gaps between 109.5 and 110.5 (likely in thousands, so $109,500–$110,500). If the H4 200 EMA holds, the price might pull back to the H4 300 MA, where it could consolidate further before continuing the trend.
Invalidation Scenarios:
The bullish scenario is invalidated if:
The H4 100 MA is broken and flips to resistance (i.e., price closes below it after initially breaking above).
The H4 300 MA is lost and flips to resistance (i.e., price closes below it and fails to reclaim it).
Current Market Context:
Pierre notes a "nice bounce" in BTC's price, bringing it back into the compression zone. The price is currently fighting a key area on lower timeframes (LTF), likely referring to shorter timeframes like H1 or M15.
He mentions that all gaps have been filled for now (referencing the cycle of gap fills), which aligns with his expectation of reduced volatility as the price enters another compression phase.
Historical Context and Consistency:
Pierre has been tracking this scenario since the H4 100 MA break, as shared in his group @TheHavenCrypto
. He references notes from Monday (likely June 2, 2025, as the post is from June 6), indicating that his analysis has been consistent over the week.
In a follow-up post, he reflects on a recent trade where he took partial profits on the bounce but couldn’t fully capitalize on the move due to being on his phone and managing only a fraction of his intended position size near the H4 300 MA (for BTC) and H4 200 EMA (for ETH).
Pierre's Trading Strategy
Based on the post and its context, Pierre’s trading strategy revolves around the EMA/MA compression framework. Here’s how he approaches trades:
Setup Identification:
Pierre identifies setups using the H4 timeframe, focusing on the interaction of the H4 100 MA, H4 200 EMA, and H4 300 MA.
He looks for a "compression" phase where the price consolidates around these moving averages, signaling a potential breakout or breakdown.
In this case, the price breaking the H4 100 MA to the upside was his initial signal for a bullish setup.
Entry Points:
Pierre likely entered a long position (buy) near the H4 300 MA or H4 200 EMA during the recent bounce, as he mentions taking partial profits on the move.
He prefers entering after a pullback to these key levels (e.g., H4 200 EMA or H4 300 MA) as long as they hold as support. For example, in Thread 1 (Post 1930270942871118081), he shares a chart showing a long entry near the H4 300 MA with an upside target near 110,000–111,000.
Target Setting:
His primary target after the H4 100 MA break is to fill gaps between $109,500 and $110,500.
If the price reaches these levels and the H4 200 EMA holds, he expects a potential pullback to the H4 300 MA, followed by another leg up (as part of the trend phase in his cycle).
Risk Management:
Pierre sets clear invalidation levels:
A close below the H4 100 MA after breaking above it.
A close below the H4 300 MA with a failure to reclaim it.
He takes partial profits on bounces, as seen in his follow-up post where he mentions securing gains but not fully capitalizing on the move due to limited position size.
Position Sizing and Execution:
Pierre mentions being limited by trading from his phone, which restricted his position size. This suggests he typically scales into trades with a planned size but adjusts based on execution conditions.
He also notes going "AFK for the weekend" after taking profits, indicating a disciplined approach to stepping away from the market when not actively monitoring.
Cycle-Based Trading:
His strategy follows the cycle of EMA/MA compression → Trend → Gap Fills → Repeat. After the gaps are filled, he expects volatility to tighten (another compression phase), which could set up the next trade.
Key Takeaways for Traders
Focus on Key Levels: Pierre’s strategy hinges on the H4 100 MA, H4 200 EMA, and H4 300 MA. These levels are used to confirm trends, identify entries, and set invalidation points.
Patience for Compression: He waits for the price to enter a compression phase (tight consolidation around MAs) before expecting a breakout or breakdown.
Gap-Filling as a Target: Pierre uses price gaps (e.g., $109,500–$110,500) as targets, aligning with the market’s tendency to fill these gaps (as noted in the related web result from investing.com about CME gaps).
Risk Management: He has clear invalidation rules and takes partial profits to lock in gains while letting the trade play out.
Cycle Awareness: His trades are part of a broader cycle (compression → trend → gap fill → repeat), which helps him anticipate market behavior.
Additional Context from Related Threads
Thread 1 (June 4–June 6): Pierre’s earlier posts (e.g., Post 1930270942871118081) show historical examples of EMA/MA compression leading to trends and gap fills, reinforcing his current analysis. He also shares a chart with a potential upside target of $110,000–$111,000 if the H4 300 MA holds.
Thread 2 (June 3): Pierre mentions a Daily (D1) timeframe analysis where the D1 100 MA and D1 200 EMA align with range lows, suggesting a potential "wet dream swing long opportunity" if the price holds these levels. This indicates he’s also considering higher timeframes for confirmation.
Thread 3 (May 27): Pierre’s earlier analysis highlights similar concepts (e.g., H4 100 MA break, H4 200 EMA hold), showing consistency in his approach over time.
Conclusion
Pierre’s logic is rooted in technical analysis, specifically the interaction of moving averages on the H4 timeframe to identify "EMA/MA compression" setups. His strategy involves buying on pullbacks to key support levels (H4 200 EMA, H4 300 MA) after a breakout (H4 100 MA), targeting gap fills ($109,500–$110,500), and managing risk with clear invalidation levels. He follows a cyclical approach to trading, expecting periods of compression, trending, and gap-filling to repeat, which guides his entries, exits, and overall market outlook.
Premarket & Previous Day High/LowLines for Premarket High Low as well as Previous Day High and Low. Also adds Bollinger Bands. Colors the Bollinger Bands depending wether the Close is above or below PMH or PML
Mariam Market DashboardMariam Market Dashboard – A Quick Guide
Purpose:
Shows if the market is trending, volatile, or stuck so you can decide when to trade or wait.
How to Use
Add the indicator to your chart. Adjust basic settings like EMA, RSI, ATR lengths, and timezone if needed. Use it before entering any trade to confirm market conditions.
What Each Metric Means (with general ranges)
Session: Identifies which market session is active (New York, London, Tokyo).
Trend: Shows current market direction. “Up” means price above EMA and VWAP, “Down” means price below. Use this to confirm bullish or bearish bias.
HTF Trend: Confirms trend on a higher timeframe for stronger signals.
ATR (Average True Range): Measures market volatility or price movement speed.
Low ATR (e.g., below 0.5% of price) means quiet or slow market; high ATR (above 1% of price) means volatile or fast-moving market, good for active trades.
Strong Bar: A candlestick closing near its high (above 75% of range) indicates strong buying momentum; closing near its low indicates strong selling momentum.
Higher Volume: Volume higher than average (typically 10-20% above normal) means more market activity and stronger moves.
Volume / Avg Volume: Ratio above 1.2 (120%) shows volume is significantly higher than usual, signaling strong interest.
RVol % (Relative Volume %): Above 100% means volume is hotter than normal, increasing chances of strong moves; below 50% means low activity and possible indecision.
Delta: Difference between buying and selling volume (if available). A positive delta means buyers dominate; negative means sellers dominate.
ADX (Average Directional Index): Measures trend strength:
Below 20 means weak or no trend;
Above 25 means strong trend;
Between 20-25 is moderate trend.
RSI (Relative Strength Index): Momentum oscillator:
Below 30 = oversold (potential buy);
Above 70 = overbought (potential sell);
Between 40-60 means neutral momentum.
MACD: Confirms momentum direction:
Positive MACD histogram bars indicate bullish momentum;
Negative bars indicate bearish momentum.
Choppiness Index: Measures how much the market is ranging versus trending:
Above 60 = very choppy/sideways market;
Below 40 = trending market.
Consolidation: When true, price is stuck in a narrow range, signaling indecision. Avoid breakout trades during this.
Quick Trading Reminder
Trade only when the trend is clear and volume is above average. Avoid trading in low volume or choppy markets.
Triad RotationHey guys, this is the first indicator I've created. I have done some selective testing to validate the calculations against the FullStochastic indicators using the same settings.
From my review it looks to match correctly, but please do your own due diligence to verify this indicator matches your needs and strategy.
This indicator was designed closely with the Quad rotation strategy, where you use multiple stochastic indicators to identify overbought and oversold conditions.
Once all the stochastics are determined to be over/under the overbought/oversold threshold, the section will be highlighted red or green based on which condition is met. Green indicates a potential period to buy, and red indicates a potential period to sell.
P.S. I pair this with the MACD indicator to determine momentum of to aid in determining entry and exits, along with support and resistance levels. Thus far, I am an unprofitable trader, so this strategy may change. Again do your own due diligence to design a strategy that works for you.
Liquidity Sweep Strategy [Enhanced]liquidity sweep simplifier
break of structure, move back into zone which pushes prices in the same direction, sweep of liquidity and entry
Liquidity Sweep Strategy [Enhanced]//@version=5
indicator("Liquidity Sweep Strategy ", overlay=true)
// === USER SETTINGS ===
structureLookback = input.int(20, "Structure Lookback")
sweepSensitivity = input.int(2, "Sweep Sensitivity (Wicks Above/Below)")
showBreaks = input.bool(true, "Highlight Breaks of Structure")
showSweeps = input.bool(true, "Highlight Liquidity Sweeps")
showEntrySignals = input.bool(true, "Show Entry Signals After Sweeps")
emaLength = input.int(50, "EMA Trend Filter Length")
atrLength = input.int(14, "ATR Length")
atrMultiplier = input.float(1.2, "Minimum ATR for Valid Entry")
// === INDICATORS ===
ema = ta.ema(close, emaLength)
atr = ta.atr(atrLength)
// === HIGH/LOW STRUCTURE ===
var float lastHigh = na
var float lastLow = na
swingHigh = ta.highest(high, structureLookback) == high
swingLow = ta.lowest(low, structureLookback) == low
if swingHigh
lastHigh := high
if swingLow
lastLow := low
// === BREAK OF STRUCTURE ===
bosUp = showBreaks and swingHigh and close > lastHigh
bosDown = showBreaks and swingLow and close < lastLow
plotshape(bosUp, title="Break of Structure (Up)", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(bosDown, title="Break of Structure (Down)", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// === LIQUIDITY SWEEP DETECTION ===
sweepHigh = high > lastHigh and close < lastHigh and showSweeps
sweepLow = low < lastLow and close > lastLow and showSweeps
plotshape(sweepHigh, title="Liquidity Sweep High", location=location.abovebar, color=color.orange, style=shape.xcross, size=size.small)
plotshape(sweepLow, title="Liquidity Sweep Low", location=location.belowbar, color=color.orange, style=shape.xcross, size=size.small)
// === ENTRY SIGNALS WITH CONFIRMATION ===
validShort = sweepHigh and close < open and close < ema and atr > atrMultiplier * ta.sma(close, atrLength)
validLong = sweepLow and close > open and close > ema and atr > atrMultiplier * ta.sma(close, atrLength)
entryShort = validShort and showEntrySignals
entryLong = validLong and showEntrySignals
plotshape(entryShort, title="Entry Short", location=location.abovebar, color=color.red, style=shape.arrowdown, size=size.normal)
plotshape(entryLong, title="Entry Long", location=location.belowbar, color=color.green, style=shape.arrowup, size=size.normal)
// === ALERT CONDITIONS ===
alertcondition(entryShort, title="Short Entry Alert", message="Liquidity Sweep Short Entry with EMA + ATR Confirmation")
alertcondition(entryLong, title="Long Entry Alert", message="Liquidity Sweep Long Entry with EMA + ATR Confirmation")
// === BACKGROUND COLOR ON CONFIRMATION ===
bgcolor(bosUp or bosDown ? color.new(color.gray, 85) : na)
FX 2025 - Triple EMA Entrada y Cierre ÚnicaCruce de emas 9/21/50, se recomienda combinar con los indicadores de volumen y macd
EMA 9: Represents very short-term price movement.
EMA 21: Smoother and shows short-term trend.
EMA 50: Reflects the medium-term trend.
Common signals:
Bullish crossover: When the EMA 9 crosses above the EMA 21 (and preferably also the EMA 50), it’s seen as a buy signal.
Bearish crossover: When the EMA 9 crosses below the EMA 21 or 50, it may signal a sell or correction.
RejectionLibrary "Rejection"
method mergeCandle(h1, l1, c1, h2, l2, o2)
Namespace types: series float, simple float, input float, const float
Parameters:
h1 (float)
l1 (float)
c1 (float)
h2 (float)
l2 (float)
o2 (float)
method isRejectionCandle(candleHigh, candleLow, candleOpen, candleClose)
Namespace types: series float, simple float, input float, const float
Parameters:
candleHigh (float)
candleLow (float)
candleOpen (float)
candleClose (float)
method mergeCandlesForRejection(_numCandles, direction)
Namespace types: series int, simple int, input int, const int
Parameters:
_numCandles (int)
direction (int)
method hasRejection(direction)
Namespace types: series int, simple int, input int, const int
Parameters:
direction (int)
Short Entry Setup - PL1!//@version=5
indicator("Short Signal - Platinum", overlay=true)
// === User Inputs ===
entryTop = input.float(1182.0, "Resistance Zone Top")
entryBottom = input.float(1178.0, "Resistance Zone Bottom")
rsiLevel = input.float(75.0, "RSI Overbought Level")
// === RSI Calculation ===
rsi = ta.rsi(close, 14)
rsiOverbought = rsi > rsiLevel
// === Price in Resistance Zone ===
priceInZone = close >= entryBottom and close <= entryTop
// === Bearish Candle Condition ===
bearishCandle = close < open
// === Final Short Signal Condition ===
shortSignal = priceInZone and bearishCandle and rsiOverbought
// === Plot Short Signal on Chart ===
plotshape(shortSignal, location=location.abovebar, style=shape.labeldown, color=color.red, size=size.small, text="SHORT")
// === Optional: Plot Background of Zone ===
bgcolor(priceInZone ? color.new(color.red, 90) : na, title="Resistance Zone")
// === Alert Condition for Automation ===
alertcondition(shortSignal, title="Short Signal Alert", message="SHORT SIGNAL: Price in resistance zone, RSI overbought, bearish candle.")
SUPER Signal Alert BY JAK"Buy or sell according to the signal that appears, but it should also be confirmed with other technical tools." FX:USDJPY FX:EURUSD OANDA:XAUUSD BITSTAMP:BTCUSD OANDA:GBPUSD OANDA:GBPJPY
TSE USD Upper LimitThis script calculates and displays the daily upper price limit for a Tokyo Stock Exchange (TSE) stock based on the official JPX limit table. The limit is determined from the previous session’s closing price and displayed as a fixed horizontal line on the current chart. Ideal for tracking regulatory price caps and identifying squeeze scenarios.
TSE EUR Upper LimitThis indicator calculates and displays the daily upper price limit for a Tokyo Stock Exchange (TSE) stock based on the official JPX limit table. The limit is determined from the previous session’s closing price and displayed as a fixed horizontal line on the current chart. Ideal for tracking regulatory price caps and identifying squeeze scenarios.
Trending Indicator: Price % of Pivots# Price % of Pivots Indicator
## Overview
A trend-following indicator that measures current price position relative to recent pivot highs and lows as percentages, providing normalized trend analysis across all timeframes and instruments.
## Key Features
- **Real-time trend table** with live signal updates (Strong Bullish/Bearish, Leaning Bullish/Bearish, Neutral)
- **Dual percentage tracking**: Price % of high pivot and low pivot % of current price
- **Universal compatibility** - works on any timeframe and asset class
- **Faster than some other trend indicators** - catches trend changes earlier with less lag
## Trading Signals
- **Bullish bias**: When price % of high pivot > low pivot % of price
- **Bearish bias**: When low pivot % of price > price % of high pivot
- **Customizable thresholds** (default 99%) with alert system
- **Color-coded backgrounds** for immediate visual confirmation
## Configuration
- Adjustable pivot lookback period (5-100 bars)
- Customizable left/right bars for pivot confirmation
- Threshold settings from 50-110% with 0.5% increments
- Full color customization for all elements
## Advantages
- **Speed**: More responsive than traditional ATR-based indicators
- **Clarity**: Clean percentage-based display with professional info table
- **Alerts**: Multiple conditions for automated and manual trading
- **Versatility**: Effective for day trading, swing trading, and multi-timeframe analysis
Perfect for traders seeking a fast, reliable trend indicator that works consistently across all markets and timeframes.
AD Pro//@version=5
indicator("AD Pro", overlay=true)
// === Inputs
atrLen = input.int(14, "ATR Length")
factor = input.float(0.7, "Factor")
slMultiplier = input.float(2.0, "SL Multiplier")
// Volatility Filter Input
atrFilterStrength = input.float(1.0, "Volatility Threshold (x Avg ATR)", step=0.1, minval=0.1)
// Min % Price Change Filter
enableMinMove = input.bool(true, "Enable Min % Price Change Filter")
lookbackBars = input.int(20, "Lookback Bars")
minMovePct = input.float(0.005, "Min % Price Change", step=0.001, minval=0)
// TP Buy colors
tp1BuyColor = input.color(color.lime, "TP1 Buy Color")
tp2BuyColor = input.color(color.green, "TP2 Buy Color")
tp3BuyColor = input.color(color.teal, "TP3 Buy Color")
// TP Sell colors
tp1SellColor = input.color(color.fuchsia, "TP1 Sell Color")
tp2SellColor = input.color(color.red, "TP2 Sell Color")
tp3SellColor = input.color(color.maroon, "TP3 Sell Color")
// SL colors
slBuyColor = input.color(color.blue, "SL Buy Color")
slSellColor = input.color(color.blue, "SL Sell Color")
// === Indicator Calculations
atr = ta.atr(atrLen)
avgATR = ta.sma(atr, 50)
atrCondition = atr > avgATR * atrFilterStrength
priceChange = math.abs(close - close ) / close
priceMoveOK = priceChange > minMovePct
priceChangeCondition = not enableMinMove or priceMoveOK
volatilityOK = atrCondition and priceChangeCondition
// === UT Bot Logic
src = close
var float trailPrice = na
var bool dirLong = true
longStop = src - factor * atr
shortStop = src + factor * atr
if na(trailPrice)
trailPrice := longStop
dirLong := true
else
if dirLong
trailPrice := math.max(trailPrice, longStop)
dirLong := src > trailPrice
else
trailPrice := math.min(trailPrice, shortStop)
dirLong := src > trailPrice
rawBuy = dirLong and not dirLong
rawSell = not dirLong and dirLong
// Apply Volatility Filter
buySignal = rawBuy and volatilityOK
sellSignal = rawSell and volatilityOK
// === Entry & Label Storage
var float entryPrice = na
var bool lastSignalIsBuy = na
var label tp1Lbl = na
var label tp2Lbl = na
var label tp3Lbl = na
var label slLbl = na
var line tp1Line = na
var line tp2Line = na
var line tp3Line = na
var line slLine = na
if buySignal or sellSignal
if not na(tp1Lbl)
label.delete(tp1Lbl)
if not na(tp2Lbl)
label.delete(tp2Lbl)
if not na(tp3Lbl)
label.delete(tp3Lbl)
if not na(slLbl)
label.delete(slLbl)
if not na(tp1Line)
line.delete(tp1Line)
if not na(tp2Line)
line.delete(tp2Line)
if not na(tp3Line)
line.delete(tp3Line)
if not na(slLine)
line.delete(slLine)
entryPrice := close
lastSignalIsBuy := buySignal
tp1 = entryPrice + (buySignal ? 1 : -1) * atr
tp2 = entryPrice + (buySignal ? 2 : -2) * atr
tp3 = entryPrice + (buySignal ? 3 : -3) * atr
sl = entryPrice - (buySignal ? 1 : -1) * factor * atr * slMultiplier
tp1Lbl := label.new(bar_index, tp1, "TP1 " + str.tostring(tp1, format.mintick),
style=label.style_label_right,
color=buySignal ? tp1BuyColor : tp1SellColor,
textcolor=color.black)
tp2Lbl := label.new(bar_index, tp2, "TP2 " + str.tostring(tp2, format.mintick),
style=label.style_label_right,
color=buySignal ? tp2BuyColor : tp2SellColor,
textcolor=color.white)
tp3Lbl := label.new(bar_index, tp3, "TP3 " + str.tostring(tp3, format.mintick),
style=label.style_label_right,
color=buySignal ? tp3BuyColor : tp3SellColor,
textcolor=color.white)
slLbl := label.new(bar_index, sl, "SL " + str.tostring(sl, format.mintick),
style=label.style_label_right,
color=buySignal ? slBuyColor : slSellColor,
textcolor=color.white)
tp1Line := line.new(bar_index, tp1, bar_index + 1, tp1,
color=buySignal ? tp1BuyColor : tp1SellColor, style=line.style_dashed)
tp2Line := line.new(bar_index, tp2, bar_index + 1, tp2,
color=buySignal ? tp2BuyColor : tp2SellColor, style=line.style_dashed)
tp3Line := line.new(bar_index, tp3, bar_index + 1, tp3,
color=buySignal ? tp3BuyColor : tp3SellColor, style=line.style_dashed)
slLine := line.new(bar_index, sl, bar_index + 1, sl,
color=buySignal ? slBuyColor : slSellColor, style=line.style_dashed)
// === Plot Signals
plotshape(buySignal, title="Buy", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellSignal, title="Sell", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// === Alerts
alertcondition(buySignal, title="Buy Alert", message="Buy Signal!")
alertcondition(sellSignal, title="Sell Alert", message="Sell Signal!")
PriceLevels GBHOW-TO: Goldbach Price Levels – Identify Algorithmic Key Zones
This open-source indicator highlights specific price levels ending with numbers like 03, 11, 29, 35, 65, and 71.
These values are often observed at key reversal or hesitation points and may align with algorithmic behavior patterns in the market.
What it does:
– Automatically scans and marks horizontal price levels containing these number endings
– You can toggle visibility for each number type
– Each level can have a custom color and line thickness
– Labels show price values at the end of each line
– Label color and transparency are fully customizable to match dark or light chart styles
This tool is designed to help traders visually spot recurring patterns that might otherwise go unnoticed.
It’s ideal for discretionary traders who want to study market structure through static price references.
This script is open-source and published for educational use.
For feedback or improvements, feel free to reach out via private message on TradingView.
AD Pro//@version=5
indicator("AD Pro", overlay=true)
// === Inputs
atrLen = input.int(14, "ATR Length")
factor = input.float(0.7, "Factor")
slMultiplier = input.float(2.0, "SL Multiplier")
// Volatility Filter Input
atrFilterStrength = input.float(1.0, "Volatility Threshold (x Avg ATR)", step=0.1, minval=0.1)
// Min % Price Change Filter
enableMinMove = input.bool(true, "Enable Min % Price Change Filter")
lookbackBars = input.int(20, "Lookback Bars")
minMovePct = input.float(0.005, "Min % Price Change", step=0.001, minval=0)
// TP Buy colors
tp1BuyColor = input.color(color.lime, "TP1 Buy Color")
tp2BuyColor = input.color(color.green, "TP2 Buy Color")
tp3BuyColor = input.color(color.teal, "TP3 Buy Color")
// TP Sell colors
tp1SellColor = input.color(color.fuchsia, "TP1 Sell Color")
tp2SellColor = input.color(color.red, "TP2 Sell Color")
tp3SellColor = input.color(color.maroon, "TP3 Sell Color")
// SL colors
slBuyColor = input.color(color.blue, "SL Buy Color")
slSellColor = input.color(color.blue, "SL Sell Color")
// === Indicator Calculations
atr = ta.atr(atrLen)
avgATR = ta.sma(atr, 50)
atrCondition = atr > avgATR * atrFilterStrength
priceChange = math.abs(close - close ) / close
priceMoveOK = priceChange > minMovePct
priceChangeCondition = not enableMinMove or priceMoveOK
volatilityOK = atrCondition and priceChangeCondition
// === UT Bot Logic
src = close
var float trailPrice = na
var bool dirLong = true
longStop = src - factor * atr
shortStop = src + factor * atr
if na(trailPrice)
trailPrice := longStop
dirLong := true
else
if dirLong
trailPrice := math.max(trailPrice, longStop)
dirLong := src > trailPrice
else
trailPrice := math.min(trailPrice, shortStop)
dirLong := src > trailPrice
rawBuy = dirLong and not dirLong
rawSell = not dirLong and dirLong
// Apply Volatility Filter
buySignal = rawBuy and volatilityOK
sellSignal = rawSell and volatilityOK
// === Entry & Label Storage
var float entryPrice = na
var bool lastSignalIsBuy = na
var label tp1Lbl = na
var label tp2Lbl = na
var label tp3Lbl = na
var label slLbl = na
var line tp1Line = na
var line tp2Line = na
var line tp3Line = na
var line slLine = na
if buySignal or sellSignal
if not na(tp1Lbl)
label.delete(tp1Lbl)
if not na(tp2Lbl)
label.delete(tp2Lbl)
if not na(tp3Lbl)
label.delete(tp3Lbl)
if not na(slLbl)
label.delete(slLbl)
if not na(tp1Line)
line.delete(tp1Line)
if not na(tp2Line)
line.delete(tp2Line)
if not na(tp3Line)
line.delete(tp3Line)
if not na(slLine)
line.delete(slLine)
entryPrice := close
lastSignalIsBuy := buySignal
tp1 = entryPrice + (buySignal ? 1 : -1) * atr
tp2 = entryPrice + (buySignal ? 2 : -2) * atr
tp3 = entryPrice + (buySignal ? 3 : -3) * atr
sl = entryPrice - (buySignal ? 1 : -1) * factor * atr * slMultiplier
tp1Lbl := label.new(bar_index, tp1, "TP1 " + str.tostring(tp1, format.mintick),
style=label.style_label_right,
color=buySignal ? tp1BuyColor : tp1SellColor,
textcolor=color.black)
tp2Lbl := label.new(bar_index, tp2, "TP2 " + str.tostring(tp2, format.mintick),
style=label.style_label_right,
color=buySignal ? tp2BuyColor : tp2SellColor,
textcolor=color.white)
tp3Lbl := label.new(bar_index, tp3, "TP3 " + str.tostring(tp3, format.mintick),
style=label.style_label_right,
color=buySignal ? tp3BuyColor : tp3SellColor,
textcolor=color.white)
slLbl := label.new(bar_index, sl, "SL " + str.tostring(sl, format.mintick),
style=label.style_label_right,
color=buySignal ? slBuyColor : slSellColor,
textcolor=color.white)
tp1Line := line.new(bar_index, tp1, bar_index + 1, tp1,
color=buySignal ? tp1BuyColor : tp1SellColor, style=line.style_dashed)
tp2Line := line.new(bar_index, tp2, bar_index + 1, tp2,
color=buySignal ? tp2BuyColor : tp2SellColor, style=line.style_dashed)
tp3Line := line.new(bar_index, tp3, bar_index + 1, tp3,
color=buySignal ? tp3BuyColor : tp3SellColor, style=line.style_dashed)
slLine := line.new(bar_index, sl, bar_index + 1, sl,
color=buySignal ? slBuyColor : slSellColor, style=line.style_dashed)
// === Plot Signals
plotshape(buySignal, title="Buy", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellSignal, title="Sell", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// === Alerts
alertcondition(buySignal, title="Buy Alert", message="Buy Signal!")
alertcondition(sellSignal, title="Sell Alert", message="Sell Signal!")
STD Fast vs Slow (Manual Bar Inputs)Kenny Camo
I need to write more, not really sure what to put. TradingView says I need a longer description.
Basically, attempting to not get wrekt by Kenny and Co.
PineTraderOT_V6Library "PineTraderOT_V6"
TODO: Simplify the order ticket generation for Pinetrader.io
GenerateOT(license_id, symbol, action, order_type, trade_type, size, price, tp, sl, risk, trailPrice, trailOffset)
CreateOrderTicket: Establishes a order ticket following appropriate guidelines.
Parameters:
license_id (string) : Provide your license index
symbol (string) : Symbol on which to execute the trade
action (string) : Execution method of the trade : "MRKT" or "PENDING"
order_type (string) : Direction type of the order: "BUY" or "SELL"
trade_type (string) : Is it a "SPREAD" trade or a "SINGLE" symbol execution?
size (float) : Size of the trade, in units
price (float) : If the order is pending you must specify the execution price
tp (float) : (Optional) Take profit of the order
sl (float) : (Optional) Stop loss of the order
risk (float) : Percent to risk for the trade, if size not specified
trailPrice (float) : (Optional) Price at which trailing stop is starting
trailOffset (float) : (Optional) Amount to trail by
Returns: Return Order string
FVG Strategy 5minThat's the early of my new strat, can't wait to upgrade it and take bigggg profit guys
Market State [wundaba]General market overview indicator
Add your own symbols
Credits to Luon MC for the idea
OBHOW-TO: Advanced Order Block & Liquidity Mapping Tool
This script combines order block detection using 3- and 5-bar fractal structures with dynamic and static liquidity zones, plus optional time-based label calculations.
Key features:
– Fractal-based detection of bullish and bearish order blocks
– Automatic removal of broken OBs to keep charts clean
– Optional FVG validation for higher-quality OBs
– Custom time label logic for bar/session analysis
– Configurable visuals: line styles, widths, label placement, and time offsets
The logic for liquidity detection is adapted from the open-source LiquidityFinderLibrary by TFlab. This version adds custom cleanup behavior and visual enhancements to improve usability.
This script is published as open-source and intended for educational and analytical use only. No performance guarantees are implied.
If you have questions or suggestions, feel free to message me privately on TradingView.