Advanced 1-Minute Open Range Breakout IndicatorThis indicator is designed for the market on a 1-minute chart. It calculates the open range based on the first 5 minutes after the market open (09:30 – 09:35) and plots the high and low of this period as the daily resistance and support levels respectively. Additionally, the indicator displays the previous day’s high and low as blue horizontal lines, providing extra reference levels.
Trade signals are generated only during the active trading session (09:35 – 16:00). The advanced trade logic works as follows:
• For long entries:
- When the price first breaks above the open range high, the indicator enters a “breakout” state.
- If the price then retraces to (or below) the open range high, it moves to a “retest” state.
- Finally, if the price breaks above the open range high again, a long signal is issued.
• For short entries:
- When the price first breaks below the open range low, the indicator enters a “breakdown” state.
- If the price then retraces to (or above) the open range low, it moves to a “retest” state.
- Finally, if the price breaks below the open range low again, a short signal is issued.
All signals and the open range lines are only displayed during the trading session (09:35 to 16:00).
Use this indicator to help identify high-probability breakout setups in the early part of the trading day.
Jalur dan Saluran
Bollinger Bands with EMAsBollinger bands custom setting with ema.
With in band capture only trend directional trade by ema crossover or ema support. Don't capture opposit direction trade.
outside Band capture only directional trending move and reversal trade also (by checking other parameter ) with help of ema crossover changes.
Style need to adjust as per user requirement.
Auto Pivot Levels CPR1️⃣ Inputs for User Preferences
pinescript
Copy
Edit
show_daily = input(true, title="Show Daily Pivots")
show_weekly = input(true, title="Show Weekly Pivots")
show_monthly = input(true, title="Show Monthly Pivots")
Users can turn ON/OFF pivot levels for different timeframes.
2️⃣ Detects Timeframe (Auto-Switching)
pinescript
Copy
Edit
is_daily = timeframe.isintraday and timeframe.multiplier <= 15
is_weekly = timeframe.isintraday and timeframe.multiplier > 15 and timeframe.multiplier <= 75
is_monthly = not timeframe.isintraday or timeframe.multiplier > 75
Determines if the chart is intraday, weekly, or monthly.
This helps the script automatically switch between daily, weekly, and monthly pivot levels.
3️⃣ Function to Calculate Pivot Levels
pinescript
Copy
Edit
calculate_pivots(high, low, close) =>
pivot = (high + low + close) / 3
bc = (high + low) / 2
tc = (pivot - bc) + pivot
r1 = (2 * pivot) - low
s1 = (2 * pivot) - high
r2 = pivot + (high - low)
s2 = pivot - (high - low)
r3 = high + 2 * (pivot - low)
s3 = low - 2 * (high - pivot)
r4 = high + 3 * (pivot - low)
s4 = low - 3 * (high - pivot)
Uses high, low, and close prices from the previous period (day, week, month) to compute pivot levels.
Returns Pivot Point (PP), Central Pivot Range (BC, TC), 4 Resistance (R1-R4), and 4 Support (S1-S4) levels.
4️⃣ Fetching Previous Period Data
pinescript
Copy
Edit
daily_high = request.security(syminfo.tickerid, "D", high )
daily_low = request.security(syminfo.tickerid, "D", low )
daily_close = request.security(syminfo.tickerid, "D", close )
Uses request.security() to get previous day/week/month high, low, and close prices.
5️⃣ Auto-Switching Logic for Pivot Levels
pinescript
Copy
Edit
pivot = is_daily ? daily_pivot : is_weekly ? weekly_pivot : is_monthly ? monthly_pivot : na
r1 = is_daily ? daily_r1 : is_weekly ? weekly_r1 : is_monthly ? monthly_r1 : na
s1 = is_daily ? daily_s1 : is_weekly ? weekly_s1 : is_monthly ? monthly_s1 : na
Dynamically assigns the correct pivot levels based on current timeframe.
6️⃣ Plots Pivot Levels on Chart
pinescript
Copy
Edit
plot(pivot, color=color.blue, title="Pivot", linewidth=2)
plot(r1, color=color.red, title="R1", linewidth=1)
plot(s1, color=color.green, title="S1", linewidth=1)
Uses plot() to draw pivot levels, support, and resistance levels.
Color coding:
Blue → Pivot
Red → Resistance (R1–R4)
Green → Support (S1–S4)
7️⃣ Plots Previous Highs & Lows (Circles on Chart)
pinescript
Copy
Edit
plot(daily_high_plot, color=color.red, title="Previous Daily High", linewidth=2, style=plot.style_circles)
Circles mark previous high and low for daily, weekly, and monthly periods.
🎯 Final Output on TradingView Chart
✅ Auto-adjusts pivot levels based on chart timeframe
✅ Displays support & resistance levels dynamically
✅ Marks previous period highs & lows with circles
✅ Works with any intraday or higher timeframe chart
🔥 Why Use This Indicator?
✔ Automatically selects the correct pivot timeframe
✔ Saves time by avoiding manual calculations
✔ Helps traders identify key price levels for entries/exits
✔ Great for intraday, swing, and positional trading
📈 How to Find Buying & Selling Opportunities Using This Auto Pivot Levels Indicator
This Auto Pivot Levels indicator helps traders identify support & resistance zones, which can be used for buying and selling decisions.
1️⃣ Buying Opportunities (Long Trades)
✅ Buy when price is near support levels (S1, S2, S3, S4)
If the price approaches S1, S2, or S3 and shows a reversal, it’s a potential buying opportunity.
Look for bullish candlestick patterns (e.g., Hammer, Bullish Engulfing) or oscillator confirmation (e.g., RSI oversold).
✅ Buy on a breakout above pivot or resistance (Pivot, R1, R2)
If the price breaks above the Pivot with strong volume, it indicates bullish momentum.
A breakout above R1 can push the price toward R2 and R3.
🔹 Example Buy Strategy:
Buy when the price bounces from S1 or S2 with a bullish candlestick pattern.
Buy on a breakout above Pivot (PP) or R1 with strong volume.
Stop-loss (SL): Below the previous swing low or S2.
Target (TP): Next resistance level (R1, R2, R3).
2️⃣ Selling Opportunities (Short Trades)
❌ Sell when price is near resistance levels (R1, R2, R3, R4)
If the price approaches R1, R2, or R3 and fails to break, it’s a selling opportunity.
Look for bearish candlestick patterns (e.g., Shooting Star, Bearish Engulfing) or oscillator confirmation (e.g., RSI overbought).
❌ Sell on a breakdown below pivot or support
If the price breaks below the Pivot with strong volume, it indicates bearish momentum.
A breakdown below S1 can push the price toward S2 and S3.
🔹 Example Sell Strategy:
Sell when the price gets rejected from R1 or R2 with a bearish candlestick pattern.
Sell on a breakdown below Pivot (PP) or S1 with strong volume.
Stop-loss (SL): Above the previous swing high or R2.
Target (TP): Next support level (S1, S2, S3).
3️⃣ Example Trade Setups
Scenario Entry Point Stop-Loss (SL) Target (TP)
Buy at Support Bounce from S1 or S2 Below S2 R1 or Pivot
Buy Breakout Break above Pivot or R1 Below Pivot R2 or R3
Sell at Resistance Rejection at R1 or R2 Above R2 S1 or Pivot
Sell Breakdown Break below Pivot or S1 Above Pivot S2 or S3
📌 Additional Confirmation for High-Accuracy Trades
✔ RSI (Relative Strength Index):
Buy when RSI < 30 (oversold) near support.
Sell when RSI > 70 (overbought) near resistance.
✔ MACD (Moving Average Convergence Divergence):
Buy when MACD crosses above Signal Line near support.
Sell when MACD crosses below Signal Line near resistance.
✔ Volume Confirmation:
Strong buying volume at support increases the chance of reversal.
Strong selling volume at resistance confirms a potential drop.
🎯 Conclusion
Support levels (S1, S2, S3) → Potential Buy Zones
Resistance levels (R1, R2, R3) → Potential Sell Zones
Pivot Breakout → Bullish
Pivot Breakdown → Bearish
Confirm with RSI, MACD, and Volume for best results.
🚀 Using this strategy, you can trade BankNIFTY or any market effectively! Let me know if you need more custom rules. 🎯
BTC Quant Signal//@version=5
strategy("BTC Quant Signal", overlay=true)
// 策略参数
fastLength = input(50, "Fast MA Length")
slowLength = input(200, "Slow MA Length")
// 计算指标
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)
// 交易逻辑
longCondition = ta.crossover(fastMA, slowMA)
shortCondition = ta.crossunder(fastMA, slowMA)
closeCondition = strategy.position_size != 0
// 警报触发
alert_message = ""
if longCondition
alert_message := "{ \"action\": \"buy\", \"symbol\": \"BTCUSDT\", \"price\": " + str.tostring(close) + " }"
if shortCondition
alert_message := "{ \"action\": \"sell\", \"symbol\": \"BTCUSDT\", \"price\": " + str.tostring(close) + " }"
if closeCondition
alert_message := "{ \"action\": \"close\", \"symbol\": \"BTCUSDT\", \"price\": " + str.tostring(close) + " }"
alert(alert_message, freq=alert.freq_once_per_bar_close)
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)
Crystal Cloud EMA - by Crystal Forex📢 Introducing the Crystal Cloud EMA Indicator! 🚀
This custom-built Ichimoku Cloud + EMA (50 & 200) hybrid indicator helps traders identify trends, support/resistance zones, and potential trade opportunities with high accuracy.
🔹 Key Features:
✅ Ichimoku Cloud: Dynamic support/resistance with Senkou Span A & B
✅ EMA 50 & EMA 200: Strong trend confirmation & cross signals
✅ Bullish/Bearish Cloud Zones: Visual color-coded trend direction
✅ Ideal for Forex, Crypto, and Stocks Trading
📌 How to Use?
🔹 Buy Signal: When price is above the cloud & EMA 50 crosses EMA 200 upward 📈
🔹 Sell Signal: When price is below the cloud & EMA 50 crosses EMA 200 downward 📉
🔹 Cloud Breakout: Strong momentum shift when price breaks through the cloud
📽 Watch the Full Video Tutorial on My YouTube Channel! 🎥 CrystalForex22
youtu.be
🔔 Don’t forget to like, comment, and follow for more powerful indicators! 💡
#TradingView #Forex #Crypto #Ichimoku #EMA #CrystalForex
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.
4Hour Zone SeparatorThis custom TradingView indicator draws vertical lines on your chart to visually separate the 4-hour trading zones within a single trading day. The indicator helps traders identify key time intervals throughout the day for better market analysis and decision-making.
Features:
• Time-Based Zones: The indicator divides the day into six distinct 4-hour periods, starting from midnight (00:00) and continuing every 4 hours. Each zone is marked by a vertical line on the chart.
• User Customization: You can toggle the visibility of the lines for each 4-hour period (00:00, 04:00, 08:00, 12:00, 16:00, 20:00) based on your preference. This allows you to focus on specific zones that matter most for your analysis.
• Line Styling Options: Choose from three different line styles — Solid, Dashed, or Dotted — and adjust the thickness to your desired preference.
• Dynamic Time Adjustment: The indicator automatically adjusts for the time zone, ensuring that the 00:00 timestamp reflects the correct start of the day based on your chart’s time zone.
How It Works:
1. The indicator starts by calculating the beginning of the day at 00:00, then it sequentially places vertical lines every 4 hours.
2. Each line is color-coded for easy identification, and the lines stretch from the highest to the lowest point on the chart for that range.
3. The lines are drawn only when the chart enters a new 4-hour zone.
This tool is especially useful for day traders who want to track price action during specific times of the day and make informed decisions based on market behavior within each 4-hour period.
Liquidity crypt
//@version=5
indicator(" 💧TFO_LVL_OI_LIQ 💧 ", " 💧TFO_LVL_OI_LIQ 💧", true, max_bars_back=5000, max_lines_count = 500, max_polylines_count = 100, max_labels_count = 500, max_boxes_count = 500)
string userSymbol = 'BINANCE' + ":" + string(syminfo.basecurrency) + 'USDT.P'
string Formula = str.format("{0}_OI", userSymbol)
OI = request.security(Formula, timeframe.period, close)
OI_delta = OI - nz(OI )
maLength = input(60, title="MA Length")
numOfLines = 500
OI_delta_MA = ta.sma(OI_delta, maLength)
OI_delta_abs = math.abs(OI_delta)
OI_delta_abs_MA = ta.sma(OI_delta_abs, maLength)
h3 = input(3.0, title="Large Liquidation Level")
h2 = input(2.0, title="Middle Liquidation Level")
h1 = input(1.2, title="Small Liquidation Level")
OI_delta_open_h3 = (OI_delta_abs >= OI_delta_abs_MA * h3) and OI_delta > 0
OI_delta_open_h2 = (OI_delta_abs >= OI_delta_abs_MA * h2 and OI_delta_abs < OI_delta_abs_MA * h3) and OI_delta > 0
OI_delta_open_h1 = (OI_delta_abs >= OI_delta_abs_MA * h1 and OI_delta_abs < OI_delta_abs_MA * h2) and OI_delta > 0
kline_price = (open + close + high + low) / 4
showLine = input(true, title="Show lines")
showHist = input(true, title="Show histgram")
showLocalOnly = input(true, title="Only show local liquidation levels")
i_5xColor = input.color(#626367a2, '5x Leverage color', group='5x Leverage')
i_10xColor = input.color(#017cff7a, '10x Leverage color', group='10x Leverage')
i_25xColor = input.color(#0dff0064, '25x Leverage color', group='25x Leverage')
i_50xColor = input.color(#f0a02966, '50x Leverage color', group='50x Leverage')
i_100xColor = input.color(color.rgb(218, 55, 101, 44), '100x Leverage color', group='100x Leverage')
var h3Array = array.new_line()
var h2Array = array.new_line()
var h1Array = array.new_line()
// histgram
barColor = input(color.rgb(0, 55, 254, 4), "Bar Color")
numOfBars = input(120, 'Number of bars to lookback')
distLastCandle = input(5, 'Histgram distance from last candle')
local_high = ta.highest(high, numOfBars)
local_low = ta.lowest(low, numOfBars)
rangeHigh = local_high * (1 + local_high / local_low / 10)
rangeLow = local_low * (1 - local_high / local_low / 10)
rangeHeight = rangeHigh - rangeLow
numOfHistograms = input(120, 'Number of histograms (<=120)')
histogramHeight = rangeHeight / numOfHistograms
histogramLowList = array.new_float(numOfHistograms, na)
histogramHighList = array.new_float(numOfHistograms, na)
histogramData = array.new_float()
histogramtargetList = array.new_float(numOfHistograms, 0.0)
var Bars = array.new_box(numOfHistograms, na)
// Clean up drawings every tick
for i=0 to numOfHistograms - 1
box.delete(array.get(Bars, i))
f_drawLine(_x1, _x2, _yValue, _lineColor, _style, _width) =>
line.new(x1=_x1, y1=_yValue, x2=_x2, y2=_yValue, color=_lineColor, style=_style, width=_width)
f_extendArray(_lineArray, _extendLines) =>
if array.size(_lineArray) > 0
for _i = array.size(_lineArray) - 1 to 0 by 1
x2 = line.get_x2(array.get(_lineArray, _i))
yValue = line.get_y1(array.get(_lineArray, _i))
if _extendLines or bar_index - 1 == x2 - 1 and not(high > yValue and low < yValue)
line.set_x2(array.get(_lineArray, _i), bar_index + 1)
if bar_index == last_bar_index
array.push(histogramData, yValue)
f_calculateLeverage100x(_pivotValue, _shortSell) =>
_shortSell ? _pivotValue * (1 - 0.01) : _pivotValue * (1 + 0.01)
f_calculateLeverage50x( _pivotValue, _shortSell) =>
_shortSell ? _pivotValue * (1 - 0.02) : _pivotValue * (1 + 0.02)
f_calculateLeverage25x(_pivotValue, _shortSell) =>
_shortSell ? _pivotValue * (1 - 0.04) : _pivotValue * (1 + 0.04)
f_calculateLeverage10x(_pivotValue, _shortSell) =>
_shortSell ? _pivotValue * (1 - 0.1) : _pivotValue * (1 + 0.1)
f_calculateLeverage5x(_pivotValue, _shortSell) =>
_shortSell ? _pivotValue * (1 - 0.2) : _pivotValue * (1 + 0.2)
float yValue = na
int x1 = na
int x2 = na
line l = na
x1 := bar_index
x2 := bar_index
f_append(Array, l) =>
if array.size(Array) == numOfLines
line.delete(array.shift(Array))
array.push(Array, l)
if OI_delta_open_h3
yValue := f_calculateLeverage5x(kline_price, true)
l := f_drawLine(x1, x2, yValue, i_5xColor, line.style_solid, 1)
f_append(h3Array, l)
yValue := f_calculateLeverage5x(kline_price, false)
l := f_drawLine(x1, x2, yValue, i_5xColor, line.style_solid, 1)
f_append(h3Array, l)
yValue := f_calculateLeverage10x(kline_price, true)
l := f_drawLine(x1, x2, yValue, i_10xColor, line.style_solid, 1)
f_append(h3Array, l)
yValue := f_calculateLeverage10x(kline_price, false)
l := f_drawLine(x1, x2, yValue, i_10xColor, line.style_solid, 1)
f_append(h3Array, l)
yValue := f_calculateLeverage25x(kline_price, true)
l := f_drawLine(x1, x2, yValue, i_25xColor, line.style_solid, 1)
f_append(h3Array, l)
yValue := f_calculateLeverage25x(kline_price, false)
l := f_drawLine(x1, x2, yValue, i_25xColor, line.style_solid, 1)
f_append(h3Array, l)
yValue := f_calculateLeverage50x(kline_price, true)
l := f_drawLine(x1, x2, yValue, i_50xColor, line.style_solid, 1)
f_append(h3Array, l)
yValue := f_calculateLeverage50x(kline_price, false)
l := f_drawLine(x1, x2, yValue, i_50xColor, line.style_solid, 1)
f_append(h3Array, l)
yValue := f_calculateLeverage100x(kline_price, true)
l := f_drawLine(x1, x2, yValue, i_100xColor, line.style_solid, 1)
f_append(h3Array, l)
yValue := f_calculateLeverage100x(kline_price, false)
l := f_drawLine(x1, x2, yValue, i_100xColor, line.style_solid, 1)
f_append(h3Array, l)
if OI_delta_open_h2
yValue := f_calculateLeverage10x(kline_price, true)
l := f_drawLine(x1, x2, yValue, i_10xColor, line.style_solid, 1)
f_append(h2Array, l)
yValue := f_calculateLeverage10x(kline_price, false)
l := f_drawLine(x1, x2, yValue, i_10xColor, line.style_solid, 1)
f_append(h2Array, l)
yValue := f_calculateLeverage25x(kline_price, true)
l := f_drawLine(x1, x2, yValue, i_25xColor, line.style_solid, 1)
f_append(h2Array, l)
yValue := f_calculateLeverage25x(kline_price, false)
l := f_drawLine(x1, x2, yValue, i_25xColor, line.style_solid, 1)
f_append(h2Array, l)
yValue := f_calculateLeverage50x(kline_price, true)
l := f_drawLine(x1, x2, yValue, i_50xColor, line.style_solid, 1)
f_append(h2Array, l)
yValue := f_calculateLeverage50x(kline_price, false)
l := f_drawLine(x1, x2, yValue, i_50xColor, line.style_solid, 1)
f_append(h2Array, l)
yValue := f_calculateLeverage100x(kline_price, true)
l := f_drawLine(x1, x2, yValue, i_100xColor, line.style_solid, 1)
f_append(h2Array, l)
yValue := f_calculateLeverage100x(kline_price, false)
l := f_drawLine(x1, x2, yValue, i_100xColor, line.style_solid, 1)
f_append(h2Array, l)
if OI_delta_open_h1
yValue := f_calculateLeverage25x(kline_price, true)
l := f_drawLine(x1, x2, yValue, i_25xColor, line.style_dotted, 1)
f_append(h1Array, l)
yValue := f_calculateLeverage25x(kline_price, false)
l := f_drawLine(x1, x2, yValue, i_25xColor, line.style_dotted, 1)
f_append(h1Array, l)
yValue := f_calculateLeverage50x(kline_price, true)
l := f_drawLine(x1, x2, yValue, i_50xColor, line.style_dotted, 1)
f_append(h1Array, l)
yValue := f_calculateLeverage50x(kline_price, false)
l := f_drawLine(x1, x2, yValue, i_50xColor, line.style_dotted, 1)
f_append(h1Array, l)
yValue := f_calculateLeverage100x(kline_price, true)
l := f_drawLine(x1, x2, yValue, i_100xColor, line.style_dotted, 1)
f_append(h1Array, l)
yValue := f_calculateLeverage100x(kline_price, false)
l := f_drawLine(x1, x2, yValue, i_100xColor, line.style_dotted, 1)
f_append(h1Array, l)
f_extendArray(h3Array, false)
f_extendArray(h2Array, false)
f_extendArray(h1Array, false)
// draw hist
if barstate.islast and showHist
// Define lows and highs of the histograms
for i = 0 to numOfHistograms - 1
histogramLow = rangeLow + histogramHeight * i
histogramHigh = rangeLow + histogramHeight * (i + 1)
array.set(histogramLowList, i, histogramLow)
array.set(histogramHighList, i, histogramHigh)
for i = 0 to array.size(histogramData) - 1
y = array.get(histogramData, i)
for j = 0 to numOfHistograms - 1
histogramLow = array.get(histogramLowList, j)
histogramHigh = array.get(histogramHighList, j)
if y >= histogramLow and y <= histogramHigh
array.set(histogramtargetList, j, array.get(histogramtargetList, j) + 1)
for i = 0 to numOfHistograms - 1
histogramLow = array.get(histogramLowList, i)
histogramHigh = array.get(histogramHighList, i)
histogramtarget = array.get(histogramtargetList, i)
histogramWidth = math.floor((histogramtarget + 0.49) * 2)
// Draw histograms
array.set(Bars, i, box.new(left=bar_index + distLastCandle, top=histogramHigh, right=bar_index + distLastCandle + histogramWidth, bottom=histogramLow, bgcolor=barColor, border_color=barColor))
if barstate.islast and not showLine
for i=0 to array.size(h3Array) - 1
line.delete(array.get(h3Array, i))
for i=0 to array.size(h2Array) - 1
line.delete(array.get(h2Array, i))
for i=0 to array.size(h1Array) - 1
line.delete(array.get(h1Array, i))
else if barstate.islast and showLocalOnly
for i=0 to array.size(h3Array) - 1
if line.get_y1(array.get(h3Array, i)) < rangeLow or line.get_y1(array.get(h3Array, i)) > rangeHigh
line.delete(array.get(h3Array, i))
for i=0 to array.size(h2Array) - 1
if line.get_y1(array.get(h2Array, i)) < rangeLow or line.get_y1(array.get(h2Array, i)) > rangeHigh
line.delete(array.get(h2Array, i))
for i=0 to array.size(h1Array) - 1
if line.get_y1(array.get(h1Array, i)) < rangeLow or line.get_y1(array.get(h1Array, i)) > rangeHigh
line.delete(array.get(h1Array, i))
// Volume Profile Inputs
var g_VP = "Volume Profile"
rows = input.int(200, "Rows", tooltip = "The number of price levels/rows that will be used to approximate the cumulative volume profile", group = g_VP)
tf = input.timeframe("D", "Profile Timeframe", tooltip = "The aggregate timeframe that the volume profile represents", group = g_VP)
ltf = input.timeframe("1", "Resolution Timeframe", tooltip = "The timeframe whose price data will be used to build the volume profile", group = g_VP)
extend = input.int(100, "Profile Extend %", 0, 100, tooltip = "How much the volume profile should extend to the next session", group = g_VP)
vp_color = input.color(color.new(color.blue, 70), "Profile Color", tooltip = "The color of the volume profile", group = g_VP)
// Volume Point of Control Inputs
var g_VPOC = "Volume Point of Control"
show_vpoc = input.bool(true, "Show VPOC", inline = "VPOC", tooltip = "Whether to show the volume point of control (VPOC), or the level with the largest volume in a given volume profile", group = g_VPOC)
vpoc_color = input.color(color.yellow, "", inline = "VPOC", group = g_VPOC)
ext_vpoc = input.bool(true, "Extend Last N VPOCs", inline = "EXT", tooltip = "Whether to extend the last N number of VPOCs to the right of the chart", group = g_VPOC)
ext_n_vpoc = input.int(5, "", 0, 100, inline = "EXT", group = g_VPOC)
vpoc_label_above = input.timeframe("D", "Show Labels Above", tooltip = "With extend last N VPOCs turned on, labels displaying the date of said VPOCs will be shown when the profile timeframe is greater than or equal to this", group = g_VPOC)
vpoc_label_size = input.string('Normal', "Label Size", options = , tooltip = "The size of VPOC date labels", group = g_VPOC)
vpoc_width = input.int(2, "Line Width", tooltip = "The width of VPOC lines", group = g_VPOC)
// High Volume Nodes Inputs
var g_HVN = "High Volume Nodes"
show_hvn = input.bool(true, "Show Previous HVNs", inline = "HVN", tooltip = "Whether to show high volume nodes (HVNs) from the previous session. Using the previous session's close, HVNs above this price will use the first color, and HVNs below this price will use the second color", group = g_HVN)
hvn_color_bull = input.color(color.new(color.teal, 70), "", inline = "HVN", group = g_HVN)
hvn_color_bear = input.color(color.new(color.red, 70), "", inline = "HVN", group = g_HVN)
hvn_strength = input.int(10, "HVN Strength", tooltip = "HVNs are validated when a given level in the volume profile contains more volume than this many rows both above and below it", group = g_HVN)
hvn_type = input.string("Areas", "HVN Type", options = , tooltip = "Whether to display HVNs as levels (lines) or areas (boxes). Levels use a solid line to denote the prior session's VPOC, and dotted lines for all other HVNs", group = g_HVN)
hvn_width = input.int(1, "Line Width", tooltip = "The width of HVN lines, if the HVN type is selected as levels", group = g_HVN)
// Bubbles AcadAlgo Inputs
showBubbles = input.bool(true, "Display Bubbles", group="Bubbles", inline="1")
useHeatMap = input.bool(false, "Enable HeatMap", group="Bubbles")
showLevels = input.bool(false, "Highlight Significant Levels", group="Volume Levels")
levelsCount = input.int(10, "Number of Levels", group="Volume Levels")
mainColor = input.color(color.green, "Main Color", group="Colors")
heatMapColor1 = input.color(color.new(color.aqua, 50), "HeatMap Color 1", group="Colors")
heatMapColor2 = input.color(color.new(color.green, 50), "HeatMap Color 2", group="Colors")
heatMapColor3 = input.color(color.new(color.yellow, 50), "HeatMap Color 3", group="Colors")
heatMapColor4 = input.color(color.new(color.orange, 30), "HeatMap Color 4", group="Colors")
heatMapColor5 = input.color(#d32626, "HeatMap Color 5", group="Colors")
calculateInDollars = input.bool(false, "Calculate Volume in Dollars", group="Volume Options")
volumeFilterOn = input.bool(true, "Enable Volume Filter", group="Volume Filters") // Toggle button for volume filter
minVolumeDollars = input.float(100, "Minimum Volume ($)", minval=1, group="Volume Filters")
maxVolumeDollars = input.float(1000000000000, "Maximum Volume ($)", minval=1, group="Volume Filters")
// SPL Level Inputs
swingSizeR = input.int(10, 'Bars Right-Left', inline='brl')
swingSizeL = input.int(15, '-', inline='brl')
showBoxes = input.bool(true, 'Show Boxes ', inline='aa')
showSwingLines = input.bool(true, 'Show Lines', inline='aa')
showBubblesSPL = input.bool(true, 'Show Labels ', inline='bb')
showVol = input.bool(false, 'Show Volume', inline='bb')
showOId = input.bool(false, 'Show OI Δ ', inline='cc')
extendtilfilled = input.bool(true, 'Extend Until Fill', inline='cc')
hidefilled = input.bool(false, 'Hide Filled', group='Conditions')
voltresh = input.int(0, 'Volume >', group='Conditions')
oitresh = input.int(0, 'OI Δ (abs.) >', group='Conditions')
pnoid = input.string('/', 'Only Swings With', options= , group='Conditions')
showhighs = input.bool(true, '', inline='sh', group='Appearance')
showlows = input.bool(true, '', inline='sl', group='Appearance')
sellcol = input.color(#aa2430, 'Lows (Line - Label - Box)', inline='sh', group='Appearance')
buycol = input.color(#66bb6a, 'Highs (Line - Label - Box)', inline='sl', group='Appearance')
sellcolB = input.color(#aa2430, '', inline='sh', group='Appearance')
buycolB = input.color(#66bb6a, '', inline='sl', group='Appearance')
sellboxCol = input.color(#80192231, '', inline='sh', group='Appearance')
buyboxCol = input.color(#66bb6a31, '', inline='sl', group='Appearance')
lineStyle = input.string('Dotted', 'Line Style + Width', , inline='l', group='Appearance')
lineWid = input.int(1, '', inline='l', group='Appearance')
boxWid = input.float(0.7, 'Box Width + Type ', step=0.1, inline='xx', group='Appearance')
boxStyle = input.string('TYPE 1', '', options= , inline='xx', group='Appearance')
labelsize = input.string('Size: Tiny', 'Text Style ', options= , inline='txt', group='Appearance' )
texthalign = input.string('Right','', options= , inline='txt', group='Appearance')
lookback = input.bool(false, '', inline='lb')
daysBack = input.float(150, 'Lookback (D) ',inline='lb')
binance = input.bool(true, 'Binance USDT.P', inline='src', group='Open Interest')
binance2 = input.bool(true, 'Binance USD.P', inline='src', group='Open Interest')
binance3 = input.bool(true, 'Binance BUSD.P', inline='src2', group='Open Interest')
bitmex = input.bool(true, 'BitMEX USD.P', inline='src2', group='Open Interest')
bitmex2 = input.bool(true, 'BitMEX USDT.P ', inline='src3', group='Open Interest')
kraken = input.bool(true, 'Kraken USD.P', inline='src3', group='Open Interest')
// Calculating inRange, used for lookback in days
MSPD = 24 * 60 * 60 * 1000
lastBarDate = timestamp(year(timenow), month(timenow), dayofmonth(timenow), hour(timenow), minute(timenow), second(timenow))
thisBarDate = timestamp(year, month, dayofmonth, hour, minute, second)
daysLeft = math.abs(math.floor((lastBarDate - thisBarDate) / MSPD))
inRange = lookback ? (daysLeft < daysBack) : true
// Volume Profile Variables
var vpoc = array.new_line()
var dates = array.new_label()
var values = array.new_float()
var x_vol = array.new_int()
var y_vol = array.new_float()
var hvn_lines = array.new_line()
var hvn_boxes = array.new_box()
var hvn_Ly = array.new_float()
var hvn_By = array.new_float()
var PLA = array.new()
var polyline PL = na
var line temp_vpoc = na
var int lb_idx = na
var int lb_time = na
// SPL Level Variables
int prevHighIndex= na, int prevLowIndex= na, bool highActive= false, bool lowActive= false, bool h= false, bool lv= false
pivHi = ta.pivothigh(high, swingSizeL, swingSizeR)
pivLo = ta.pivotlow(low, swingSizeL, swingSizeR)
if not na(pivHi)
h := true
prevHighIndex := bar_index - swingSizeR
if not na(pivLo)
lv := true
prevLowIndex := bar_index - swingSizeR
// Getting OI data
mex = syminfo.basecurrency == 'BTC' ? 'XBT' : string(syminfo.basecurrency)
oid1 = nz(request.security('BINANCE:' + string(syminfo.basecurrency) + 'USDT.P_OI', timeframe.period, close - close , ignore_invalid_symbol=true), 0)
oid2 = nz(request.security('BINANCE:' + string(syminfo.basecurrency) + 'USD.P_OI', timeframe.period, close - close , ignore_invalid_symbol=true), 0)
oid3 = nz(request.security('BINANCE:' + string(syminfo.basecurrency) + 'BUSD.P_OI', timeframe.period, close - close , ignore_invalid_symbol=true), 0)
oid4 = nz(request.security('BITMEX:' + mex + 'USD.P_OI', timeframe.period, close - close , ignore_invalid_symbol=true), 0)
oid5 = nz(request.security('BITMEX:' + mex + 'USDT.P_OI', timeframe.period, close - close , ignore_invalid_symbol=true), 0)
oid6 = nz(request.security('KRAKEN:' + string(syminfo.basecurrency) + 'USD.P_OI', timeframe.period, close - close , ignore_invalid_symbol=true), 0)
deltaOI = (binance ? nz(oid1, 0) : 0) + (binance2 ? nz(oid2, 0) / close : 0) + (binance3 ? nz(oid3, 0) : 0) + (bitmex ? nz(oid4, 0) / close : 0) + (bitmex2 ? nz(oid5, 0) / close : 0) + (kraken ? nz(oid6, 0) / close : 0)
// Volume, OI, box width
vol = volume
oitreshcond = oitresh > 0 ? math.abs(deltaOI ) > oitresh : true
voltreshcond = voltresh > 0 ? vol > voltresh : true
oicond = pnoid == 'Positive OI Delta' ? deltaOI > 0 : pnoid == 'Negative OI Delta' ? deltaOI < 0 : true
CLEAR = color.rgb(0, 0, 0, 100)
boxWid1 = 0.001 * boxWid
// Styles
boxStyle(x) =>
switch x
'TYPE 1' => h ? pivHi : lv ? pivLo : na
'TYPE 2' => h ? pivHi * (1 - boxWid1) : lv ? pivLo * (1 + boxWid1) : na
lineStyle(x) =>
switch x
'Solid' => line.style_solid
'Dashed' => line.style_dashed
'Dotted' => line.style_dotted
switchtextsize(textsize) =>
switch textsize
'Size: Normal' => size.normal
'Size: Small' => size.small
'Size: Tiny' => size.tiny
'Size: Auto' => size.auto
'Size: Large' => size.large
switchhalign(texthalign) =>
switch texthalign
'Middle' => text.align_center
'Right' => text.align_right
'Left' => text.align_left
// Swing level labels
var levelBoxes = array.new_box()
var levelLines = array.new_line()
if h and inRange and showhighs and oitreshcond and voltreshcond and oicond
hBox = box.new(prevHighIndex, pivHi * (1 + boxWid1), bar_index, boxStyle(boxStyle), border_color=na, bgcolor=showBoxes ? sellboxCol : CLEAR, text=(showVol ? str.tostring(vol, format.volume) : na) + ' ' + (showOId ? str.tostring(deltaOI , format.volume) : ''), text_halign=switchhalign(texthalign), text_valign=text.align_center, text_color=chart.fg_color, text_size=switchtextsize(labelsize))
hLine = line.new(prevHighIndex, pivHi, bar_index, pivHi, color=showSwingLines ? sellcol : CLEAR, style=lineStyle(lineStyle), width=lineWid)
array.push(levelBoxes, hBox)
array.push(levelLines, hLine)
if lv and inRange and showlows and oitreshcond and voltreshcond and oicond
lBox = box.new(prevLowIndex, pivLo * (1 - boxWid1), bar_index, boxStyle(boxStyle), border_color=na, bgcolor=showBoxes ? buyboxCol : CLEAR, text=(showVol ? str.tostring(vol, format.volume) : na) + ' ' + (showOId ? str.tostring(deltaOI , format.volume) : ''), text_halign=switchhalign(texthalign), text_valign=text.align_center, text_color=chart.fg_color, text_size=switchtextsize(labelsize))
lLine = line.new(prevLowIndex, pivLo, bar_index, pivLo, color=showSwingLines ? buycol : CLEAR, style=lineStyle(lineStyle), width=lineWid)
array.push(levelBoxes, lBox)
array.push(levelLines, lLine)
// Looping over the full array of lines and updating them, and deleting them if they have been touched
size = array.size(levelBoxes)
if size > 0
for i = 0 to size - 1
j = size - 1 - i
box = array.get(levelBoxes, j)
line = array.get(levelLines, j)
level = line.get_y2(line)
filled = (high >= level and low <= level)
if filled and extendtilfilled and not hidefilled
array.remove(levelLines, j)
array.remove(levelBoxes, j)
continue
box.set_right(box, bar_index + 1)
line.set_x2(line, bar_index + 1)
if filled and hidefilled
array.remove(levelLines, j)
array.remove(levelBoxes, j)
line.delete(line)
box.delete(box)
if not filled and not extendtilfilled
array.remove(levelLines, j)
array.remove(levelBoxes, j)
continue
// Deleting the oldest lines if array is too big
if array.size(levelBoxes) >= 500
int i = 0
while array.size(levelBoxes) >= 500
box = array.get(levelBoxes, i)
line = array.get(levelLines, i)
box.delete(box)
line.delete(line)
array.remove(levelBoxes, i)
array.remove(levelLines, i)
i += 1
// Plotting circle labels for SPL
plotshape(showhighs and showBubblesSPL and h and oitreshcond and voltreshcond and oicond ? high : na, style=shape.triangleup, location=location.absolute, offset=-swingSizeR, color=sellcolB, size=size.tiny)
plotshape(showlows and showBubblesSPL and lv and oitreshcond and voltreshcond and oicond ? low : na, style=shape.triangledown, location=location.absolute, offset=-swingSizeR, color=buycolB, size=size.tiny)
// Calculations for Bubbles AcadAlgo
volumeData = volume
priceSource = hl2
volumeInDollars = volumeData * close
selectedVolume = calculateInDollars ? volumeInDollars : volumeData
normalizedVolume = selectedVolume / ta.stdev(selectedVolume, 200)
gradientColor = not useHeatMap
? color.from_gradient(
normalizedVolume, 0, 8,
chart.bg_color == color.white ? color.new(mainColor, 100) : color.rgb(18, 34, 18, 50),
mainColor
)
:
(
normalizedVolume < 1
? color.from_gradient(normalizedVolume, 0, 1, heatMapColor1, heatMapColor2)
: normalizedVolume >= 1 and normalizedVolume < 4
? color.from_gradient(normalizedVolume, 1, 4, heatMapColor3, heatMapColor4)
: normalizedVolume >= 4
? color.from_gradient(normalizedVolume, 4, 8, heatMapColor4, heatMapColor5) : na
)
volumeCondition = volumeFilterOn ? (selectedVolume >= minVolumeDollars and selectedVolume < maxVolumeDollars) : true
conditionTiny = volumeCondition and normalizedVolume > 0 and normalizedVolume < 1 and showBubbles
conditionSmall = volumeCondition and normalizedVolume >= 1 and normalizedVolume < 2 and showBubbles
conditionNormal= volumeCondition and normalizedVolume >= 2 and normalizedVolume < 3 and showBubbles
conditionLarge = volumeCondition and normalizedVolume >= 3 and normalizedVolume < 4 and showBubbles
conditionHuge = volumeCondition and normalizedVolume >= 4 and showBubbles
// Plotting for Bubbles AcadAlgo
if conditionHuge and (showLevels or showBubbles)
label.new(showBubbles ? bar_index : last_bar_index, priceSource, str.tostring(selectedVolume, format.volume), xloc.bar_index, yloc.price,
#00000000, showBubbles ? label.style_label_center : label.style_label_left, chart.fg_color)
if conditionHuge and showLevels
line.new(bar_index, priceSource, last_bar_index, priceSource, xloc.bar_index, extend.none, gradientColor, width=2)
// figure
plotshape(conditionTiny ? priceSource : na, "", shape.square, location.absolute, gradientColor, 0, "", na, size=size.tiny)
plotshape(conditionSmall ? priceSource : na, "", shape.circle, location.absolute, gradientColor, 0, "", na, size=size.small)
plotshape(conditionNormal? priceSource : na, "", shape.circle, location.absolute, gradientColor, 0, "", na, size=size.normal)
plotshape(conditionLarge ? priceSource : na, "", shape.square, location.absolute, gradientColor, 0, "", na, size=size.normal)
plotshape(conditionHuge ? priceSource : na, "", shape.diamond, location.absolute, gradientColor, 0, "", na, size=size.huge)
// Manage the number of lines and labels on the chart
a_allLines = line.all
if array.size(a_allLines) > levelsCount
line.delete(array.shift(a_allLines))
a_allLabels = label.all
if array.size(a_allLabels) > levelsCount and not showBubbles
label.delete(array.shift(a_allLabels))
// Warning if no Volume data Provided
if ta.cum(volume) <= 0 and barstate.islast
label.new(bar_index, hl2, "No Volume Data Available Use Another Symbol",
style=label.style_label_left,
textcolor=chart.fg_color)
// Volume Profile Functions
get_label_size(x) =>
result = switch x
'Auto' => size.auto
'Tiny' => size.tiny
'Small' => size.small
'Normal' => size.normal
'Large' => size.large
'Huge' => size.huge
get_hvn() =>
if values.size() > hvn_strength
for i = 0 to values.size() - 1
start = values.get(i)
valid = true
for j = -hvn_strength to hvn_strength
k = i + j
if k < 0 or k > values.size() - 1
continue
else
if j != 0 and values.get(k) > start
valid := false
break
if valid
idx = values.indexof(start)
if idx != -1
y1 = y_vol.get(idx)
y2 = y_vol.get(idx)
val = y_vol.get(idx)
if i < values.size() - 1
for m = i to values.size() - 2
if values.get(m + 1) > values.get(m)
y1 := y_vol.get(m)
break
if i > 0
for m = i to 1
if values.get(m - 1) > values.get(m)
y2 := y_vol.get(m)
break
new_color = close > math.avg(y1, y2) ? hvn_color_bull : hvn_color_bear
if hvn_type == "Levels"
if hvn_Ly.indexof(val) == -1
hvn_Ly.unshift(val)
hvn_lines.unshift(line.new(time, val, time + timeframe.in_seconds(tf)*1000, val, xloc = xloc.bar_time, color = color.new(new_color, 0), style = start == values.max() ? line.style_solid : line.style_dotted, width = hvn_width))
else
if hvn_By.indexof(y1) == -1
hvn_By.unshift(y1)
hvn_boxes.unshift(box.new(time, y1, time + timeframe.in_seconds(tf)*1000, y2, xloc = xloc.bar_time, bgcolor = new_color, border_color = na))
ltf := timeframe.in_seconds(ltf) <= timeframe.in_seconds() ? ltf : ""
= request.security_lower_tf(syminfo.tickerid, ltf, )
if not na(lb_idx)
lb = bar_index - lb_idx > 0 ? (bar_index - lb_idx) : 1
y_max = ta.highest(high , lb)
y_min = ta.lowest(low , lb)
if timeframe.change(tf) or barstate.islast
x_vol.clear()
y_vol.clear()
values.clear()
for i = 0 to rows
y = y_min + i * (y_max - y_min) / rows
x_vol.push(lb_time)
y_vol.push(y)
values.push(0)
for i = bar_index - lb_idx to 1
vol = ltf_V ,
if vol.size() > 0
for j = 0 to values.size() - 1
temp = y_vol.get(j)
for k = 0 to vol.size() - 1
H = ltf_H
L = ltf_L
V = ltf_V
if H.get(k) >= temp and L.get(k) <= temp
add = math.floor(V.get(k) / ((H.get(k) - L.get(k)) / (y_max - y_min) / rows))
values.set(j, values.get(j) + add)
max_y = y_vol.get(values.indexof(values.max()))
sf = values.max() / (time - lb_time) / (extend / 100)
for j = 0 to values.size() - 1
set = (lb_time + math.floor(values.get(j) / sf))
x_vol.set(j, set)
PLA.clear()
PLA.push(chart.point.from_time(lb_time, y_min))
for i = 0 to x_vol.size() - 1
PLA.push(chart.point.from_time(x_vol.get(i), y_vol.get(i)))
PLA.push(chart.point.from_time(lb_time, y_max))
PL.delete()
if timeframe.change(tf)
polyline.new(PLA, curved = false, closed = true, line_color = vp_color, fill_color = vp_color, xloc = xloc.bar_time)
temp_vpoc.delete()
vpoc.unshift(line.new(lb_time, max_y, time, max_y, xloc = xloc.bar_time, color = show_vpoc ? vpoc_color : na, extend = ext_vpoc ? extend.right : extend.none, width = vpoc_width))
if ext_vpoc and timeframe.in_seconds(tf) >= timeframe.in_seconds(vpoc_label_above)
dates.unshift(label.new(bar_index, max_y, str.format("{0,date,short}", time("", session = "0000-0000", timezone = "America/New_York")), textcolor = show_vpoc ? vpoc_color : na, color = na, size = get_label_size(vpoc_label_size)))
else
PL := polyline.new(PLA, curved = false, closed = true, line_color = vp_color, fill_color = vp_color, xloc = xloc.bar_time)
if na(temp_vpoc)
temp_vpoc := line.new(lb_time, max_y, time, max_y, xloc = xloc.bar_time, color = show_vpoc ? vpoc_color : na, extend = ext_vpoc ? extend.right : extend.none, width = vpoc_width)
temp_vpoc.set_y1(max_y)
temp_vpoc.set_y2(max_y)
temp_vpoc.set_x2(time)
if timeframe.change(tf)
lb_idx := bar_index
lb_time := time
if show_hvn
hvn_lines.clear()
hvn_boxes.clear()
hvn_Ly.clear()
hvn_By.clear()
get_hvn()
if ext_vpoc and vpoc.size() > ext_n_vpoc
line.set_extend(vpoc.pop(), extend.none)
if timeframe.in_seconds(tf) >= timeframe.in_seconds(vpoc_label_above)
label.delete(dates.pop())
if dates.size() > 0
for i = 0 to dates.size() - 1
dates.get(i).set_x(bar_index + 20)
Trend Strategy | javieresfelizThis strategy is designed for traders looking to identify clear buy and sell signals based on the crossover of exponential moving averages (EMAs) on different time frames. It uses 9, 20, 21, 50, 100, and 200 period EMAs to capture market trends on various time frames: Daily (1D), 30 Minutes (30M), and 5 Minutes (5M).
Key Features:
1. EMAs (Exponential Moving Averages): They are used in various combinations to detect trend reversal points and generate buy or sell signals on different time frames.
2. EMA Crossovers:
1D: Buy when the 100 EMA crosses above the 200 EMA and sell when it crosses below.
30M: Buy when the 20 EMA crosses above the 50 EMA and sell when it crosses below.
5M: Buy when the 9 EMA crosses above the 21 EMA and sell when it crosses below.
3. Custom Colors: Each signal is displayed with specific colors for easy identification:
Buy 1D: Light Green (background) and Dark Green (text)
Sell 1D: Light Red (background) and White (text)
Buy 30M: Light Blue (background) and Deep Green (text)
Sell 30M: Light Pink (background) and White (text)
Buy 5M: Light Yellow (background) and Dark Green (text)
Sell 5M: Soft Red (background) and White (text)
Strategy Objective:
To help traders identify trends and potential entry or exit points in the market by using EMAs. The strategy is especially useful for those who trade on multiple time frames, leveraging information from each time frame to improve their trading decisions.
Important:
This indicator is for educational purposes only and should not be considered investment advice.
Past performance does not guarantee future results. Users should conduct their own research before making trading decisions.
-----------------------------------------------------------------------------------------------------
Esta estrategia está diseñada para traders que buscan identificar señales claras de compra y venta basadas en el cruce de medias móviles exponenciales (EMAs) en diferentes temporalidades. Utiliza EMAs de 9, 20, 21, 50, 100, y 200 períodos para capturar las tendencias del mercado en varios marcos temporales: Diario (1D), 30 minutos (30M) y 5 minutos (5M).
Características Principales:
1. EMAs (Exponential Moving Averages): Se utilizan en varias combinaciones para detectar puntos de cambio en la tendencia y generar señales de compra o venta en diferentes temporalidades.
2. Cruces de EMAs:
1D: Compra cuando la EMA de 100 cruza por encima de la EMA de 200 y venta cuando cruza por debajo.
30M: Compra cuando la EMA de 20 cruza por encima de la EMA de 50 y venta cuando cruza por debajo.
5M: Compra cuando la EMA de 9 cruza por encima de la EMA de 21 y venta cuando cruza por debajo.
3. Colores Personalizados: Cada señal se muestra con colores específicos para facilitar la identificación:
Compra 1D: Verde claro (fondo) y verde oscuro (texto)
Venta 1D: Rojo claro (fondo) y blanco (texto)
Compra 30M: Azul claro (fondo) y verde fuerte (texto)
Venta 30M: Rosa claro (fondo) y blanco (texto)
Compra 5M: Amarillo claro (fondo) y verde oscuro (texto)
Venta 5M: Rojo suave (fondo) y blanco (texto)
Objetivo de la estrategia:
Ayudar a los traders a identificar tendencias y posibles puntos de entrada o salida en el mercado mediante el uso de EMAs. La estrategia es especialmente útil para quienes operan en múltiples temporalidades, aprovechando la información de cada marco temporal para mejorar sus decisiones de trading.
Importante:
Este indicador es solo para fines educativos y no debe considerarse un consejo de inversión.
El rendimiento pasado no garantiza resultados futuros. Los usuarios deben realizar su propia investigación antes de tomar decisiones de trading.
Time Zone & SessionsDa las sesiones de London, New York, Asia y Austr.
Además un time zone incorporado para marcar días
Jts Up/Down VolumeColour variation of volume indicator. Uses Green and blue so as not to reinforce the symbolism of the colour combination. Volume highlighted, with average overlay in green.
Bollinger Bands Long Strategy
This strategy is designed for identifying and executing long trades based on Bollinger Bands and RSI. It aims to capitalize on potential oversold conditions and subsequent price recovery.
Key Features:
- Bollinger Bands (10,2): The strategy uses Bollinger Bands with a 10-period moving average and a multiplier of 2 to define price volatility.
- RSI Filter: A trade is only triggered when the RSI (14-period) is below 30, ensuring entry during oversold conditions.
- Entry Condition: A long trade is entered immediately when the price crosses below the lower Bollinger Band and the RSI is under 30.
- Exit Condition: The position is exited when the price reaches or crosses above the Bollinger Band basis (20-period moving average).
Best Used For:
- Identifying oversold conditions with a strong potential for a rebound.
- Markets or assets with clear oscillations and volatility e.g., BTC.
**Disclaimer:** This strategy is for educational purposes and should be used with caution. Backtesting and risk management are essential before live trading.
Al Sat Sinyali ve Para Giriş Çıkışı//@version=5
indicator("Al Sat Sinyali ve Para Giriş Çıkışı", overlay=true)
// Parametreler
shortLength = input.int(13, title="Kısa Periyot MA (13 Gün)")
mediumLength = input.int(8, title="Orta Periyot MA (8 Gün)")
longLength = input.int(5, title="Kısa Orta MA (5 Gün)")
longTermLength = input.int(55, title="Uzun Periyot MA (55 Gün)")
src = input(close, title="Veri Kaynağı")
// Hareketli Ortalamalar
ma13 = ta.sma(src, shortLength)
ma8 = ta.sma(src, mediumLength)
ma5 = ta.sma(src, longLength)
ma55 = ta.sma(src, longTermLength)
// Al/Sat Sinyalleri
longSignal = ma13 > ma8 and ma8 > ma5 // Fiyat 13 MA, 8 MA ve 5 MA üstünde
shortSignal = ma13 < ma8 and ma8 < ma5 // Fiyat 13 MA, 8 MA ve 5 MA altında
// Temkinli tut sinyali
cautionSignal = ma13 > ma8 and ma8 < ma5 // Fiyat 13-8 üstü, 5-8 altı
// Arka Plan Renkleri
bgcolor(ma55 > src ? color.new(color.green, 90) : color.new(color.red, 90))
// Al/Sat ve Temkinli Tut Sinyalleri
plotshape(longSignal, color=color.green, style=shape.labelup, location=location.belowbar, text="AL", textcolor=color.white, size=size.small)
plotshape(shortSignal, color=color.red, style=shape.labeldown, location=location.abovebar, text="SAT", textcolor=color.white, size=size.small)
plotshape(cautionSignal, color=color.orange, style=shape.triangledown, location=location.abovebar, text="TEMKİN", textcolor=color.white, size=size.small)
// 55 Günlük Hareketli Ortalama
plot(ma55, color=color.blue, linewidth=2, title="55 Günlük MA")
// Para Giriş-Çıkış Farkı (Volatilite/Değişim farkı)
volumeDelta = volume - ta.sma(volume, 14) // 14 periyotluk hacim farkı
plot(volumeDelta, color=color.purple, style=plot.style_histogram, linewidth=2, title="Para Giriş/Çıkış Farkı")
AI区间震荡策略(修正版)📌 交易策略简介(区间震荡策略)
策略名称:区间震荡交易策略
适用市场:外汇、股票、加密货币等震荡市场
策略类型:高胜率短线交易
📌策略核心逻辑
识别震荡区间:使用布林带+ATR确定支撑和阻力位。
趋势过滤:采用EMA(指数移动均线)避免趋势行情误入。
入场信号:
做多:价格接近支撑位,且RSI < 30(超卖)+ KDJ超卖。
做空:价格接近阻力位,且RSI > 70(超买)+ KDJ 超买。
止盈 & 止损:
止盈:目标2× ATR。
止损:严格控制在1.5×ATR以内。
智能资金管理:
每笔交易动态调整仓位,控制风险,防止过度交易。
📌适用场景
✅适用于震荡行情(价格在一定范围内波动)
✅过滤趋势行情(防止资金回撤过大)
✅短线交易,高胜率策略(适合日内交易)
💡直接复制代码到TradingView,即可运行!🚀
High-Return Trend Strategy (Final)Developed with AI, Sends you notif for buy and sell, just trust the process. NFA