Inside & Outside Candle PatternInside & Outside Candle Pattern
This script is designed to identify Inside Bar and Outside Bar patterns on price charts. The Inside Bar pattern is detected when the current candle is entirely within the range of the previous candle, and the Outside Bar pattern is identified when the current candle completely engulfs the previous candle. The script automatically changes the color of the candles:
Inside Bar candles are displayed in red.
Outside Bar candles are displayed in blue.
Wskaźniki i strategie
SMC + Boring Candles - KartikCombined Boring candle and smart money concept to get better insight of price range where there is potential demand zone and supply zone.
LSB V01- mamamiTRY IT
暫時沒有其他更好的解法,先試看看
⚠️⚠️⚠️目前指標止損以15分線為主,所以15分以上的SL不準喔,
我設定為在15分線往前192根K線(約2日內的15分K)的最高點或最低點。
核心技術指標:此策略基於 WaveTrend(類似 RSI + MACD) 來產生多空訊號。
過濾機制:使用 ATR 來過濾 假突破(Fake Breakout),減少錯誤交易。
趨勢跟隨策略(Trend Following)
多單(LONG):當 WaveTrend 低於下限區域(超賣區)並突破時,進場做多。
空單(SHORT):當 WaveTrend 高於上限區域(超買區)並跌破時,進場做空。
止損(SL):設置 前 192 根 K 線的高低點 作為止損,確保不過早出場。
假突破過濾(Fake Breakout Filtering)
ATR(波動性過濾):透過 ATR 來判斷是否屬於「假突破」,避免在市場震盪時頻繁進場出場。
當價格突破 ATR 假突破閾值(Fake Breakout Threshold),策略會自動平倉避免被洗出。
均值回歸策略(Mean Reversion)(輔助)
使用 WaveTrend 指標:當價格嚴重超買或超賣,且符合 ATR 過濾條件時,策略會尋找「均值回歸」的機會進場交易。
✅ 適用市場
加密貨幣(Crypto)
外匯(Forex)
期貨(Futures)
股票(Stocks)
✅ 適用時間週期
15 分鐘(M15)以上的時間框架
更適用於 1H、4H 這種中短週期交易
✅ 適合的市場條件
震盪行情(Mean Reverting Market):當市場價格波動較大,但仍在區間內震盪時。
趨勢行情(Trending Market):如果市場有明顯的方向性趨勢,也可以透過 WaveTrend 進場。
📌 優缺點
✅ 優點
防止假突破,減少被洗盤出場
自動管理止損(SL),減少風險
適用於多種市場與週期
ATR 過濾交易訊號,降低交易頻率
簡單且有效,沒有太多參數需要優化
⚠️ 缺點
可能在極端趨勢市場下表現不佳(假突破過濾可能導致錯過大趨勢)
依賴 WaveTrend 指標,可能對某些市場不適用
無明確的動態止盈機制(可以額外增加 Trailing Stop 或 Partial TP)
EMA Study Script for Price Action Traders, v2JR_EMA Research Tool Documentation
Version 2 Enhancements
Version 2 of the JR_EMA Research Tool introduces several powerful features that make it particularly valuable for studying price action around Exponential Moving Averages (EMAs). The key improvements focus on tracking and analyzing price-EMA interactions:
1. Cross Detection and Counting
- Implements flags for crossing bars that instantly identify when price crosses above or below the EMA
- Maintains running counts of closes above and below the EMA
- This feature helps students understand the persistence of trends and the frequency of EMA interactions
2. Bar Number Tracking
- Records the specific bar number when EMA crosses occur
- Stores the previous crossing bar number for reference
- Enables precise measurement of time between crosses, helping identify typical trend durations
3. Variable Reset Management
- Implements sophisticated reset logic for all counting variables
- Ensures accuracy when analyzing multiple trading sessions
- Critical for maintaining clean data when studying patterns across different timeframes
4. Cross Direction Tracking
- Monitors the direction of the last EMA cross
- Helps students identify the current trend context
- Essential for understanding trend continuation vs reversal scenarios
Educational Applications
Price-EMA Relationship Studies
The tool provides multiple ways to study how price interacts with EMAs:
1. Visual Analysis
- Customizable EMA bands show typical price deviation ranges
- Color-coded fills help identify "normal" vs "extreme" price movements
- Three different band calculation methods offer varying perspectives on price volatility
2. Quantitative Analysis
- Real-time tracking of closes above/below EMA
- Running totals help identify persistent trends
- Cross counting helps understand typical trend duration
Research Configurations
EMA Configuration
- Adjustable EMA period for studying different trend timeframes
- Customizable EMA color for visual clarity
- Ideal for comparing different EMA periods' effectiveness
Bands Configuration
Three distinct calculation methods:
1. Full Average Bar Range (ABR)
- Uses the entire range of price movement
- Best for studying overall volatility
2. Body Average Bar Range
- Focuses on the body of the candle
- Excellent for studying conviction in price moves
3. Standard Deviation
- Traditional statistical approach
- Useful for comparing to other technical studies
Signal Configuration
- Optional signal plotting for entry/exit studies
- Helps identify potential trading opportunities
- Useful for backtesting strategy ideas
Using the Tool for Study
Basic Analysis Steps
1. Start with the default 20-period EMA
2. Observe how price interacts with the EMA line
3. Monitor the data window for quantitative insights
4. Use band settings to understand normal price behavior
Advanced Analysis
1. Pattern Recognition
- Use the cross counting system to identify typical pattern lengths
- Study the relationship between cross frequency and trend strength
- Compare different timeframes for fractal analysis
2. Volatility Studies
- Compare different band calculation methods
- Identify market regimes through band width changes
- Study the relationship between volatility and trend persistence
3. Trend Analysis
- Use the closing price count system to measure trend strength
- Study the relationship between trend duration and subsequent reversals
- Compare different EMA periods for optimal trend following
Best Practices for Research
1. Systematic Approach
- Start with longer timeframes and work down
- Document observations about price behavior in different market conditions
- Compare results across multiple symbols and timeframes
2. Data Collection
- Use the data window to record significant events
- Track the number of bars between crosses
- Note market conditions when signals appear
3. Optimization Studies
- Test different EMA periods for your market
- Compare band calculation methods for your trading style
- Document which settings work best in different market conditions
Technical Implementation Notes
This tool is particularly valuable for educational purposes because it combines visual and quantitative analysis in a single interface, allowing students to develop both intuitive and analytical understanding of price-EMA relationships.
Falling Wedge Strategy by Nitin//@version=6
strategy("Falling Wedge Strategy by Nitin", overlay=true, margin_long=100, margin_short=100)
// Input parameters
leftBars = input.int(5, "Left Bars for Pivot", minval=1, maxval=20)
rightBars = input.int(5, "Right Bars for Pivot", minval=1, maxval=20)
takeProfitPercent = input.float(20, "Take Profit %", minval=0.1, maxval=100)/100
stopLossPercent = input.float(2, "Stop Loss %", minval=0.1, maxval=100)/100
// Global variables
var float buyPrice = na
var line upperLine = na
var line lowerLine = na
// Detect pivot highs and lows
ph = ta.pivothigh(leftBars, rightBars)
pl = ta.pivotlow(leftBars, rightBars)
// Track last two pivot highs
var float highs = array.new_float()
var int highIndices = array.new_int()
if not na(ph)
array.unshift(highs, ph)
array.unshift(highIndices, bar_index )
if array.size(highs) > 2
array.pop(highs)
array.pop(highIndices)
// Track last two pivot lows
var float lows = array.new_float()
var int lowIndices = array.new_int()
if not na(pl)
array.unshift(lows, pl)
array.unshift(lowIndices, bar_index )
if array.size(lows) > 2
array.pop(lows)
array.pop(lowIndices)
// Calculate trendlines and signals
if array.size(highs) >= 2 and array.size(lows) >= 2
h1 = array.get(highs, 0)
h2 = array.get(highs, 1)
i1 = array.get(highIndices, 0)
i2 = array.get(highIndices, 1)
l1 = array.get(lows, 0)
l2 = array.get(lows, 1)
j1 = array.get(lowIndices, 0)
j2 = array.get(lowIndices, 1)
m_upper = (h1 - h2) / (i1 - i2)
m_lower = (l1 - l2) / (j1 - j2)
currentUpper = h2 + m_upper * (bar_index - i2)
currentLower = l2 + m_lower * (bar_index - j2)
if h1 < h2 and l1 < l2 and m_upper < m_lower and m_upper < 0 and m_lower < 0
line.delete(upperLine)
line.delete(lowerLine)
upperLine := line.new(i2, h2, i1, h1, extend=extend.right, color=color.blue)
lowerLine := line.new(j2, l2, j1, l1, extend=extend.right, color=color.orange)
// Buy signal on breakout
if ta.crossover(close, currentUpper)
strategy.entry("Buy", strategy.long)
buyPrice := close
strategy.exit("Take Profit/Stop Loss", "Buy", stop=buyPrice * (1 - stopLossPercent), limit=buyPrice * (1 + takeProfitPercent))
// Plotting
plotshape(strategy.position_size > 0 ? buyPrice : na, "Buy Price", style=shape.labelup, location=location.belowbar, color=color.green, textcolor=color.white, text="BUY")
plot(strategy.position_size > 0 ? buyPrice * (1 - stopLossPercent) : na, "Stop Loss", color=color.red, linewidth=2)
plot(strategy.position_size > 0 ? buyPrice * (1 + takeProfitPercent) : na, "Take Profit", color=color.green, linewidth=2)
MACD Indicator with Buy and Sell AlertsIntroduction
The MACD Indicator with Alerts & Manual Thresholds is a powerful and customizable MACD-based trading tool designed for traders who want more control over their buy and sell signals. This script allows users to define their own buy and sell thresholds instead of relying solely on standard MACD crossovers. The built-in alerts help traders stay informed about potential trade opportunities without constantly monitoring charts.
How It Works
This script calculates the Moving Average Convergence Divergence (MACD) using customizable fast and slow moving averages. The MACD histogram is derived from the difference between the MACD line and the signal line:
MACD Line: The difference between a fast-moving average (default 12-period EMA) and a slow-moving average (default 26-period EMA).
Signal Line: A smoothed moving average (default 9-period EMA) of the MACD line.
Histogram: The difference between the MACD line and the signal line.
Instead of using default zero-line crossovers, this script allows traders to set custom buy and sell threshold levels:
A buy signal is generated when the MACD histogram crosses above the user-defined buy threshold.
A sell signal is generated when the MACD histogram crosses below the user-defined sell threshold.
Benefits of This Indicator
Custom Thresholds: Unlike traditional MACD indicators, traders can adjust buy and sell thresholds according to their strategy.
Automated Alerts: Get notified instantly when buy or sell conditions are met.
Flexibility in Calculation: Choose between SMA or EMA for both the MACD and signal line calculations.
Clear Visualization: Histogram bars color-coded for quick analysis.
Risks and Limitations
While the MACD indicator is a widely used tool, traders should be aware of its potential risks:
Lagging Indicator: MACD is a trend-following indicator, meaning it may generate signals with some delay.
False Signals in Ranging Markets: MACD works best in trending markets but can produce misleading signals in sideways conditions.
Threshold Optimization Required: Users need to experiment with different buy/sell thresholds to align with their trading strategy and market conditions.
Improving Accuracy with Additional Indicators
For better accuracy and confirmation, combining this MACD strategy with other indicators is recommended:
1. EMA 200 as a Trend Filter
Use the 200-period EMA to determine the overall trend direction.
Consider buying only when price is above EMA 200 (uptrend) and selling only when price is below EMA 200 (downtrend).
2. RSI (Relative Strength Index) for Overbought/Oversold Conditions
RSI (14) can help filter false MACD signals.
A MACD buy signal is stronger when RSI is below 30 (oversold condition).
A MACD sell signal is more reliable when RSI is above 70 (overbought condition).
3. Support & Resistance Levels
Consider placing trades near major support or resistance zones to avoid chasing breakouts.
MACD signals are more effective when they align with these key price levels.
Conclusion
The MACD Indicator with Alerts & Manual Thresholds offers a flexible and powerful approach to trading by allowing users to define their own thresholds. However, for best results, it should be combined with additional indicators such as EMA 200, RSI, and support/resistance levels. Traders should backtest and optimize settings to suit their market conditions and trading style.
By using this indicator alongside proper risk management techniques, traders can enhance their decision-making process and improve their overall trading performance.
Happy Trading!
Ultra Robust Adaptive Trend FlowUltra Robust Adaptive Trend Flow
The Ultra Robust Adaptive Trend Flow indicator is designed to enhance market analysis, specifically for BTC, using a combination of advanced trend-following mechanisms and smooth adaptive techniques. It incorporates two key Exponential Moving Averages (EMAs) of different lengths to identify price direction, with dynamic color coding (green for upward trends, red for downward trends, and gray for neutral) to easily visualize market behavior.
Additionally, the indicator includes a built-in volume analysis filter to reduce "chop" or erratic price movements, ensuring more reliable trend identification. It is optimized for real-time market monitoring and adaptable to multiple timeframes for robust trading insights.
Key Features:
Trend Identification: Fast and slow EMAs to detect bullish and bearish trends.
Volume-based Anti-Chop Filter: Smooths out noise for clearer signals.
Multi-Timeframe Support: Designed for a variety of timeframes with dynamic adaptability.
Simplicity in Design: Offers both a price overlay and a hidden bottom indicator to help traders spot long-term trends without cluttering the chart.
This indicator is ideal for traders looking for adaptive trend-following strategies, with built-in trend reversal filters, ensuring a smoother and more reliable trading experience.
Enhanced Scalping Strategy with Stop Lossscalping indicator that has long,short, and close markers to trade with focused on the 1m candle
Reversal Opportunity📌 Indicator Description – Reversal Opportunity 🎯
🔍 General Overview
The Reversal Opportunity indicator is designed to identify ideal conditions for Reversal Trading, but it does not provide trade entry signals. Instead, it helps traders determine whether the market conditions are favorable for a potential reversal.
It is specifically designed for traders who execute Reversal trades (Long or Short) and want a clear indication of whether the market is currently suitable for such setups.
💡 What does this indicator do?
- Identifies strong momentum before a reversal (a sharp upward or downward move).
- Detects momentum slowdown (decreasing volume and smaller candles).
- Checks if the RSI is at an extreme level (above 70 or below 30), indicating potential overbought or oversold conditions.
- Displays a table at the top center of the screen with the following key data:
- Are the conditions for a reversal met?
- Is there a slowdown in momentum?
- Is RSI at an extreme level?
- Was there strong uptrend momentum before a possible Short Reversal?
- Was there strong downtrend momentum before a possible Long Reversal?
⚙️ How Does the Indicator Work?
The indicator displays a table in the center of the screen, updating every 5 candles to indicate whether the market conditions are ideal for a reversal trade.
📊 Main Status Row:
- ✔ Ideal Reversal Setup → Conditions for a reversal trade are met (not a trade recommendation).
- ✖ Not Ideal → Reversal conditions are not met; it may be better to wait.
📌 Key Criteria Displayed in the Table:
1. ⚠️ Momentum Slowdown
- Yes → Momentum is weakening (a good sign for reversal trades).
- No → The market is still moving strongly, and a reversal might not be ready yet.
2. 📈 RSI Extreme
- Yes → RSI is above 70 (overbought) or below 30 (oversold), indicating a potential reversal.
- No → RSI is still in a normal range, suggesting that waiting for further confirmation might be wise.
3. 📊 Uptrend Momentum Before Reversal
- Yes → There was a strong uptrend over multiple consecutive candles, potentially setting up for a Short Reversal.
- No → No strong upward momentum was detected, meaning conditions for a Short Reversal may not be ideal.
4. 📉 Downtrend Momentum Before Reversal
- Yes → There was a strong downtrend over multiple consecutive candles, potentially setting up for a Long Reversal.
- No → No strong downward momentum was detected, meaning conditions for a Long Reversal may not be ideal.
🛠️ How to Use the Indicator?
- If "✔ Ideal Reversal Setup" appears, there is a high probability of a market reversal – use your personal entry strategy for further confirmation.
- If Momentum Slowdown = Yes, RSI Extreme = Yes, and strong momentum occurred beforehand, this is an ideal setup for a reversal trade.
- If any conditions are missing ("No"), it may be better to wait for further confirmation instead of entering too early.
- The indicator does NOT provide trade entries! Use your existing trading system for confirmation before entering a trade.
👥 Who Is This Indicator For?
- Reversal traders (entering against the current trend after a strong move).
- Intraday traders looking for reversal trades at extreme market levels.
- Technical traders who rely on Price Action and Volume for trade setups.
⚠️ Disclaimer:
This indicator does not recommend trade entries but provides insight into market conditions. The trader is responsible for risk management and decision-making.
It is best used in combination with additional confirmations such as reversal candles, Order Flow, Bookmap, or Volume Profile to improve accuracy.
🚀 The indicator is ready to use – add it to TradingView and get instant feedback on whether the market is ideal for a Reversal trade!
TLP Swing Chart V2// This source code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// Sửa đổi trên code gốc của © meomeo105
// © meomeo105
//@version=5
indicator('TLP Swing Chart V2', shorttitle='TLP Swing V2', overlay=true, max_lines_count=500)
//-----Input-------
customTF = input.timeframe(defval="",title = "Show Other TimeFrame")
showTLP = input.bool(false, 'Show TLP', inline = "TLP1")
colorTLP = input.color(color.aqua, '', inline = "TLP1")
showSTLP = input.bool(true, 'Show TLP Swing', inline = "Swing1")
colorSTLP = input.color(color.aqua, '', inline = "Swing1")
showLabel = input.bool(true, 'Show Label TimeFrame')
lineSTLP = input.string(title="",options= ,defval="(─)", inline = "Swing1")
lineStyleSTLP = lineSTLP == "(┈)" ? line.style_dotted : lineSTLP == "(╌)" ? line.style_dashed : line.style_solid
//IOSB
IOSB = "TLPInOutSideBarSetting"
ISB = input(true,group =IOSB, title="showISB")
colorISB = input.color(color.rgb(250, 171, 0), inline = "ISB")
OSB = input(true,group =IOSB, title="showOSB")
colorOSB = input.color(color.rgb(56, 219, 255), inline = "OSB")
ZoneColor = input(defval = color.new(color.orange, 90),group =IOSB, title = "Background Color")
BorderColor = input(defval = color.new(color.orange, 100),group =IOSB, title = "Border Color")
/////////////////
var aCZ = array.new_float(0)
float highest = high
float lowest = low
if (array.size(aCZ) > 0)
highest := array.get(aCZ, 0)
lowest := array.get(aCZ, 1)
insideBarCondtion = low >= lowest and low <= highest and high >= lowest and high <= highest
if ( insideBarCondtion == true )
array.push(aCZ, high )
array.push(aCZ, low )
if( array.size(aCZ) >= 2 and insideBarCondtion == false )
float maxCZ = array.max(aCZ)
float minCZ = array.min(aCZ)
box.new(bar_index - (array.size(aCZ) / 2) - 1, maxCZ, bar_index - 1, minCZ, bgcolor = ZoneColor, border_color = BorderColor)
array.clear(aCZ)
//////////////////////////Global//////////////////////////
var arrayLineTemp = array.new_line()
// Funtion
f_resInMinutes() =>
_resInMinutes = timeframe.multiplier * (
timeframe.isseconds ? 1. / 60. :
timeframe.isminutes ? 1. :
timeframe.isdaily ? 1440. :
timeframe.isweekly ? 10080. :
timeframe.ismonthly ? 43800. : na)
// Converts a resolution expressed in minutes into a string usable by "security()"
f_resFromMinutes(_minutes) =>
_minutes < 1 ? str.tostring(math.round(_minutes*60)) + "S" :
_minutes < 60 ? str.tostring(math.round(_minutes)) + "m" :
_minutes < 1440 ? str.tostring(math.round(_minutes/60)) + "H" :
_minutes < 10080 ? str.tostring(math.round(math.min(_minutes / 1440, 7))) + "D" :
_minutes < 43800 ? str.tostring(math.round(math.min(_minutes / 10080, 4))) + "W" :
str.tostring(math.round(math.min(_minutes / 43800, 12))) + "M"
f_tfRes(_res,_exp) =>
request.security(syminfo.tickerid,_res,_exp,lookahead=barmerge.lookahead_on)
var label labelError = label.new(bar_index, high, text = "", color = #00000000, textcolor = color.white,textalign = text.align_left)
sendError(_mmessage) =>
label.set_xy(labelError, bar_index + 3, close )
label.set_text(labelError, _mmessage)
var arrayLineChoCh = array.new_line()
var label labelTF = label.new(time, close, text = "",color = color.new(showSTLP ? colorSTLP : colorTLP,95), textcolor = showSTLP ? colorSTLP : colorTLP,xloc = xloc.bar_time, textalign = text.align_left)
//////////////////////////TLP//////////////////////////
var arrayXTLP = array.new_int(5,time)
var arrayYTLP = array.new_float(5,close)
var arrayLineTLP = array.new_line()
int drawLineTLP = 0
_high = high
_low = low
_close = close
_open = open
if(customTF != timeframe.period)
_high := f_tfRes(customTF,high)
_low := f_tfRes(customTF,low)
_close := f_tfRes(customTF,close)
_open := f_tfRes(customTF,open)
highPrev = _high
lowPrev = _low
// drawLineTLP => 2:Tiếp tục 1:Đảo chiều; // Outsidebar 2:Tiếp tục 3:Tiếp tục và Đảo chiều 4 : Đảo chiều 2 lần
drawLineTLP := 0
if(_high > highPrev and _low > lowPrev )
if(array.get(arrayYTLP,0) > array.get(arrayYTLP,1))
if(_high <= high)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _high )
drawLineTLP := 2
else
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_high )
drawLineTLP := 1
else if(_high < highPrev and _low < lowPrev )
if(array.get(arrayYTLP,0) > array.get(arrayYTLP,1))
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_low )
drawLineTLP := 1
else
if(_low >= low)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _low )
drawLineTLP := 2
else if(_high >= highPrev and _low < lowPrev or _high > highPrev and _low <= lowPrev )
if(array.get(arrayYTLP,0) > array.get(arrayYTLP,1))
if(_high >= array.get(arrayYTLP,0) and array.get(arrayYTLP,1) < _low )
if(_high <= high)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _high )
drawLineTLP := 2
else if(_high >= array.get(arrayYTLP,0) and array.get(arrayYTLP,1) > _low )
if(_close < _open)
if(_high <= high)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _high )
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_low )
drawLineTLP := 3
else
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_low )
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_high )
drawLineTLP := 4
else if(array.get(arrayYTLP,0) < array.get(arrayYTLP,1))
if(_low <= array.get(arrayYTLP,0) and _high < array.get(arrayYTLP,1))
if(_low >= low)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _low )
drawLineTLP := 2
else if(_low <= array.get(arrayYTLP,0) and _high > array.get(arrayYTLP,1))
if(_close > _open)
if(_low >= low)
array.set(arrayXTLP, 0, time)
array.set(arrayYTLP, 0, _low )
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_high )
drawLineTLP := 3
else
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_high )
array.unshift(arrayXTLP,time)
array.unshift(arrayYTLP,_low )
drawLineTLP := 4
else if((_high <= highPrev and _low >= lowPrev ))
highPrev := highPrev
lowPrev := lowPrev
if(f_resInMinutes() < f_tfRes(customTF,f_resInMinutes()) and drawLineTLP == 0)
if(array.get(arrayYTLP,0) > array.get(arrayYTLP,1))
if(array.get(arrayYTLP,0) <= high)
array.set(arrayXTLP, 0, time)
drawLineTLP := 2
else
if(array.get(arrayYTLP,0) >= low)
array.set(arrayXTLP, 0, time)
drawLineTLP := 2
if((showSTLP or showTLP) and f_resInMinutes() <= f_tfRes(customTF,f_resInMinutes()))
if(drawLineTLP == 2)
if(array.size(arrayLineTLP) >0)
line.set_xy2(array.get(arrayLineTLP,0),array.get(arrayXTLP,0),array.get(arrayYTLP,0))
else
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,1),array.get(arrayYTLP,1),array.get(arrayXTLP,0),array.get(arrayYTLP,0), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
else if(drawLineTLP == 1)
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,1),array.get(arrayYTLP,1),array.get(arrayXTLP,0),array.get(arrayYTLP,0), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
else if(drawLineTLP == 3)
if(array.size(arrayLineTLP) >0)
line.set_xy2(array.get(arrayLineTLP,0),array.get(arrayXTLP,1),array.get(arrayYTLP,1))
else
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,2),array.get(arrayYTLP,2),array.get(arrayXTLP,1),array.get(arrayYTLP,1), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,1),array.get(arrayYTLP,1),array.get(arrayXTLP,0),array.get(arrayYTLP,0), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
else if(drawLineTLP == 4)
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,2),array.get(arrayYTLP,2),array.get(arrayXTLP,1),array.get(arrayYTLP,1), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
array.unshift(arrayLineTLP,line.new(array.get(arrayXTLP,1),array.get(arrayYTLP,1),array.get(arrayXTLP,0),array.get(arrayYTLP,0), color = colorTLP,xloc = xloc.bar_time, style = lineStyleSTLP))
//////////////////////////Swing TLP//////////////////////////
var arrayXSTLP = array.new_int(5,time)
var arrayYSTLP = array.new_float(5,close)
var arrayLineSTLP = array.new_line()
int drawLineSTLP = 0
int drawLineSTLP1 = 0
if(showSTLP)
if(math.max(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1)) < math.min(array.get(arrayYTLP,0),array.get(arrayYTLP,1)) or math.min(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1)) > math.max(array.get(arrayYTLP,0),array.get(arrayYTLP,1)))
//Khởi tạo bắt đầu
drawLineSTLP1 := 5
array.set(arrayXSTLP, 0, array.get(arrayXTLP,1))
array.set(arrayYSTLP, 0, array.get(arrayYTLP,1))
array.unshift(arrayXSTLP,array.get(arrayXTLP,0))
array.unshift(arrayYSTLP,array.get(arrayYTLP,0))
// drawLineSTLP kiểm tra điểm 1 => 13:Tiếp tục có sóng hồi // 12|19(reDraw):Tiếp tục không có sóng hồi // 14:Đảo chiều
if(array.get(arrayXTLP,0) == array.get(arrayXTLP,1))
if(array.get(arrayXSTLP,0) >= array.get(arrayXTLP,2) and array.get(arrayYSTLP,0) != array.get(arrayYTLP,1) and ((array.get(arrayYTLP,1) > array.get(arrayYTLP,2) and array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1)) or (array.get(arrayYTLP,1) < array.get(arrayYTLP,2) and array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1))))
drawLineSTLP1 := 12
array.set(arrayXSTLP, 0, array.get(arrayXTLP,1))
array.set(arrayYSTLP, 0, array.get(arrayYTLP,1))
else if(array.get(arrayXSTLP,0) <= array.get(arrayXTLP,2))
if((array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1) and array.get(arrayYTLP,1) < array.get(arrayYSTLP,1)) or (array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1) and array.get(arrayYTLP,1) > array.get(arrayYSTLP,1)))
drawLineSTLP1 := 14
array.unshift(arrayXSTLP,array.get(arrayXTLP,1))
array.unshift(arrayYSTLP,array.get(arrayYTLP,1))
else if((array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1) and array.get(arrayYTLP,1) > array.get(arrayYSTLP,0)) or (array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1) and array.get(arrayYTLP,1) < array.get(arrayYSTLP,0)))
drawLineSTLP1 := 13
_max = math.min(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1))
_min = math.max(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1))
_max_idx = 0
_min_idx = 0
for i = 2 to array.size(arrayXTLP)
if(array.get(arrayXSTLP,0) >= array.get(arrayXTLP,i))
break
if(_min > array.get(arrayYTLP,i))
_min := array.get(arrayYTLP,i)
_min_idx := array.get(arrayXTLP,i)
if(_max < array.get(arrayYTLP,i))
_max := array.get(arrayYTLP,i)
_max_idx := array.get(arrayXTLP,i)
if(array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1))
array.unshift(arrayXSTLP,_min_idx)
array.unshift(arrayYSTLP,_min)
else if(array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1))
array.unshift(arrayXSTLP,_max_idx)
array.unshift(arrayYSTLP,_max)
array.unshift(arrayXSTLP,array.get(arrayXTLP,1))
array.unshift(arrayYSTLP,array.get(arrayYTLP,1))
if(f_resInMinutes() < f_tfRes(customTF,f_resInMinutes()))
if(array.get(arrayYSTLP,0) == array.get(arrayYTLP,1) and array.get(arrayXSTLP,0) != array.get(arrayXTLP,1))
array.set(arrayXSTLP, 0, array.get(arrayXTLP,1))
drawLineSTLP1 := 19
if(f_resInMinutes() <= f_tfRes(customTF,f_resInMinutes()))
if(drawLineSTLP1 == 12 or drawLineSTLP1 == 19)
if(array.size(arrayLineSTLP) >0)
line.set_xy2(array.get(arrayLineSTLP,0),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0))
else
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP1 == 14)
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP1 == 13)
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,2),array.get(arrayYSTLP,2),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1), color = colorSTLP,xloc = xloc.bar_time))
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP1 == 15)
if(array.size(arrayLineSTLP) >0)
line.set_xy2(array.get(arrayLineSTLP,0),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1))
else
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,2),array.get(arrayYSTLP,2),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1), color = colorSTLP,xloc = xloc.bar_time))
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
// drawLineSTLP kiểm tra điểm 0 => 3:Tiếp tục có sóng hồi // 2|9(reDraw):Tiếp tục không có sóng hồi // 4:Đảo chiều
if(array.get(arrayXSTLP,0) >= array.get(arrayXTLP,1) and array.get(arrayYSTLP,0) != array.get(arrayYTLP,0) and ((array.get(arrayYTLP,0) > array.get(arrayYTLP,1) and array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1)) or (array.get(arrayYTLP,0) < array.get(arrayYTLP,1) and array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1))))
drawLineSTLP := 2
array.set(arrayXSTLP, 0, array.get(arrayXTLP,0))
array.set(arrayYSTLP, 0, array.get(arrayYTLP,0))
else if(array.get(arrayXSTLP,0) <= array.get(arrayXTLP,1))
if((array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1) and array.get(arrayYTLP,0) < array.get(arrayYSTLP,1)) or (array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1) and array.get(arrayYTLP,0) > array.get(arrayYSTLP,1)))
drawLineSTLP := 4
array.unshift(arrayXSTLP,array.get(arrayXTLP,0))
array.unshift(arrayYSTLP,array.get(arrayYTLP,0))
else if((array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1) and array.get(arrayYTLP,0) > array.get(arrayYSTLP,0)) or (array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1) and array.get(arrayYTLP,0) < array.get(arrayYSTLP,0)))
drawLineSTLP := 3
_max = math.min(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1))
_min = math.max(array.get(arrayYSTLP,0),array.get(arrayYSTLP,1))
_max_idx = 0
_min_idx = 0
for i = 1 to array.size(arrayXTLP)
if(array.get(arrayXSTLP,0) >= array.get(arrayXTLP,i))
break
if(_min > array.get(arrayYTLP,i))
_min := array.get(arrayYTLP,i)
_min_idx := array.get(arrayXTLP,i)
if(_max < array.get(arrayYTLP,i))
_max := array.get(arrayYTLP,i)
_max_idx := array.get(arrayXTLP,i)
if(array.get(arrayYSTLP,0) > array.get(arrayYSTLP,1))
array.unshift(arrayXSTLP,_min_idx)
array.unshift(arrayYSTLP,_min)
else if(array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1))
array.unshift(arrayXSTLP,_max_idx)
array.unshift(arrayYSTLP,_max)
array.unshift(arrayXSTLP,array.get(arrayXTLP,0))
array.unshift(arrayYSTLP,array.get(arrayYTLP,0))
if(f_resInMinutes() < f_tfRes(customTF,f_resInMinutes()))
if(array.get(arrayYSTLP,0) == array.get(arrayYTLP,0) and array.get(arrayXSTLP,0) != array.get(arrayXTLP,0))
array.set(arrayXSTLP, 0, array.get(arrayXTLP,0))
drawLineSTLP := 9
if(f_resInMinutes() <= f_tfRes(customTF,f_resInMinutes()))
if(drawLineSTLP == 2 or drawLineSTLP == 9)
if(array.size(arrayLineSTLP) >0)
line.set_xy2(array.get(arrayLineSTLP,0),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0))
else
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP == 4)
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP == 3)
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,2),array.get(arrayYSTLP,2),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1), color = colorSTLP,xloc = xloc.bar_time))
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
else if(drawLineSTLP == 5)
if(array.size(arrayLineSTLP) >0)
line.set_xy2(array.get(arrayLineSTLP,0),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1))
else
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,2),array.get(arrayYSTLP,2),array.get(arrayXSTLP,1),array.get(arrayYSTLP,1), color = colorSTLP,xloc = xloc.bar_time))
array.unshift(arrayLineSTLP,line.new(array.get(arrayXSTLP,1),array.get(arrayYSTLP,1),array.get(arrayXSTLP,0),array.get(arrayYSTLP,0), color = colorSTLP,xloc = xloc.bar_time))
///////////////////////Other//////////////////////////////////
if(f_resInMinutes() <= f_tfRes(customTF,f_resInMinutes()))
if(showSTLP)
if(showLabel and (barstate.islast or barstate.islastconfirmedhistory))
texLabel = f_resInMinutes() == f_tfRes(customTF,f_resInMinutes()) ? f_resFromMinutes(f_resInMinutes()) : f_resFromMinutes(f_tfRes(customTF,f_resInMinutes()))
label.set_xy(labelTF,array.get(arrayXSTLP,0),array.get(arrayYSTLP,0))
label.set_text(labelTF,texLabel)
label.set_style(labelTF,array.get(arrayYSTLP,0) < array.get(arrayYSTLP,1) ? label.style_label_upper_right : label.style_label_lower_right)
if(not showTLP)
arrayLineTemp := array.copy(arrayLineTLP)
for itemArray in arrayLineTemp
if(line.get_x1(itemArray) < array.get(arrayXSTLP,0))
line.delete(itemArray)
array.remove(arrayLineTLP,array.indexof(arrayLineTLP, itemArray))
//Inside Bars - Outside Bars
insideBar() => ISB and high <= high and low >= low ? 1 : 0
outsideBar() => OSB and (high > high and low < low ) ? 1 : 0
//Inside and Outside Bars
barcolor(insideBar() ? color.new(colorISB,0) : na )
barcolor(outsideBar() ? color.new(colorOSB,0) : na )
Wagmi Lab- Bitcoin H4 Buy Sell Signals This indicator, designed primarily for Bitcoin on the H4 timeframe, is a versatile tool that can also be applied to other assets and timeframes by adjusting its parameters. It combines Exponential Moving Averages (EMAs), MACD (Moving Average Convergence Divergence), and a crossover filtering mechanism to generate reliable buy and sell signals. The indicator is ideal for traders looking to identify trend direction and potential entry/exit points with added precision.
Key Features:
Customizable EMAs and MACD:
Fast EMA (default: 12): Tracks short-term price momentum.
Slow EMA (default: 26): Tracks long-term price momentum.
Signal SMA (default: 9): Smooths the MACD line to generate the signal line.
MACD Crossover Signals:
The indicator calculates the MACD line and signal line to identify potential buy and sell opportunities.
Buy signals are generated when the MACD line crosses above the signal line, indicating bullish momentum.
Sell signals are generated when the MACD line crosses below the signal line, indicating bearish momentum.
Crossover Strength Filter:
A minimum crossover distance percentage (default: 0.1%) ensures that only significant crossovers are considered, reducing false signals.
This filter helps traders avoid weak or insignificant crossovers that may not lead to strong price movements.
Trend Visualization:
The indicator highlights the trend direction by filling the area between the fast and slow EMAs with colors:
Green: Uptrend (MACD > Signal Line).
Red: Downtrend (MACD < Signal Line).
Buy/Sell Signal Markers:
Buy signals are marked with green circles below the price bars.
Sell signals are marked with red circles above the price bars.
These markers provide clear visual cues for potential entry and exit points.
Adaptable to Other Timeframes and Assets:
While optimized for the H4 timeframe, the indicator can be adjusted for other timeframes (e.g., M15, H1, D1) by modifying the EMA and SMA settings.
It can also be applied to other assets, such as stocks, forex, or commodities, by tweaking the parameters to suit the asset's volatility and characteristics.
How to Use:
Identify Trends:
Use the colored areas (green for uptrend, red for downtrend) to determine the overall market direction.
Wait for Confirmation:
Look for buy or sell signals (green or red circles) that align with the trend direction.
Ensure the crossover meets the minimum distance requirement to filter out weak signals.
Enter and Exit Trades:
Enter a long position when a buy signal appears during an uptrend.
Enter a short position or exit a long position when a sell signal appears during a downtrend.
Adjust Settings for Other Timeframes/Assets:
Experiment with the EMA and SMA periods to optimize the indicator for different timeframes or assets.
Why Use This Indicator?
Precision: The crossover strength filter reduces noise and false signals.
Versatility: Works across multiple timeframes and assets with customizable settings.
Visual Clarity: Clear trend visualization and signal markers make it easy to interpret.
This indicator is a powerful tool for traders seeking to capitalize on Bitcoin's volatility or other assets' price movements, providing a structured approach to identifying trends and potential trading opportunities.
Smoothed Candle Averages- NovaTheMachineThis script utilizes a series of moving averages that the user is able to change as they see fit for their own use.
The averages plotted for the first 2 waves are the High-Low rays of the selected period of time with the chosen moving average style.
The Bias is the Heikin Ashi High-Low ray plotted over the chosen time period, while the Secondary Bias is a higher Timeframe Bias for the same period of time on a selected higher timeframe.
The visuals for each ray are able to be changed to either; lines, solid wave, or dynamic wave.
The Dynamic waves will change color according to the total dissection and utilize the Min-Max range selected as a weight for the strength of the trend. Thus providing an at-a-glance overview of the price relative to trend.
The key objective with this script is to gauge the longer term trend with the current price action, to establish patterns and determine strength of moves both away from and towards the moving average/bias.
When both waves are trending with the Bias, it can be reasoned that there is a strong trend established, when waves and Bias are mixed or trending sideways it can be reasoned there is a range forming or potential for a direction change. When price has broken the waves and biases we can reasonably assume that a new trend has been formed, using the waves and biases again to determine the strength and length of the trend.
The Table will display whether the current price is above or below each wave, and whether the price is continuing or retracing. The Signals plotted are used to help identify when price has broken a wave more swiftly.
PRIME RSIThe "PRIME RSI" is a custom variation of the traditional RSI (Relative Strength Index) that offers enhanced flexibility and precision. This indicator provides an adaptable approach for tracking market conditions across different timeframes, making it an ideal tool for both short-term and long-term traders.
Key Features:
Custom Timeframe Selection: Users can select any timeframe to calculate the RSI, providing the ability to analyze data beyond the current chart's timeframe.
Smoothing Methods: Choose between Exponential Moving Average (EMA), Simple Moving Average (SMA), or the Relative Moving Average (RMA) for smoother, more accurate RSI values.
Signal Line: The signal line is smoothed using the selected method and visualized with dynamic coloring to indicate bullish (green) or bearish (red) market conditions.
Overbought/Oversold Levels: Clear levels at 70 (overbought) and 30 (oversold), with fill zones to highlight extreme market conditions, helping traders spot potential reversal points.
Midline at 50: The centerline at 50 serves as a neutral zone, allowing traders to identify shifts in market momentum quickly.
Practical Use:
Trend Confirmation: Use the PRIME RSI to confirm the prevailing market trend, with signals above 50 suggesting bullish momentum and signals below 50 indicating bearish trends.
Overbought/Oversold Conditions: The indicator’s overbought and oversold regions help pinpoint potential market reversals, giving traders valuable entry and exit signals.
Ideal For: All types of traders who want a more flexible and customizable RSI for better trend analysis, especially those working with smaller timeframes or seeking a more responsive momentum indicator.
MACD platinum / zero lag MACD +MACD Platinum Indicator
MACD Platinum enhances the traditional MACD by incorporating Zero Lag EMAs for quicker signal generation. This adaptation was developed by John Ehlers and Rick Way, and gained popularity through Forex trader Jim Brown.
Other Distinctive Features Include:
1. Customizable Signal Line: Options include SMA, EMA, Zero Lag EMA, HMA, WMA (also known as LWMA), VWMA, and RMA (also known as SMMA or Wilder MA).
2. Adjustable MACD Line: Similar to the Signal Line, it can be set to SMA, EMA, Zero Lag EMA, HMA, WMA (LWMA), VWMA, or RMA (SMMA/Wilder MA).
3. Histogram Toggle: Users have the option to display or hide the histogram.
4. Multiple Timeframe Compatibility: Allows for the use of different time intervals from the chart's current interval.
5. Alert Functionality: Fully compatible with setting up alerts for trading signals.
I welcome your feedback to further refine this tool.
Thank you for your interest in MACD Platinum.
A.I. Scalping Strategy - EMA 9 with buy sell signals This indicator is optimized for scalping on lower timeframes: 1 minute, 5 minutes, and 15 minutes. It works quite well, so give it a try.
Anchored VWAPAnchored VWAP with 3 Standard Deviation Bands
📈 Version: Pine Script v5
📌 Author: Aymen Haddaji
🔍 Overview
This indicator calculates an Anchored Volume-Weighted Average Price (AVWAP), allowing traders to anchor the VWAP calculation from a user-defined date and time. It also plots three standard deviation bands above and below the AVWAP to help identify potential areas of overbought and oversold conditions.
📊 Features & Functionality
✔ Custom Anchor Point: Select a specific date and time to start the AVWAP calculation.
✔ OHLC/4 Calculation: Uses the average of Open, High, Low, and Close to smooth the price input.
✔ Three Standard Deviation Bands:
1st Deviation (Green): Moderate volatility zone.
2nd Deviation (Orange): High volatility zone.
3rd Deviation (Red): Extreme overbought/oversold areas.
✔ Real-Time Calculation: Updates dynamically with each price movement.
✔ Clear Visuals:
AVWAP (Blue Line) represents the fair market price from the anchor.
Deviation Bands (Dashed Lines) show potential support and resistance levels.
🛠 How It Works
VWAP Calculation
Uses a cumulative sum of price × volume divided by cumulative volume.
Calculation starts from the user-defined anchor time.
Standard Deviation Bands
Measures the price dispersion around the AVWAP.
The wider the bands, the higher the volatility.
When price touches or exceeds the 3rd deviation, a potential reversal zone is indicated.
Trading Strategies with AVWAP & Deviation Bands
Trend Confirmation:
Price above AVWAP = Uptrend (bullish).
Price below AVWAP = Downtrend (bearish).
Support & Resistance:
AVWAP acts as dynamic support or resistance.
1st & 2nd deviations often act as secondary levels.
Mean Reversion Trading:
When price reaches the 3rd standard deviation, a pullback is likely.
Breakout Confirmation:
A strong close above/below the 3rd deviation may indicate trend continuation.
⚙️ Input Settings
📍 Anchor Time: Allows you to set the exact date and time to start the AVWAP calculation.
🎯 Ideal For
✅ Intraday traders looking for short-term mean reversion plays.
✅ Swing traders identifying key support/resistance zones.
✅ Trend traders confirming long-term market direction.
✅ Volatility traders using standard deviation for trade entries.
Buy Sell Signal//@version=5
indicator("Buy Sell Signal", overlay=true)
// Input settings
length = input(14, title="Moving Average Length")
maType = input.string("SMA", title="Moving Average Type", options= )
// Calculate Moving Average
ma = maType == "SMA" ? ta.sma(close, length) : ta.ema(close, length)
// Buy and Sell Signals
buySignal = ta.crossover(close, ma)
sellSignal = ta.crossunder(close, ma)
// Plot Buy and Sell Signals
plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")
// Plot Moving Average
plot(ma, title="Moving Average", color=color.blue)
Optimized Smart Money Concept for BTCUSDThis indicator identifies breakout patterns in BTCUSD and calculates potential entry points, stop losses, and take profits based on a user-defined risk/reward ratio. It visually marks these levels on the chart, making it easier for traders to spot opportunities.
To optimize this indicator for BTCUSD, we should consider a few factors specific to Bitcoin's price action, such as its volatility, market behavior, and typical patterns. Here's a list of potential adjustments to improve the performance of the strategy for BTCUSD:
1. Volatility Considerations: BTCUSD tends to experience higher volatility, so we might want to adjust the stop-loss and take-profit levels to accommodate these fluctuations.
2. Period Lengths: Bitcoin's price action may respond better to different period lengths for indicators like RSI, MACD, and the swing points.
3. Breakout Conditions: Bitcoin often experiences significant breakouts, so optimizing the breakout pattern and using larger lookback periods for detecting support and resistance might help improve the signal accuracy.
4. Risk/Reward Ratio: You might want to experiment with a wider risk/reward ratio for BTCUSD, given its price swings.
RJ Best Strategy - CCI VWEMA RSI Buy SignalRJ Best Strategy - CCI VWEMA RSI Buy Signal, This is a very useful one, just see the lines cross over of 5min, 15mins and 1hour CCI time frames and take the trade
AyebaleJohnBob-Trading-BotAyebale John Bob - Trading-Bot Overview:
This trading strategy is designed to automate trades based on the "Smart Money Concepts" and "Fair Value Gaps" (FVG). The bot leverages multiple technical indicators and logic to execute buy and sell trades with dynamic stop-loss and take-profit (TP) levels.
Key Features:
User Inputs:
Bull & Bear Colors: Customizable colors for bullish and bearish trends.
Fair Value Gap (FVG) Color: Customizable color for visualizing FVG zones.
ATR Multiplier: Defines the sensitivity of stop-loss calculations based on Average True Range (ATR).
Take-Profit Multipliers: A set of five multipliers that scale take-profit levels dynamically.
Trade Signals:
Buy Signal: Generated when the price crosses above a certain low or when a bullish Fair Value Gap (FVG) is detected.
Sell Signal: Triggered when the price crosses below a high or when a bearish FVG is identified.
Stop-Loss & Take-Profit Logic:
Stop-loss levels are calculated using ATR and the specified multiplier.
Take-profit levels are dynamically determined based on the ATR multipliers, with five different levels for each trade.
Trade Execution:
The strategy allows for five simultaneous buy or sell entries, with each having its own take-profit and stop-loss levels.
The bot operates continuously, without any session restrictions, allowing trades at any time.
Visual Indicators:
Entry Signals: Visual shapes (green for buy and red for sell) appear on the chart to indicate entry points.
Progress Bar: A real-time progress bar is plotted, tracking the percentage gain/loss from the entry price.
Trade Information Table:
A dynamic table is used to display important trade information, including entry price, take-profit levels, and stop-loss. This table updates for each new trade (buy or sell), and shows real-time trade progress.
Risk Management:
The stop-loss is dynamically adjusted based on the ATR calculation, ensuring that the bot adapts to changing market volatility.
Take-profit levels are spread across five increments, offering multiple opportunities for profit capture.
Summary:
The Ayebale John Bob - Trading-Bot is designed to implement a sophisticated strategy that combines smart money concepts, fair value gap analysis, and robust risk management. It provides real-time trade information, progress tracking, and a flexible approach to stop-loss and take-profit strategies. The bot is ideal for traders looking to automate trades and visually track their progress directly on the chart.
papihoppe - PD(eq,open,close,high,low)Hopefully will be updated soon, this is my first time playing around with pinescript. Use this tool in order to instantly mark your previous day levels (open, close, high, low, and equillibrium).
stathis-newbie-1stathis newbie trading signals , trying to create a good script, takes into account
🔧 Strategy Components:
Hull MA (9,21)
Keltner Channels (20,2.5)
ADX(14) > 25
CMF(20)
Market Structure Breaks
Pivot Points
Session Volume Analysis
📊 Key Performance:
Timeframe: 15m
Win Rate: 82.7%
Yearly Trades: 892
Yearly Profit: $2,876
Daily Avg: 2.4 trades