MA Crossover StrategyMA Crossover Strategy
This script implements a Simple Moving Average (SMA) crossover strategy, a widely used technique in trend-following trading systems. It helps traders identify potential buy and sell opportunities based on the relationship between two moving averages:
A fast-moving average (default: 9-period SMA)
A slow-moving average (default: 21-period SMA)
How It Works
Buy Signal (Long Entry): A long position is opened when the fast-moving average crosses above the slow-moving average. This suggests an uptrend is forming.
Exit Signal: The position is closed when the fast-moving average crosses below the slow-moving average, indicating a possible trend reversal.
Why This Script is Useful
Simple Yet Effective: Moving average crossovers are a core concept in technical analysis, providing a structured approach to identifying trends.
Customizable: Traders can modify the fast and slow MA lengths to suit different market conditions.
Visualization: The script plots the fast MA in blue and the slow MA in red, making crossovers easy to spot.
Automated Execution: It can be used as a strategy to backtest performance or automate trades in TradingView.
This script is ideal for traders looking for a straightforward trend-following strategy, whether they trade stocks, forex, or crypto.
Candlestick analysis
Nifty Support-Resistance Breakout (Nomaan Shaikh) The Nifty Support-Resistance Breakout Indicator is a powerful tool designed for traders to identify key support and resistance levels on the Nifty index chart and detect potential breakout opportunities. This indicator automates the process of plotting dynamic support and resistance levels based on historical price action and provides clear visual signals when a breakout occurs. It is ideal for traders who rely on technical analysis to make informed trading decisions.
DOM-KARTIKThis Pine Script indicator, titled "Advanced Smart Money Tracker", is designed to analyze market activity and identify key patterns related to volume spikes, stop hunts, and potential retail traps. It leverages advanced volume and price action analysis to give traders insights into possible fake breakouts or market manipulations.
AKR - BajajFinServ Buy/Sell Alerts on Previous High/LowThis indicator will work on BajajFinserv script. It will give buy or sell signal based on prev day high and low.
Bullish Candlestick Patterns for NQ 1minIdentifies and plots specific bullish candlestick patterns on a 1-minute chart of the NQ (Nasdaq 100 futures) market. Here's a breakdown of what the script does:
What This Script Does
This script scans the 1-minute NQ chart for specific bullish candlestick patterns and visually highlights them on the chart. Traders can use this indicator to quickly identify potential bullish reversal signals and make trading decisions accordingly.
How to Use
Add this script to a 1-minute NQ chart on TradingView.
Customize the input parameters (e.g., hammerWickRatio, engulfingBodyRatio) if needed.
Look for the labeled patterns on the chart to identify potential bullish opportunities.
Midnight range DeviationsScript Title: Midnight Range Deviations
Overview
This Pine Script (written in version 6) is designed to plot a “midnight range” on a chart based on price action from midnight to 00:30 (local exchange time in America/New_York by default). After determining the High, Low, and Midpoint during that half-hour window, the script extends those levels to a specified future time (by default, up to 6:00 AM). Additionally, the script can draw optional Fibonacci deviation lines above and below the range. Users can customize a variety of visual and functional parameters, including the number of historical ranges shown, colors for each line, the presence of labels, Fibonacci levels, and more.
Sadosi Gap SelecterThis indicator is designed to be used on daily charts. Please note that it will not work with weekly or hourly data.
The Sadosi Gap Selecter is a powerful indicator designed to identify price gaps that occur between specific dates on the chart. It allows users to easily analyze price movements between selected weeks and days, highlighting these periods with visual boxes. This helps traders spot potential trend reversals and key price levels more effectively. It’s particularly valuable for those utilizing gap trading strategies to identify market inefficiencies.
The core functionality of this indicator is based on detecting price differences between two selected days within a defined date range. With the Start Day (day1) and End Day (day2) options, you can choose the exact days of the week you’d like to analyze. For instance, if you want to focus on price movements from Friday to Monday, simply select those days. Additionally, the Start Week (week1) and End Week (week2) settings allow you to narrow down the time frame on a weekly basis, making it easy to analyze price behavior during specific periods of the year.
For visual customization, several options are available. The Color (renk) setting lets you choose between red and yellow for the highlighted boxes. The Transparency (op) control adjusts the background opacity from 0% (fully opaque) to 100% (completely transparent), allowing you to manage how prominently the boxes appear on your chart. Furthermore, the Border (hat) option enables you to add or remove borders around the boxes, helping reduce visual clutter or emphasize certain areas depending on your preference.
Once applied to the chart, the indicator automatically generates boxes for the specified date ranges. The upper and lower bounds of each box are determined based on the price movement within that period, providing insights into the direction and strength of the trend. However, this tool does not generate definitive buy or sell signals on its own. It is recommended to use it alongside other technical analysis tools to make more informed trading decisions.
With the Sadosi Gap Selecter, you can gain clearer insights into price behavior, strengthen your trend analyses using historical data, and fully customize the settings to match your trading style for more effective results.
This indicator is designed to be used on daily charts. Please note that it will not work with weekly or hourly data
Algoman Oscillator//@version = 5
indicator(shorttitle='Algoman Oscillator', title='Algoman Oscillator', overlay=false)
n1 = input(10, 'Channel length')
n2 = input(21, 'Average length')
reaction_wt = input.int(defval=1, title='Reaction in change of direction', minval=1)
nsc = input.float(53, 'Levels About Buys', minval=0.0)
nsv = input.float(-53, 'Levels About Sells', maxval=-0.0)
Buy_sales = input(true, title='Only Smart Buy Reversal')
Sell_sales = input(true, title='Only Smart Sell Reversal')
Histogram = input(true, title='Show Histogarm')
//Trendx = input(false, title='Show Trendx')
barras = input(true, title='Divergence on chart(Bars)')
divregbull = input(true, title='Regular Divergence Bullish')
divregbear = input(true, title='Regular Divergence Bearish')
divhidbull = input(true, title='Show Divergence Hidden Bullish')
divhidbear = input(true, title='Show Divergence Hidden Bearish')
Tags = input(true, title='Show Divergence Lable')
amme = input(false, title='Activar media movil Extra para WT')
White = #FDFEFE
Black = #000000
Bearish = #e91e62
Bullish = #18e0ff
Strong_Bullish = #2962ff
Bullish2 = #00bedc
Blue1 = #00D4FF
Blue2 = #009BBA
orange = #FF8B00
yellow = #FFFB00
LEZ = #0066FF
purp = #FF33CC
// Colouring
tf(_res, _exp, gaps_on) =>
gaps_on == 0 ? request.security(syminfo.tickerid, _res, _exp) : gaps_on == true ? request.security(syminfo.tickerid, _res, _exp, barmerge.gaps_on, barmerge.lookahead_off) : request.security(syminfo.tickerid, _res, _exp, barmerge.gaps_off, barmerge.lookahead_off)
ha_htf = ''
show_ha = input.bool(true, "Show HA Plot/ Market Bias", group="HA Market Bias")
ha_len = input(7, 'Period', group="HA Market Bias")
ha_len2 = input(10, 'Smoothing', group="HA Market Bias")
// Calculations {
o = ta.ema(open, ha_len)
c = ta.ema(close, ha_len)
h = ta.ema(high, ha_len)
l = ta.ema(low, ha_len)
haclose = tf(ha_htf, (o + h + l + c) / 4, 0)
xhaopen = tf(ha_htf, (o + c) / 2, 0)
haopen = na(xhaopen ) ? (o + c) / 2 : (xhaopen + haclose ) / 2
hahigh = math.max(h, math.max(haopen, haclose))
halow = math.min(l, math.min(haopen, haclose))
o2 = tf(ha_htf, ta.ema(haopen, ha_len2), 0)
c2 = tf(ha_htf, ta.ema(haclose, ha_len2), 0)
h2 = tf(ha_htf, ta.ema(hahigh, ha_len2), 0)
l2 = tf(ha_htf, ta.ema(halow, ha_len2), 0)
ha_avg = (h2 + l2) / 2
// }
osc_len = 8
osc_bias = 100 *(c2 - o2)
osc_smooth = ta.ema(osc_bias, osc_len)
sigcolor =
(osc_bias > 0) and (osc_bias >= osc_smooth) ? color.new(Bullish, 35) :
(osc_bias > 0) and (osc_bias < osc_smooth) ? color.new(Bullish2, 75) :
(osc_bias < 0) and (osc_bias <= osc_smooth) ? color.new(Bearish, 35) :
(osc_bias < 0) and (osc_bias > osc_smooth) ? color.new(Bearish, 75) :
na
// }
nsc1 = nsc
nsc2 = nsc + 5
nsc3 = nsc + 10
nsc4 = nsc + 15
nsc5 = nsc + 20
nsc6 = nsc + 25
nsc7 = nsc + 30
nsc8 = nsc + 35
nsv1 = nsv - 5
nsv2 = nsv - 10
nsv3 = nsv - 15
nsv4 = nsv - 20
nsv5 = nsv - 25
nsv6 = nsv - 30
nsv7 = nsv - 35
nsv8 = nsv - 40
ap = hlc3
esa = ta.ema(ap, n1)
d = ta.ema(math.abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ta.ema(ci, n2)
wt1 = tci
wt2 = ta.sma(wt1, 4)
direction = 0
direction := ta.rising(wt1, reaction_wt) ? 1 : ta.falling(wt1, reaction_wt) ? -1 : nz(direction )
Change_of_direction = ta.change(direction, 1)
pcol = direction > 0 ? Strong_Bullish : direction < 0 ? Bearish : na
obLevel1 = input(60, 'Over Bought Level 1')
obLevel2 = input(53, 'Over Bought Level 2')
osLevel1 = input(-60, 'Over Sold Level 1')
osLevel2 = input(-53, 'Over Sold Level 2')
rsi = ta.rsi(close,14)
color greengrad = color.from_gradient(rsi, 10, 90, #00ddff, #007d91)
color redgrad = color.from_gradient(rsi, 10, 90, #8b002e, #e91e62)
ob1 = plot(obLevel1, color=#e91e6301)
os1 = plot(osLevel1, color=#00dbff01)
ob2 = plot(obLevel2, color=#e91e6301)
os2 = plot(osLevel2, color=#00dbff01)
p1 = plot(wt1, color=#00dbff01)
p2 = plot(wt2, color=#e91e6301)
plot(wt1 - wt2, color=wt2 - wt1 > 0 ? redgrad : greengrad, style=plot.style_columns)
// fill(p1,p2,color = wt2 - wt1 > 0 ? redgrad: greengrad) // old
fill(p1,p2,color = sigcolor) // new
fill(ob1,ob2,color = #e91e6350)
fill(os1,os2,color = #00dbff50)
midpoint = (nsc + nsv) / 2
ploff = (nsc - midpoint) / 8
BullSale = ta.crossunder(wt1, wt2) and wt1 >= nsc and Buy_sales == true
BearSale = ta.crossunder(wt1, wt2) and Buy_sales == false
Bullishh = ta.crossover(wt1, wt2) and wt1 <= nsv and Sell_sales == true
Bearishh = ta.crossover(wt1, wt2) and Sell_sales == false
plot(BullSale ? wt2 + ploff : na, style=plot.style_circles, color=color.new(Bearish, 0), linewidth=3, title='BuysG')
plot(BearSale ? wt2 + ploff : na, style=plot.style_circles, color=color.new(Bearish, 0), linewidth=3, title='SellsG')
plot(Bullishh ? wt2 - ploff : na, style=plot.style_circles, color=color.new(Strong_Bullish, 0), linewidth=3, title='Buys On Sale')
plot(Bearishh ? wt2 - ploff : na, style=plot.style_circles, color=color.new(Strong_Bullish, 0), linewidth=3, title='Sells on Sale')
plot(Histogram ? wt1 - wt2 : na, style=plot.style_area, color=color.new(Blue2, 80), linewidth=1, title='Histograma')
barcolor(barras == true and Bullishh == true or barras == true and Bearishh == true ? Bullish2 : na)
barcolor(barras == true and BullSale == true or barras == true and BearSale == true ? Bearish : na)
/////// Divergence ///////
f_top_fractal(_src) =>
_src < _src and _src < _src and _src > _src and _src > _src
f_bot_fractal(_src) =>
_src > _src and _src > _src and _src < _src and _src < _src
f_fractalize(_src) =>
f_top_fractal(_src) ? 1 : f_bot_fractal(_src) ? -1 : 0
fractal_top1 = f_fractalize(wt1) > 0 ? wt1 : na
fractal_bot1 = f_fractalize(wt1) < 0 ? wt1 : na
high_prev1 = ta.valuewhen(fractal_top1, wt1 , 0)
high_price1 = ta.valuewhen(fractal_top1, high , 0)
low_prev1 = ta.valuewhen(fractal_bot1, wt1 , 0)
low_price1 = ta.valuewhen(fractal_bot1, low , 0)
regular_bearish_div1 = fractal_top1 and high > high_price1 and wt1 < high_prev1 and divregbear == true
hidden_bearish_div1 = fractal_top1 and high < high_price1 and wt1 > high_prev1 and divhidbear == true
regular_bullish_div1 = fractal_bot1 and low < low_price1 and wt1 > low_prev1 and divregbull == true
hidden_bullish_div1 = fractal_bot1 and low > low_price1 and wt1 < low_prev1 and divhidbull == true
col1 = regular_bearish_div1 ? Bearish : hidden_bearish_div1 ? Bearish : na
col2 = regular_bullish_div1 ? Strong_Bullish : hidden_bullish_div1 ? Strong_Bullish : na
plot(title='Divergence Bearish', series=fractal_top1 ? wt1 : na, color=col1, linewidth=2, transp=0)
plot(title='Divergence Bullish', series=fractal_bot1 ? wt1 : na, color=col2, linewidth=2, transp=0)
plotshape(regular_bearish_div1 and divregbear and Tags ? wt1 + ploff * 1 : na, title='Divergence Regular Bearish', text='Bear', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(Bearish, 0), textcolor=color.new(White, 0))
plotshape(hidden_bearish_div1 and divhidbear and Tags ? wt1 + ploff * 1 : na, title='Divergence Hidden Bearish', text='H Bear', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(Bearish, 0), textcolor=color.new(White, 0))
plotshape(regular_bullish_div1 and divregbull and Tags ? wt1 - ploff * 1 : na, title='Divergence Regular Bullish', text='Bull', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(Strong_Bullish, 0), textcolor=color.new(White, 0))
plotshape(hidden_bullish_div1 and divhidbull and Tags ? wt1 - ploff * 1 : na, title='Divergence Hidden Bullish', text='H Bull', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(Strong_Bullish, 0), textcolor=color.new(White, 0))
/////// Unfazed Alerts //////
alertcondition(BullSale, title='Smart Bullish Reversal')
alertcondition(BearSale, title='Smart Bearish Reversal')
alertcondition(Bullishh, title='Bullish Reversal')
alertcondition(Bearishh, title='Bearish Reversal')
alertcondition(BullSale or Bullishh, title='Any Bullish reversal')
alertcondition(BearSale or Bearishh, title='Any Bearish Reversal')
alertcondition(Change_of_direction, title='Change In Direction WT')
/////// Extra Alerts //////
alertcondition(BullSale, title='Overbought Reversal')
alertcondition(BearSale, title='All Reversal')
alertcondition(Bullishh, title='Oversold Buys')
alertcondition(Bearishh, title='All Buys')
alertcondition(BullSale or Bullishh, title='Buys/Reversal Overbought/Oversold')
alertcondition(BearSale or Bearishh, title='All Reversal/Buys')
alertcondition(Change_of_direction, title='WT Direction Change')
////////////////////////////////////////////////-MISTERMOTA MOMENTUM-/////////////////////////////////////
source = input(close)
responsiveness = math.max(0.00001, input.float(0.9, minval=0.0, maxval=1.0))
periodd = input(50)
sd = ta.stdev(source, 50) * responsiveness
var worm = source
diff = source - worm
delta = math.abs(diff) > sd ? math.sign(diff) * sd : diff
worm += delta
ma = ta.sma(source, periodd)
raw_momentum = (worm - ma) / worm
current_med = raw_momentum
min_med = ta.lowest(current_med, periodd)
max_med = ta.highest(current_med, periodd)
temp = (current_med - min_med) / (max_med - min_med)
value = 0.5 * 2
value *= (temp - .5 + .5 * nz(value ))
value := value > .9999 ? .9999 : value
value := value < -0.9999 ? -0.9999 : value
temp2 = (1 + value) / (1 - value)
momentum = .25 * math.log(temp2)
momentum += .5 * nz(momentum )
//momentum := raw_momentum
signal = nz(momentum )
trend = math.abs(momentum) <= math.abs(momentum )
////////////////////////////////////////////////-GROWING/FAILING-//////////////////////////////////////////
length = input.int(title="MOM Period", minval=1, defval=14, group="MOM Settings")
src = input(title="MOM Source", defval=hlc3, group="MOM Settings")
txtcol_grow_above = input(#1a7b24, "Above Grow", group="MOM Settings", inline="Above")
txtcol_fall_above = input(#672ec5, "Fall", group="MOM Settings", inline="Above")
txtcol_grow_below = input(#F37121, "Below Grow", group="MOM Settings", inline="Below")
txtcol_fall_below = input(#be0606, "Fall", group="MOM Settings", inline="Below")
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
typeMA = input.string(title = "Method", defval = "SMA", options= , group="MA Settings")
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="MA Settings")
smoothingLine = ma(delta, smoothingLength, typeMA)
deltaText=(delta > 0 ? (delta > delta ? " MOM > 0 and ? Growing, MOM = " + str.tostring(delta , "#.##") :" MOM > 0 and ? Falling, MOM = " + str.tostring(delta , "#.##") ) : (delta > delta ? "MOM < 0 and ? Growing, MOM = " + str.tostring(delta , "#.##"): " MOM < 0 and ? Falling, MOM = " + str.tostring(delta , "#.##")))
oneDay = 24 * 60 * 60 * 1000
barsAhead = 3
tmf = if timeframe.ismonthly
barsAhead * oneDay * 30
else if timeframe.isweekly
barsAhead * oneDay * 7
else if timeframe.isdaily
barsAhead * oneDay
else if timeframe.isminutes
barsAhead * oneDay * timeframe.multiplier / 1440
else if timeframe.isseconds
barsAhead * oneDay * timeframe.multiplier / 86400
else
0
angle(_src) =>
rad2degree = 180 / 3.14159265359 //pi
ang = rad2degree * math.atan((_src - _src ) / ta.atr(14))
ang
emae = angle(smoothingLine)
emaanglestat = emae > emae ? "? Growing": "? Falling"
deltaTextxxx = "MOM MA/ATR angle value is " + str.tostring(emae, "#.##") + "° and is " + emaanglestat
deltacolorxxx = emae >0 and emae >=emae ? txtcol_grow_above : txtcol_fall_below
// Label
label lpt1 = label.new(time, -30, text=deltaTextxxx , color=deltacolorxxx, xloc=xloc.bar_time, style=label.style_label_left, textcolor=color.white, textalign=text.align_left, size=size.normal)
label.set_x(lpt1, label.get_x(lpt1) + tmf)
label.delete(lpt1 )
txtdeltaColors = (delta > 50 ? (delta < delta ? txtcol_grow_above : txtcol_fall_above) : (delta < delta ? txtcol_grow_below : txtcol_fall_below))
label ldelta1 = label.new(time, 30, text=deltaText , color=txtdeltaColors, xloc=xloc.bar_time, style=label.style_label_left, textcolor=color.white, textalign=text.align_left, size=size.normal)
label.set_x(ldelta1, label.get_x(ldelta1) + tmf)
label.delete(ldelta1 )
8EMA/VWAP ReversalThis indicator helps mark out potenital areas of reversals in the market. Still a work in progress but best used using the 5m timeframe and on funds(SPY, QQQ, RTY)
EMA Trend Dashboard//@version=6
indicator("Line Extension Example", overlay=true)
// Kullanıcı girişi
extendLeftInput = input.bool(false, title="Extend Left", group="Line Settings")
extendRightInput = input.bool(true, title="Extend Right", group="Line Settings")
// extendStyle için durum belirleyicisi
extendStyle = switch
extendLeftInput and extendRightInput => extend.both
extendLeftInput => extend.left
extendRightInput => extend.right
=> extend.none
// Slope hesaplaması ve çizgiyi oluşturma
startPrice = 1000
endPrice = 1050
lengthInput = 20
baseLine := line.new(bar_index - lengthInput + 1, startPrice, bar_index, endPrice, width=1, extend=extendStyle, color=color.new(color.blue, 0))
Adaptive Volatility Zones + MACD + RSI Strategy#### Strategy Overview:
This strategy is designed for trading on higher timeframes (from 4 hours and above) and combines several modern approaches to market analysis. It uses adaptive levels based on volatility, MACD and RSI indicators to confirm signals, and a trend filter (EMA 200). The strategy is optimized to work in trending market conditions and minimizes the number of false signals due to multi-layer filtering.
4 SMA's and Volume signsthis script aims to show the main candles which cross the SMA with it is Volume. this is for advanced analysis. you can use it to enhance the strategies
Forex Prince by Prince 1Greetings Friends,
Disclaimer: This is not financial advice or a trading recommendation. The information provided is for educational purposes only. Always conduct your own research and consult with a qualified financial advisor before making any investment decisions. Trade at your own risk. 📊📉📈
Xsson Markets ChecklistA checklist with your trading plan, edit is a you want and become your own accountability partner.
EMA Crossover Strategy with Stop LossEMA Crossover Strategy with Stop Loss
### Explanation:
1. *Heikin-Ashi Candles*: The script uses Heikin-Ashi candles for the 1-hour timeframe.
2. *EMAs*: It calculates the 9-period EMA and the 26-period EMA.
3. *Entry Conditions*: A trade is entered when the 9 EMA crosses above the 26 EMA (long) or below the 26 EMA (short).
4. *Stop Loss*: The stop loss is calculated as the highest price of the last 8-10 candles for long trades and the lowest price for short trades.
5. *Exit Conditions*: The trade is exited if the opposite crossover occurs or if the stop loss level is hit.
6. *Labels*: Labels are added to the chart to indicate entry and exit points.
ML-Based BankNifty Strategy//@version=5
strategy("ML-Based BankNifty Strategy", overlay=true)
// Simulated ML Signal (Replace with Webhook Integration)
ml_signal = input.bool(true, "ML Buy Signal")
// Trade Execution Based on ML Prediction
if (ml_signal)
strategy.entry("Long", strategy.long)
strategy.exit("Take Profit", from_entry="Long", limit=close * 1.02, stop=close * 0.98)
Highest Price MarkerHighest Price Marker – Smart Label & Line Indicator
This Pine Script v5 indicator highlights the highest price reached within the last 100 bars on your chart. It visually enhances key price levels by:
✅ Placing a label at the highest price, positioned 3 candles to the left for clarity.
✅ Drawing a line connecting the label to the actual high for better visibility.
✅ Auto-updating dynamically whenever a new highest price is detected.
This is useful for traders who want to quickly identify resistance levels or analyze historical price peaks without cluttering the chart.
🔹 How to Use:
Add the indicator to your chart.
Look for the red label marking the highest price within the last 100 bars.
The horizontal line helps track the exact price level.
💡 Customization Ideas:
Adjust the lookback period (length = 100) to detect longer or shorter trends.
Modify colors or label positioning to suit your preferences.
🚀 Perfect for:
🔸 Price Action Traders
🔸 Swing & Breakout Traders
🔸 Support & Resistance Analysis
Gavas 9 EMA, 18 EMA & 27 EMA Crossover//@version=5
indicator("9 EMA, 18 EMA & 27 EMA Crossover", overlay=true)
// Define EMAs
ema9 = ta.ema(close, 9)
ema18 = ta.ema(close, 18)
ema27 = ta.ema(close, 27)
// Crossover Conditions
bullish_crossover = ta.crossover(ema9, ema18) and ta.crossover(ema9, ema27)
bearish_crossover = ta.crossunder(ema9, ema18) and ta.crossunder(ema9, ema27)
// Plot EMAs
plot(ema9, title="9 EMA", color=color.blue, linewidth=2)
plot(ema18, title="18 EMA", color=color.orange, linewidth=2)
plot(ema27, title="27 EMA", color=color.red, linewidth=2)
// Signals & Alerts
plotshape(series=bullish_crossover, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", size=size.small)
plotshape(series=bearish_crossover, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", size=size.small)
// Alert Conditions
alertcondition(bullish_crossover, title="Buy Alert", message="Bullish Crossover: 9 EMA crossed above 18 EMA & 27 EMA")
alertcondition(bearish_crossover, title="Sell Alert", message="Bearish Crossover: 9 EMA crossed below 18 EMA & 27 EMA")
50-Point Market Move LevelsHelp me graph charts the information for the line information line for every 50 pts the market move for the last 300 days