TMC Strategy - Simplified Buy/Sell Signals//@version=5
indicator("TMC Strategy - Simplified Buy/Sell Signals", overlay=true)
// Input parameters
emaLength = input.int(20, title="EMA Length")
rsiLength = input.int(10, title="RSI Length")
macdFast = input.int(12, title="MACD Fast Length")
macdSlow = input.int(26, title="MACD Slow Length")
macdSignal = input.int(9, title="MACD Signal Length")
// Calculate indicators
ema = ta.ema(close, emaLength)
rsi = ta.rsi(close, rsiLength)
= ta.macd(close, macdFast, macdSlow, macdSignal)
// Trend condition
uptrend = close > ema
downtrend = close < ema
// Momentum condition
rsiBullish = rsi > 50
rsiBearish = rsi < 50
// MACD condition
macdBullish = ta.crossover(macdLine, signalLine)
macdBearish = ta.crossunder(macdLine, signalLine)
// Buy and Sell Signals
buySignal = uptrend and rsiBullish and macdBullish
sellSignal = downtrend and rsiBearish and macdBearish
// Plot Buy and Sell Signals
plotshape(series=buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small)
plotshape(series=sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small)
// Optional: Plot EMA for visual reference
plot(ema, title="EMA", color=color.blue, linewidth=2)
Bill Williams Göstergeleri
Williams Alligator Spread Oscillator (WASO)Short description (About box)
Williams Alligator Spread Oscillator (WASO) converts Bill Williams’ Alligator into a 0–100 oscillator that measures the average distance between Lips/Teeth/Jaw relative to ATR. High = expansion/trend (default), low = compression/range — making sideways markets easier to spot. Includes adaptive normalization, configurable thresholds, background shading, and alerts.
Full description (Description field)
What it does
The Williams Alligator Spread Oscillator (WASO) transforms Bill Williams’ Alligator into a single, adaptive 0–100 scale. It computes the average pairwise distance among the Alligator lines (Lips/Teeth/Jaw), normalizes it by ATR and a rolling min–max window, and smooths the result. This makes the signal robust across symbols and timeframes and explicitly improves detection of sideways (ranging) conditions by highlighting compression regimes.
Why it helps
Sideways detection made easier: Low WASO marks compressed regimes that commonly align with consolidation/range phases, helping you identify chop and plan breakout strategies.
Trend/expansion clarity: High WASO indicates the Alligator lines are widening relative to volatility, pointing to trending or expanding conditions.
You can flip the direction if you prefer “High = Range.”
How it is calculated (plain English)
Smooth price with RMA (SMMA-like) to get Jaw, Teeth, Lips.
Compute the average pairwise distance between these three lines.
Divide by ATR to remove price-scale effects.
Normalize with a rolling min–max window to map values to 0–100.
Optionally apply EMA smoothing to the oscillator.
Key settings
Jaw/Teeth/Lips Lengths: Alligator periods (SMMA-like via ta.rma).
ATR Length: Volatility benchmark for scaling.
Normalization Lookback: Longer = steadier; shorter = more responsive.
Smoothing (EMA): Evens out noise.
High Value = Large Spread (Trend): Toggle to invert semantics.
Upper/Lower Thresholds: 70/30 are practical starting points.
Signals / interpretation
Sideways / Compression (easier to spot):
Default direction: WASO below Lower Threshold (e.g., <30).
With inverted direction OFF: WASO above Upper Threshold (e.g., >70).
Trend / Expansion:
Default direction: WASO above Upper Threshold (e.g., >70).
With inverted direction OFF: WASO below Lower Threshold (e.g., <30).
Midline (50): Neutral zone; flips around 50 can hint at regime shifts.
Alerts included
Range Start (sideways/compression)
Trend Start (expansion/trend)
Notes & limitations
This implementation omits the classic forward shift of Alligator lines to keep signals usable on live bars.
If market behavior shifts (very quiet or very volatile), tune Lookback and ATR Length.
Combine WASO with breakout levels or momentum filters for entries/exits.
Credits & disclaimer
Inspired by Bill Williams’ Alligator.
For educational purposes only. Not financial advice.
Release Notes (v1.0):
Initial release of Williams-Alligator Spread Oscillator (WASO) with ATR-based scaling and adaptive 0–100 normalization.
Direction toggle (High = Trend by default), adjustable thresholds, background shading, and two alert conditions.
9:30 USA OPENEasy if it go up it will turn green and you can lng if it goes down it will turn red and you can short
Advanced Market Trend Analyzer//@version=5
indicator("Advanced Market Trend Analyzer", shorttitle="AMT Analyzer", overlay=true)
// Input parameters
rsi_length = input.int(14, "RSI Length")
ema_fast = input.int(9, "Fast EMA")
ema_slow = input.int(21, "Slow EMA")
volume_ma_length = input.int(20, "Volume MA Length")
overbought = input.int(70, "Overbought Level")
oversold = input.int(30, "Oversold Level")
BIF ASK WITH TREND Price Trend with PercentageBID ASK WITH TREND Price Trend with Percentage SHOW MARKET TREND AND MARKET VOLLUME
Estrategia MACD//@version=6
indicator("Trading Sessions", overlay = true, max_boxes_count = 500, max_lines_count = 500, max_labels_count = 500)
bool showSessionNames = input.bool(true, "Show session names")
bool showSessionOC = input.bool(true, "Draw session open and close lines")
bool showSessionTickRange = input.bool(true, "Show tick range for each session")
bool showSessionAverage = input.bool(true, "Show average price per session")
const string TZ_TOOLTIP_TEXT = "The session's time zone, specified in either GMT notation (e.g., 'GMT-5') or as an IANA time zone database name (e.g., 'America/New_York')."
+ " We recommend the latter since it includes other time-related changes, such as daylight savings."
const string FIRST_SESSION_GROUP = "First Session"
showFirst = input.bool(true, "Show session", group = FIRST_SESSION_GROUP, display = display.none)
firstSessionName = input.string("Tokyo", "Displayed name", group = FIRST_SESSION_GROUP, display = display.none)
firstSessionTime = input.session("0900-1500", "Session time", group = FIRST_SESSION_GROUP, display = display.none)
firstSessionTZ = input.string("Asia/Tokyo", "Session timezone", group = FIRST_SESSION_GROUP, display = display.none, tooltip = TZ_TOOLTIP_TEXT)
firstSessionColor = input.color(color.new(#2962FF, 85), "Session color", group = FIRST_SESSION_GROUP)
const string SECOND_SESSION_GROUP = "Second session"
showSecond = input.bool(true, "Show session", group = SECOND_SESSION_GROUP, display = display.none)
secondSessionName = input.string("London", "Displayed name", group = SECOND_SESSION_GROUP, display = display.none)
secondSessionTime = input.session("0830-1630", "Session time", group = SECOND_SESSION_GROUP, display = display.none)
secondSessionTZ = input.string("Europe/London", "Session timezone", group = SECOND_SESSION_GROUP, display = display.none, tooltip = TZ_TOOLTIP_TEXT)
secondSessionColor = input.color(color.new(#FF9800, 85), "Session color", group = SECOND_SESSION_GROUP)
const string THIRD_SESSION_GROUP = "Third session"
showThird = input.bool(true, "Show session", group = THIRD_SESSION_GROUP, display = display.none)
thirdSessionName = input.string("New York", "Displayed name", group = THIRD_SESSION_GROUP, display = display.none)
thirdSessionTime = input.session("0930-1600", "Session time", group = THIRD_SESSION_GROUP, display = display.none)
thirdSessionTZ = input.string("America/New_York", "Session timezone", group = THIRD_SESSION_GROUP, display = display.none, tooltip = TZ_TOOLTIP_TEXT)
thirdSessionColor = input.color(color.new(#089981, 85), "Session color", group = THIRD_SESSION_GROUP)
type SessionDisplay
box sessionBox
label sessionLabel
line openLine
line avgLine
line closeLine
float sumClose
int numOfBars
type SessionInfo
color color
string name
string session
string timezone
SessionDisplay active = na
method setName(SessionDisplay this, string name) =>
sessionLabel = this.sessionLabel
sessionBox = this.sessionBox
boxText = array.new()
if showSessionTickRange
boxText.push("Range: " + str.tostring((sessionBox.get_top() - sessionBox.get_bottom()) / syminfo.mintick, format.mintick))
if showSessionAverage
boxText.push("Avg: " + str.tostring(this.sumClose / this.numOfBars, format.mintick))
if showSessionNames
boxText.push(name)
sessionLabel.set_y(sessionBox.get_bottom())
sessionLabel.set_text(array.join(boxText, " "))
method createSessionDisplay(SessionInfo this) =>
boxColor = this.color
opaqueColor = color.new(boxColor, 0)
dis = SessionDisplay.new(
sessionBox = box.new(bar_index, high, bar_index, low, bgcolor = boxColor, border_color = na),
sessionLabel = label.new(bar_index, low, "", style = label.style_label_upper_left, textalign = text.align_left, textcolor = opaqueColor, color = color(na)),
openLine = showSessionOC ? line.new(bar_index, open, bar_index, open, color = opaqueColor, style = line.style_dashed, width = 1) : na,
closeLine = showSessionOC ? line.new(bar_index, close, bar_index, close, color = opaqueColor, style = line.style_dashed, width = 1) : na,
avgLine = showSessionAverage ? line.new(bar_index, close, bar_index, close, style = line.style_dotted, width = 2, color = opaqueColor) : na,
sumClose = close,
numOfBars = 1
)
linefill.new(dis.openLine, dis.closeLine, boxColor)
dis.setName(this.name)
this.active := dis
method updateSessionDisplay(SessionInfo this) =>
sessionDisp = this.active
sessionBox = sessionDisp.sessionBox
openLine = sessionDisp.openLine
closeLine = sessionDisp.closeLine
avgLine = sessionDisp.avgLine
sessionDisp.sumClose += close
sessionDisp.numOfBars += 1
sessionBox.set_top(math.max(sessionBox.get_top(), high))
sessionBox.set_bottom(math.min(sessionBox.get_bottom(), low))
sessionBox.set_right(bar_index)
sessionDisp.setName(this.name)
if showSessionOC
openLine.set_x2(bar_index)
closeLine.set_x2(bar_index)
closeLine.set_y1(close)
closeLine.set_y2(close)
if showSessionAverage
avgLine.set_x2(bar_index)
avg = sessionDisp.sumClose / sessionDisp.numOfBars
avgLine.set_y1(avg)
avgLine.set_y2(avg)
sessionDisp
method update(SessionInfo this) =>
bool isChange = timeframe.change("1D")
if (not na(time("", this.session, this.timezone))) // inSession
if na(this.active) or isChange
this.createSessionDisplay()
else
this.updateSessionDisplay()
else if not na(this.active)
this.active := na
getSessionInfos()=>
array sessionInfos = array.new()
if showFirst
sessionInfos.push(SessionInfo.new(firstSessionColor, firstSessionName, firstSessionTime, firstSessionTZ))
if showSecond
sessionInfos.push(SessionInfo.new(secondSessionColor, secondSessionName, secondSessionTime, secondSessionTZ))
if showThird
sessionInfos.push(SessionInfo.new(thirdSessionColor, thirdSessionName, thirdSessionTime, thirdSessionTZ))
sessionInfos
var array sessionInfos = getSessionInfos()
if timeframe.isdwm
runtime.error("This indicator can only be used on intraday timeframes.")
for info in sessionInfos
info.update()
RUDWAN OSMAN MUHUMED redsco trader
this indicator will help you to use ema 9 and ema 20 together with one indicator.
CCI + MACD Signal MTF (2nd-cross)This custom indicator combines the Commodity Channel Index (CCI) and the MACD to generate trading signals.
Basic signals (dots):
A green dot is plotted when CCI is above +100 and MACD is positive.
A red dot is plotted when CCI is below –100 and MACD is negative.
These dots help visualize momentum alignment between the two indicators.
Second-cross signals (text + alert):
The indicator also tracks cycles of the CCI.
When CCI first moves above +100 and later falls back below +100, this is counted as one completed cycle.
The next time CCI crosses back above +100 (the second cross), if MACD is still positive, a “BUY” label is plotted and a buy alert is triggered.
Conversely, when CCI first moves below –100 and later rises back above –100, that is one completed cycle.
The next time CCI crosses back below –100 (the second cross), if MACD is negative, a “SELL” label is plotted and a sell alert is triggered.
Alerts:
Alerts are only fired on the second-cross events (BUY or SELL), making them rarer but potentially more reliable than the basic dot conditions.
Timeframe flexibility:
Both the CCI and the MACD can be calculated on custom timeframes independently of the chart’s timeframe.
CCI + MACD Signal MTF (2nd-cross)This custom indicator combines the Commodity Channel Index (CCI) and the MACD to generate trading signals.
Basic signals (dots):
A green dot is plotted when CCI is above +100 and MACD is positive.
A red dot is plotted when CCI is below –100 and MACD is negative.
These dots help visualize momentum alignment between the two indicators.
Second-cross signals (text + alert):
The indicator also tracks cycles of the CCI.
When CCI first moves above +100 and later falls back below +100, this is counted as one completed cycle.
The next time CCI crosses back above +100 (the second cross), if MACD is still positive, a “BUY” label is plotted and a buy alert is triggered.
Conversely, when CCI first moves below –100 and later rises back above –100, that is one completed cycle.
The next time CCI crosses back below –100 (the second cross), if MACD is negative, a “SELL” label is plotted and a sell alert is triggered.
Alerts:
Alerts are only fired on the second-cross events (BUY or SELL), making them rarer but potentially more reliable than the basic dot conditions.
Timeframe flexibility:
Both the CCI and the MACD can be calculated on custom timeframes independently of the chart’s timeframe.
fartbombLinReg fit (history): solid line showing the best-fit linear trend over the last len bars.
Projected offset (visual): same line shifted h bars right so you can see direction.
Future projection (segments): the actual next-h forecast, drawn from the last bar.
Forecast made h bars ago: circle at each bar’s target showing what was predicted h bars earlier.
H / X markers: a hit if that earlier forecast fell inside the bar’s high–low range.
A1 By Gadirov Reversal T L S - POST (Optimized) for binary By Gadirov Reversal T L S - POST (Optimized) for binary 1 minute
Investorjordann - Script I have developed a script for the BTC pair. I'm currently trialing this...it is using multiple indicators and timeframes to trigger a trade. So far it seems very profitable across many timeframes, but I am still trailing.
EMAs Personalizáveis (até 5)📘 Indicator Explanation – Customizable EMAs (up to 5)
This indicator was developed in Pine Script v6 to make it easier to visualize multiple Exponential Moving Averages (EMAs) on a single chart.
🔑 Main features:
Supports up to 5 different EMAs.
Ability to enable or disable each EMA individually.
Fully customizable period for each EMA.
Flexible color selection for better visual organization.
Adjustable line thickness to highlight the most relevant levels.
📌 How to use:
Open the indicator settings.
Select which EMAs you want to display (from 1 to 5).
Define the period (e.g., 20, 50, 100, 200, etc.).
Choose a color for each EMA.
Observe price behavior relative to the EMAs to identify:
Trends → price above long EMAs indicates bullish strength.
Reversals → EMA crossovers may signal a change in direction.
Dynamic support and resistance → EMAs often act as reaction zones for price.
💡 Practical example:
Short EMA (20) → shows short-term movement.
Mid-term EMA (50 or 100) → confirms trend direction.
Long EMA (200 or 500) → indicates the overall market trend.
👉 This indicator is flexible and can be used for scalping, swing trading, or position trading, depending on the chosen periods.
XAUUSD CSI+RSI+Delta (15m)XAUUSD 15m
Candle Stability Index: 0.4
RSI Index: 80
Candle Delta Length: 6
Disable Repeating Signals: Enabled
CCI vs Two EMAs + Trendlines + Breakout HighlightPerfect indicator which analyzes the cci4000 & 2 EMAS.
Williams Accelerator Oscillator — ACWhat it is
The Accelerator Oscillator (AC) measures the acceleration/deceleration of momentum. It’s derived from the Awesome Oscillator (AO) and shows whether momentum is speeding up or slowing down. In this implementation, columns are green when AC rises vs. the previous bar and red when it falls.
How it’s calculated
Price source: Median Price (HL2) by default; Close can be used instead.
AO = SMA(HL2, fastLen) − SMA(HL2, slowLen) (defaults: 5 & 34).
AC = AO − SMA(AO, signalLen) (default: 5).
Coloring: Green if AC > AC , else Red.
Zero line (optional) helps contextualize acceleration around neutral.
How to read it (typical interpretation)
Above 0: Upside acceleration (bullish pressure increasing).
Below 0: Downside acceleration (bearish pressure increasing).
Color sequences: Consecutive green columns suggest increasing upside acceleration; consecutive red columns suggest increasing downside acceleration.
Note: AC reflects change in momentum, not trend direction by itself. Many traders confirm with trend filters or price structure before acting.
Inputs
AO Fast SMA (default 5)
AO Slow SMA (default 34)
AC Signal SMA (default 5) — smoothing for the AO used in AC calc
Use Median Price (HL2) for AO (on/off)
Show zero line (on/off)
Show AO (for reference) (on/off)
Show AC signal (SMA of AO) (on/off)
Plots
AC Histogram — column chart colored by acceleration (green/red).
Zero — optional baseline at 0.
AO — optional reference line.
AO Signal (SMA) — optional smoothing line of AO.
Alerts
AC crosses above 0 — acceleration flips positive.
AC crosses below 0 — acceleration flips negative.
AC green above zero — AC rising and > 0.
AC red below zero — AC falling and < 0.
Usage tips
On lower timeframes, consider a slightly larger signalLen to reduce noise.
Confirm with price action, trend filters, or volatility context.
Values update intrabar; for stricter signals, confirm on bar close.
Limitations
AC is built from moving averages and is therefore lagging relative to raw price.
It is not normalized; behavior can vary by instrument and timeframe.
Do not use in isolation for entries/exits without risk management.
Credits
Concept by Bill Williams. This script is an independent implementation for educational and research purposes.
Disclaimer
No financial advice. Markets involve risk; test thoroughly before live use.
Volume Profile Bar-Magnified Order Blocks [JacobMagleby]djfkudfudgfdsfhdcjdgcgbkdcjbfsdhgfhgignhdghklgdlgdkgnhdghnfjknvlskvmjldkvmjlkfgmjlfgvjljm
No Wick 15m Candles (Anchored Arrows)defined upArrow and downArrow as series values (high or low when conditions are true, otherwise na).
Passed those to plotshape().
This way the arrows are anchored exactly on the candle high/low.
FU + SMI Validator (Proper FU, 30m)Overview
The FU + SMI Validator is a sophisticated technical analysis indicator designed to detect Proper FU (Fakeouts or Liquidity Sweeps) on the 30-minute timeframe. This tool aims to help traders identify high-probability reversal setups that occur when price briefly breaks key levels (sweeping liquidity), then reverses with momentum confirmation.
Fakeouts are common market events where price action “hunts stops” before reversing direction. Correctly identifying these events can offer excellent entry points with defined risk. This indicator combines price action logic with momentum and volatility filters to provide reliable signals.
Core Concepts
Proper FU (Fakeout) Detection
At its core, the script identifies proper fakeouts by checking if the current bar’s price:
For bullish fakeouts: dips below the previous bar’s low (sweeping stops) and then closes above the previous bar’s high
For bearish fakeouts: spikes above the previous bar’s high and then closes below the previous bar’s low
This ensures that the breakout is a true sweep rather than just a one-sided close.
Optionally, the script can require one additional confirmation bar after the FU, ensuring that the momentum is sustained and reducing false signals.
SMI-style Momentum Validation
To improve the quality of signals, the indicator uses a proxy for the Stochastic Momentum Index (SMI) by calculating the difference between current and past linear regression slopes of price. This momentum check helps ensure that fakeouts occur alongside actual directional strength.
Key points:
Momentum must be increasing in the direction of the FU signal.
Momentum filters can be enabled or disabled based on user preference.
Squeeze Condition to Avoid Low-Volatility Traps
The script includes a volatility filter based on a squeeze-like condition:
It compares Bollinger Bands (BB) and Keltner Channels (KC).
When BB bands contract inside KC bands, the market is in a squeeze state, signaling low volatility.
Fakeouts during squeeze conditions are often unreliable; the script can filter these out to reduce false alarms.
Killzone Session Timing Filter
Recognizing that liquidity and volatility vary by session, this tool supports optional filtering for:
London Killzone: 09:00 to 10:30 (UK time)
New York Killzone: 13:00 to 14:30 (UK time)
Signals only trigger during these high-activity windows if enabled, helping traders focus on periods with the best liquidity and market participation.
Note: For Killzone filtering to work accurately, your TradingView chart must be set to the UK timezone.
Features & Benefits
Robust FU detection ensures the breakout price action is meaningful, reducing noise.
Momentum filter via linear regression slope captures trend strength in a smooth, mathematically sound way.
Low-volatility squeeze avoidance helps reduce false signals in choppy or range-bound markets.
Killzone timing filter focuses your attention on the most liquid and active market hours.
Optional confirmation bar increases signal reliability.
Raw FU markers allow visualization of all detected fakeouts for pattern recognition and manual analysis.
Alerts built-in for both valid buy and sell FU setups, enabling real-time notification and quicker decision-making.
Customization Options
Killzone usage: Enable or disable the session timing filter.
Sessions: Configure London and New York killzone time ranges.
Momentum alignment: Enable or disable momentum filter based on SMI proxy.
Volatility filter: Avoid signals during squeeze or low-volatility conditions.
FU confirmation: Option to require one additional confirming candle after the initial FU.
Squeeze and momentum parameters: Adjust Bollinger Bands length and multiplier, Keltner Channel length and ATR multiplier.
Raw FU markers: Show or hide all detected fakeouts regardless of filters.
How to Use This Indicator
Apply to 30-minute charts for forex pairs, indices, cryptocurrencies, or other instruments.
Set your chart timezone to UK time if using Killzone filters.
Adjust input parameters based on your preferred sessions and risk tolerance.
Look for green “VALID BUY FU” labels below bars for bullish fakeout entries.
Look for red “VALID SELL FU” labels above bars for bearish fakeout entries.
Use the alert system to receive notifications on setups.
Combine with your existing analysis or risk management strategy for entries, stops, and profit targets.
Why Use FU + SMI Validator?
Fakeouts are some of the most lucrative but tricky setups for many traders. Without proper filters, they can lead to false entries and losses. This script integrates price action, momentum, volatility, and session timing into one package, providing a robust tool to spot high-quality fakeout opportunities and improve trading confidence.
Limitations
Requires chart to be set to UK timezone for session filters.
Designed specifically for 30-minute timeframe — performance on other timeframes may vary.
Momentum is a proxy, not a direct SMI calculation.
Like all indicators, best used in conjunction with sound risk management and other analysis tools.
Potential Enhancements
Conversion into a full strategy script for backtesting entries and exits.
Addition of other momentum indicators (RSI, MACD) or volume filters.
Customizable time zones or auto time zone detection.
Multi-timeframe analysis capabilities.
Visual dashboard for summary of signal stats.