EMA FAST-SLOWThis indicator has the following
ema fast (length 3 and 8 ) based on 240 min
ema slow (length 3 and 8 ) based on daily MTF
The reason for the two length in each EMA is to give us the the insight of shorter trend in larger trend
so the large trend is when ema fast 240 min is above the daily ema slow this is shown in the bullish or bearish zones
the smaler trend for each MTF is shown in different color (lime:red) for ema fast 240 min , and (green:orange) for the slow daily EMA
when we this setting on smaller time frame so it more easy to see where the asset is going this the basic idea
you can change the setting as you wish in oreder to find the best one for your time frame
Search in scripts for "mtf"
Crypto Indicators #u9tusA set of low timeframe (LTF), medium timeframe (MTF), and high timeframe (HTF) indicators for use in crypto currencies / bitcoin.
Traditionally the 10, 20, 50, 100, and 200 SMAs are used in TA. With cryptos, I've found that the 8 EMA, 21, 55, and 128 SMAs backtest better, while no change in length was necessary for the 200. I wanted to combine all these into one indicator to easily add them to a chart layout, hence this script.
You can customize the length of each MA to your liking in the settings, or accept the defaults.
LTF Indicators:
8 EMA in blue hues, medium line stroke.
MTF Indicators:
21, 55 SMA in purple hues, medium line stroke.
HTF Indicators:
128, 200 SMA in yellow hues, thick line stroke.
Defaults are for daily timeframes and lower; suggest changing up the intervals for weekly and monthly to:
21 -> 30
55 -> 50
128 -> 100
$BTC, $ETH, #ALTS
twitter.com
(c) @jhaurawachsman 20190515
X system v1Similar to X system but here I use the super trend with MTF function
the sell option depend on the % channel sell seen in red as bearish rule (so both need to agree)
the buy option depend only on the MTF which is set on 2 hour on 1 hour candles. you can try to modify if you want shorter times to see if it better
if you want it sell more just remove the and bearish rule from t green for buy in the code
try to make it better and I hope it can help you :)
Donochian CCISo this indicator have the following:
1. MTF CCI
2. donochian channel MTF both non repaint mode
buliish and bearish zone determine by ratio of the the donochian cahnnel
enter or exit can be either the bullish or bearish change of color or by cross over or under of the CCI
or combination of both
The high max and low max of the donochian channel show in hilated bar
Donochian zonesThis indicator give the ratio between the high and low of donochian channel and if we take ratio and add it to each other then we can calculate if it + meaning bullish trend or negative meaning bearish trend
using non repainting MTF we can see the zone of the channel at different time set
we can use this indicator to filter bad signal or make it stand alone
here example of amazon stock with 360 min mtf over one hour graph
here facebook 240min over 15 min graph
linreg-areas (like fib system just more accurate) So this system is a different approach to form a daily fib like system.
Its based on linear regression and its slope , we calculate the slope of the line and we put it in MTF format that is without security and non repainting (int2=1440 min)
As you in graph the coin in this case BTC has cycle from low to high similar to the fibs system.
the lowest level is bellow -0.2 , next level is -0.1 ,0,0.1 and above 0.2 is consider the highest
with this system its easy to find the highs and the lows as the coin go between the levels either up or down like the fibs system.
one can use this together with fibs system in order to make analysis more accurate.
also it easy to set signals once the slope go between levels either up or down . another advantage for this system compare to fibs system is the ability to reduce the MTF to lower frame let say 4 hour or even less and then by the same logic to create system of high and lows to the most smaller frames (but if you do that you need in code to change the levels setting numbers so it fit the best )
follow the direction of the slope and you will find the road that you wish:))
Moving Average Stop and Reverse alertsNothing fancy here , the main study is this one
so all credit to him. I change the MTF settings (int2 is contol of that ) and adds alerts
So in basic its a better SAR with MTF function
DEMARSIV1 alerts and take profitThis version is the same as DEMARSI with following differences
I add take profit to short and long when DEMA MTF 1 is crossing DEMA MTF 2 (they are calculated different that why when you increase int2 in min to longer time the difference between them increse)
if you want the TP to be on signal of fast and slow DEMA RSI 2 (just change the code inside) by putting the long cond to be as the buy cond
for any questions please ask
BSP-colorsIts MTF of the BSP model. here i need to warn you that this model can repaint. so I did not create any signals to it. On the other hand since its design for this mistake. you can use it to see the bullish or bearish zones in easy way.
So the basic idea here is to see the zones of buy and sell of weis model in mTF format.
Inverse Fisher-rsi-crudeSo this is a crude version just to show the idea. I use the code of capissoimo, www.tradingview.com
together with my older code and I just change few things. in next version I will try make it more correct, but this is just to show the idea of the MTF reverse fisher RSI
this is setting for 30 min graph with MTF of 120 min
so have fun
Gomoku_V2I tried to improve the one - step equilibrium table.
Since the original glance consisted of the middle line of the Hiroo band, something is calculated from the upper and lower lines.
Leading span A = Double the width of the HiLo band (Green 2) * (1-75 (≒ 76.4% return)), the central complex clouds only changed the expression at a glance.
It is unified to shift all lines at first glance by 25. The old lagging span was renamed to the preceding price span.
You can use the first line of conversion line and reference line with the combination of the preceding conversion line, the preceding reference line and the preceding price span.
The part surrounded by the preceding conversion line and the preceding reference line is defined as rain cloud.
The leading span B is the interpretation of the rain cloud and the effective value of the cloud.
(the width of the reference line and the leading span A) ÷ The width of the rain cloud is like the intensity of the cloud.
Rain clouds have the same properties as clouds, and the twisted parts are weak.
When the type of cloud and rain cloud are different, it is countervailing and resistance seems to be weak.
Even when the width of the leading span A and the leading reference line is narrow, the resistance seems to be weak.
It seems there are clouds above and below as well because it was the motivation for development so there are two clouds each above and below. The clouds are five (although it is actually six) so it is the fifth grade.
It should normally be bounced back in the green zone.
There is a red zone for abnormal price fluctuations.
It seems that the upper and lower clouds only bounce back toward the center.
If you are not satisfied with price movements overall it seems that you are in the range market, often breaking through for the passage of time.
Update Ver 2.0
integrate MTF amagumo
Devices of color arrangement
The resistance is strong where the cloud color is thin.
It should be weak as the force is canceled as much as it is black.
Batch display option for each part
Specealthanks
Ichimoku kinkou hyou
KazmaxFAN Club # Place for technical discussion
一目均衡表を改良してみました。
元の一目はハイローバンドの中線から構成されていたので、上下の線から何かを算出しています。
先行スパンA=ハイローバンドの幅の2倍(Green2)*(1-75(≒76.4%戻し)) という発見により、中央の複雑な雲は一目の表現を変えるだけにしました。
一目の線は全て25前にずらすのに統一です。旧遅行スパンは先行価格スパンに改名しました。
先行転換線と先行基準線と先行価格スパンの組み合わせで一目の転換線と基準線の使い方が出来ます。
先行転換線と先行基準線で囲まれた部分は雨雲と定義。
先行スパンBは雨雲と雲の実効値という解釈です。
(基準線と先行スパンAの幅)÷雨雲の幅が雲の強度という感じです。
雨雲も雲と同じ性質を持っていて、ねじれた部分は弱いぽいです。
雲と雨雲の種類が異なる時は打ち消しあって抵抗が弱いようです。
先行スパンAと先行基準線の幅が狭い時も抵抗が弱いようです。
上下にも雲があるように思えたのが開発の動機だったので上下に各2本雲があります。雲が5本(本当は6本ですが)だから五目です。
通常はグリーンゾーンで跳ね返されるはずです。
異常な価格変動用にレッドゾーンがあります。
上下の雲は中央に向けて跳ね返すくらいしかしないようです。
全体的に価格移動に困ればレンジ相場になって、時間の経過で強行突破することが多いように見えます。
Update Ver2.0
MTF amagumoを統合
配色を工夫
雲の色が薄い所は抵抗が強いです。
黒い所ほど力が打ち消しあって弱いはずです。
各パーツごとに一括表示オプション
Specealthanks
一目均衡表
KazmaxFAN倶楽部 #テクニカル議論の場
Retail Stop-Loss PredictorThe Psychology of Retail Stop-Loss Placement
The "Safe" Buffer Trap
Retail traders are taught to find a recent high or low and place their stop "just a few pips away" to avoid being wicked out.
The Reality: Institutions know exactly where these "buffers" are. They look for clusters of these orders to create the volume they need to fill their large positions.
The Indicator Solution: The SL Predictor automatically calculates these clusters by identifying "Pivots" and applying a Buffer Offset to show the actual zone where the "pain" is felt.
2. Detailed Description of the SL Predictor
A. Multi-Timeframe (MTF) Anchoring
The indicator doesn't just look at your current chart. It "anchors" zones from Higher Timeframes (HTF) like the 4-Hour or Daily.
Why it matters: A stop-loss cluster on a 1-minute chart is a "speed bump." A stop-loss cluster on a Daily chart is a Liquidity Ocean.
Visuals: These zones are drawn as shaded boxes that stay locked to the candle index, ensuring they don't move or repaint when you scroll.
B. Round Number "Magnet" Logic
Retailers have a psychological bias toward Round Numbers (e.g., $100.00, $1.2500).
The Feature: The script identifies these psychological levels and marks them as secondary stop-loss zones. Institutions often "front-run" these levels or sweep them entirely to trigger mass liquidations.
C. Mitigation & Clearing
Once price enters a predicted stop-loss zone, the indicator changes the color to gray or removes the label.
What this means: The "Fuel" has been used. The stops have been triggered. The market has found the liquidity it was looking for and is now ready to reverse or move to the next "pool."
3. Best Use Case: The "Liquidity Hunt" Strategy
Step 1: Identify "Engineered" Liquidity
Look for Equal Highs (Double Tops) or Equal Lows (Double Bottoms). Retailers see these as "Strong Resistance/Support" and pile their stops behind them.
The Indicator: Will highlight these areas with a Red (Short Stops) or Green (Long Stops) shaded box.
Step 2: Wait for the "Stop Run"
Do not enter a trade when price is inside the zone. Wait for price to pierce the zone and then show a sign of rejection (like a long wick).
Institutional Secret: This is the moment the "Smart Money" has finished buying from the retail sellers or selling to the retail buyers.
Step 3: Execution (The "Reverse" Entry)
Once the "Probable Stop" label disappears or the zone turns gray:
Short Entry: If price swept a Red Zone and closed back below it.
Long Entry: If price swept a Green Zone and closed back above it.
Target: The Opposite stop-loss zone. You are trading from one pool of retail "fuel" to the next.
Smooth MTF EMA Cloud - ProEma cloud that has multiple time frames and is smoothed. No choppy outlines on the ema resolution between different time frames.
SMC Structure + HTF Levels + VolatilityDescription: This script is a comprehensive "Smart Money Concepts" (SMC) toolkit designed to filter out market noise and focus only on the Major Market Structure. It combines structural analysis, multi-timeframe key levels, and volatility tracking into a single chart overlay.
Unlike standard fractal indicators that clutter the chart with every minor pivot, this script uses a "Retroactive" logic system to only mark significant Higher Highs (HH), Higher Lows (HL), Lower Lows (LL), and Lower Highs (LH) that confirm a trend break.
Key Features
1. Major Structure Mapping (Retroactive Logic)
The Problem: Standard indicators often mark a "Lower High" too early, only for price to continue higher.
The Solution: This script waits for a Major Low to be broken (confirmed break of structure) before identifying the peak that caused it. It then "looks back" and retroactively labels that peak as the valid Lower High (LH).
Result: You get a clean chart that shows only the true structural legs of the trend, filtering out internal sub-swings and fake-outs.
2. Multi-Timeframe (MTF) Steplines
Automatically plots the previous highs and lows from higher timeframes:
PDH / PDL: Previous Day High & Low (Blue)
PWH / PWL: Previous Week High & Low (Orange)
PMH / PML: Previous Month High & Low (Purple)
These act as major magnet levels for price targets or reversal zones.
3. Volatility Regimes (Expansion vs. Consolidation)
Uses Bollinger Band Width to analyze market energy.
Green Background (Expansion): Volatility is above average. The market is moving fast (breakout or trend).
Gray Background (Consolidation): Volatility is below average. The market is squeezing, indicating a potential big move is building up.
How to Use It
Trend Following: Look for price to form a HL (Higher Low) in an uptrend. Wait for the background to turn Gray (Consolidation), then enter when it turns Green (Expansion) as price breaks upward.
Reversals: Watch for price to hit a PWH (Previous Week High). If a LH (Lower High) label appears shortly after, it confirms the reversal is valid.
Stop Placement: Use the most recent HL or LH labels as safe zones for stop-loss placement, as these represent protected structural points.
Settings
Swing Length: Adjusts how sensitive the structure detection is (Default: 5). Increase this number to see even longer-term structure.
Colors: Fully customizable colors for Bullish/Bearish structure, HTF lines, and Volatility zones.
Show/Hide: You can toggle off any element (like the Monthly levels or Volatility background) to keep your chart clean.
Quantum Trend Flow Pro (QTF+) - Ribbon & LabelsQuantum Trend Flow Pro (QTF+) – Ribbon Edition
Author: Jonathan Mwendwa Ndunge
Overview:
Quantum Trend Flow Pro (QTF+) Ribbon is a professional-grade multi-timeframe trend indicator designed for day traders and swing traders who follow Smart Money Concepts (SMC) and price action strategies. The indicator visualizes market trend strength and probability of bullish or bearish continuation through a dynamic confidence ribbon, while leaving the main chart fully visible for price action analysis.
Key Features:
Multi-Timeframe Trend Alignment:
Computes trend scores across HTF (4H), MTF (1H), and LTF (15M) using Donchian Channels (fast, mid, slow).
Scores trends to provide a quantitative confidence metric.
Confidence Ribbon (Subpane):
Displays bullish (green) and bearish (red) probabilities as a dynamic ribbon histogram.
Neutral line at 50 helps visually identify market balance.
Ribbon is scaled in its own pane so candles remain fully visible, keeping chart clean and professional.
Volatility Filter:
Uses ATR to avoid low-volatility periods that produce choppy signals.
Execution Potential:
Can be combined with CHOCH, Order Block, and Liquidity Sweep scripts to identify high-confidence trade setups.
Professional Display:
Ribbon in a separate pane mimics hedge fund dashboard style, giving traders a quick visual of trend strength without cluttering the price chart.
Usage Notes:
Ideal for day trading and short-term swing trading.
Use in conjunction with execution labels for entries.
Adjust Donchian lengths and confidence threshold to match market behavior and risk tolerance.
Can be applied to multiple instruments for scanning or dashboard setups.
Goal:
Provide a high-confidence, professional visualization of trend strength, combining smart money concepts and multi-timeframe analysis.
Keep the chart clean, readable, and suitable for institutional-style decision-making.
Accurate Swing Trading + Support Resistance MTF (EN)Swing trading setup based on volume and support restistance. use buy main signal for large trend change and for swing trade use buy
STRAT PANEL INTRADAY Extended and ATRUse on intraday charts (≤ 4H).
Multi-timeframe STRAT continuity for: 1m / 5m / 15m / 30m / 1H / 4H / 12H using Extended session candles (toggle in settings).
Columns: STRAT (last 3 closed), LAST (last closed type), CUR (current type: Live/Stable), DIR, REV.
Includes ATR context: D / W / M / 12M + optional ATR-based estimated moves.
MA Smart SyncMA Smart Sync determines the market bias by evaluating the price position relative to a moving average channel on four independent timeframes and returning a confluence signal when a configurable number of them agree.
Unlike standard MTF trend indicators that rely on EMA crossovers or slope direction, this script builds a channel around each timeframe and classifies price into three discrete zones: above, below, or inside. The "inside" state acts as a neutral filter, preventing false confluence signals during consolidation — a key distinction from binary up/down dashboards.
The channel itself can be constructed using five different methods selectable from a single input: High/Low MA (separate MAs applied to high and low), Close ± ATR, Close ± Standard Deviation, Close ± percentage offset, or classic Bollinger Bands. All five use the same MA type and length inputs, making it straightforward to compare how different volatility envelopes behave on the same instrument without rebuilding the indicator.
How to use:
— Set four timeframes matching your trading plan (defaults: 15m, 1h, 4h, D).
— Choose the channel method that fits your instrument's volatility profile. ATR-based channels adapt well to forex; StdDev and Bollinger suit equities and indices.
— Set "Minimum Confluence" to 3 or 4. A value of 4 means all timeframes must agree before a signal fires.
— The background color and arrow labels update only when bias changes, keeping the chart clean.
— Use the status table (top-right) to monitor each timeframe independently and identify which TFs are lagging.
EMA Core Bounce FX (MTF safe Daily Logic)Daily chart core bounce strat
tested works well with the ! H version
TPC-Buying and Selling areasTPC - Buying and Selling Areas
Open-source multi-timeframe indicator that automatically detects and displays Supply (resistance) and Demand (support) zones based on swing structure, along with Fair Value Gaps (FVGs) for imbalance visualization. Supports up to two higher timeframes (MTF) for Supply/Demand + optional current-chart or custom timeframe FVGs, with mitigation tracking, alerts, and a dashboard for FVG stats.
Overview
This tool helps identify key price areas where institutional buying/selling pressure may have accumulated (Supply/Demand zones) and inefficiencies/imbalances in price delivery (Fair Value Gaps).
It plots:
•Demand zones (potential support/buy areas) in green tones
•Supply zones (potential resistance/sell areas) in red tones
•Bullish/Bearish FVGs as filled or line areas (with dynamic or fixed extension options)
•A simple FVG dashboard showing count and mitigation percentage
Zones mitigate (disappear or mark as filled) when price closes/wicks through them. Designed for clean charts with configurable visibility, box pooling, and alerts on new zones or FVG events.
How It Works (Conceptual)
•Supply & Demand Zones
•Uses pivot-based swing highs/lows from one or two user-selectable higher timeframes (or chart timeframe).
•Detects structure breaks (e.g., higher highs/lows, lower highs/lows) near recent ATR range to form zones.
•Zones drawn as extendable boxes with timeframe label, customizable borders/text.
•Mitigation: Zones removed or marked when price breaches them (close or extreme/wick, configurable globally or per TF).
•Only shows recent zones (user-defined "show last N") and cleans up on lower timeframes if desired.
•Fair Value Gaps (FVGs)
•Detects 3-candle imbalances where price gaps aggressively (low > high for bullish, high < low for bearish, with optional size threshold).
•Plots as semi-transparent boxes (fixed extend) or dynamic fills that adjust with price.
•Tracks mitigation (when price fills the gap) and optionally draws dashed mitigation lines.
•Shows unmitigated recent FVGs as lines + dashboard stats (total count, % mitigated for bull/bear).
•Multi-timeframe logic uses request.security() for higher TFs, with careful handling for display on lower charts.
See the code for full pivot detection, array management, mitigation loops, and FVG conditions.
How to Use
•Best on volatile/liquid markets (crypto, forex, indices, futures) across intraday to daily timeframes.
•Use Demand zones (green) as potential long entries or support flips when price approaches from above.
•Use Supply zones (red) as potential short entries or resistance when price approaches from below.
•FVGs highlight inefficiencies: bullish FVGs often act as magnets/pullbacks in uptrends; bearish in downtrends.
•Combine with higher-timeframe bias (e.g., show HTF zones on LTF chart) for confluence.
•Alerts fire on: new demand/supply zone, new bullish/bearish FVG, or FVG mitigation.
•Keep "Show only on lower timeframes" enabled to avoid clutter on HTF charts.
•Adjust "Box Size" (pool) if you hit max_boxes limit on very long histories.
Settings
General Settings
•Hide all Demand / Supply zones
•Show S&D only on lower TFs
•S&D Box Size (pool limit, default 80)
•Mitigate on Close or Wick/Extreme
Timeframe 1 & Timeframe 2 (identical groups)
•Set to chart timeframe (or custom)
•Show Demand/Supply
•Alerts for new zones
•Timeframe multiplier + period (Min/Hour/Day/Week/Month)
•Swing Length for pivots
•Border type/width, text size/color
•Demand/Supply colors
•Show last N zones per type
FVG Settings
•Threshold % (min gap size) or Auto
•Unmitigated levels to show
•Mitigation levels (dashed lines)
•FVG Timeframe (blank = chart)
FVG Style
•Extend bars
•Dynamic fill (adjusts with price)
•Bullish/Bearish colors
FVG Dashboard
•Show dashboard
•Location (Top Right etc.)
•Text size
Notes / Limitations
•Non-repainting after bar close (uses confirmed pivots/security data).
•Heavy on boxes/lines — increase pool size carefully (TradingView limits apply).
•FVGs can fill quickly in ranging markets; use with structure/context.
•Always backtest and combine with your analysis — not financial advice, trading carries risk.
•Open-source: feel free to fork, improve, or learn from it.
Market Structure & Supply-Demand EngineMarket Structure & Supply-Demand Engine (MSD-Engine) is a professional, non-repainting market structure and supply-demand analysis tool built purely on price action and volatility logic.
This indicator is designed for discretionary traders who want a clean, institutional-style view of market structure without lagging indicators or strategy automation.
🔍 What This Indicator Does
MSD-Engine identifies major structural reversals, plots price-action based supply & demand zones, and provides multi-timeframe confluence in a single, unified framework.
It is visual and analytical only — no strategy orders, no backtesting, and no repainting.
🚀 Core Features
• Non-Repainting Market Structure
Event-based swing reversal detection
ATR-adaptive displacement filtering
Confirmed pivots only (no future leaks)
• Pure Supply & Demand Zones
Candle-structure based zone detection
Volume-weighted zone strength
Automatic invalidation on breach
Configurable zone limits to maintain chart clarity
• Multi-Timeframe Context (MTF)
Chart timeframe structure
Two independent higher-timeframe supply & demand layers
Higher-timeframe directional bias visualization
HTF zones plotted only on confirmed HTF closes
• Volatility-Adaptive Logic
ATR normalized across timeframes
Dynamic reversal thresholds
Stable behavior from scalping to swing charts
• Trendline Lifecycle Tracking
Automatic major trendline construction
Single-fire break detection
Break validation / failure logic
HTF-aligned vs counter-trend classification
🧠 Designed For
• Discretionary price-action traders
• Supply & demand traders
• Market structure & smart-money style analysis
• Multi-timeframe confluence trading
• Futures, indices, forex, crypto, and equities
⚠️ Important Notes
This is NOT a strategy or auto-trading system
No buy/sell signals or performance metrics
No repainting (uses barmerge.lookahead_off)
Educational & analytical use only
📜 Disclaimer
This script is provided for educational and analytical purposes only.
It does not constitute financial advice. Trading financial markets involves risk.
Sonic R 89 - NY buy LionLee 079 228 1999//@version=5
indicator("Sonic R 89 - NY SL Custom Fixed", overlay=true, max_lines_count=500)
// --- 0. TÙY CHỈNH THÔNG SỐ ---
group_session = "Cài đặt Phiên Giao Dịch (Giờ New York)"
use_session = input.bool(true, "Chỉ giao dịch theo khung giờ", group=group_session)
session_time = input.session("0800-1200", "Khung giờ NY 1", group=group_session)
session_time2 = input.session("1300-1700", "Khung giờ NY 2", group=group_session)
max_trades_per_session = input.int(1, "Số lệnh tối đa/mỗi khung giờ", minval=1, group=group_session)
group_risk = "Quản lý Rủi ro (Dashboard)"
risk_usd = input.float(100.0, "Số tiền rủi ro mỗi lệnh ($)", minval=1.0, group=group_risk)
group_sl_custom = "Cấu hình Stop Loss (SL)"
sl_mode = input.string("Dragon", "Chế độ SL", options= , group=group_sl_custom)
lookback_x = input.int(5, "Số nến (X) cho Swing SL", minval=1, group=group_sl_custom)
group_htf = "Lọc Đa khung thời gian (MTF)"
htf_res = input.timeframe("30", "Chọn khung HTF", group=group_htf)
group_sonic = "Cấu hình Sonic R"
vol_mult = input.float(1.5, "Đột biến Volume", minval=1.0)
max_waves = input.int(4, "Ưu tiên n nhịp đầu", minval=1)
trade_cd = input.int(5, "Khoảng cách lệnh (nến)", minval=1)
group_tp = "Quản lý SL/TP & Dòng kẻ"
rr_tp1 = input.float(1.0, "TP1 (RR)", step=0.1)
rr_tp2 = input.float(2.0, "TP2 (RR)", step=0.1)
rr_tp3 = input.float(3.0, "TP3 (RR)", step=0.1)
rr_tp4 = input.float(4.0, "TP4 (RR)", step=0.1)
line_len = input.int(15, "Chiều dài dòng kẻ", minval=1)
// --- 1. KIỂM TRA PHIÊN & HTF ---
is_in_sess1 = not na(time(timeframe.period, session_time, "America/New_York"))
is_in_sess2 = not na(time(timeframe.period, session_time2, "America/New_York"))
is_in_session = use_session ? (is_in_sess1 or is_in_sess2) : true
var int trades_count = 0
is_new_session = is_in_session and not is_in_session
if is_new_session
trades_count := 0
htf_open = request.security(syminfo.tickerid, htf_res, open, lookahead=barmerge.lookahead_on)
htf_close = request.security(syminfo.tickerid, htf_res, close, lookahead=barmerge.lookahead_on)
is_htf_trend = htf_close >= htf_open ? 1 : -1
// --- 2. TÍNH TOÁN CHỈ BÁO ---
ema89 = ta.ema(close, 89)
ema34H = ta.ema(high, 34)
ema34L = ta.ema(low, 34)
atr = ta.atr(14)
avgVol = ta.sma(volume, 20)
slope89 = (ema89 - ema89 ) / atr
hasSlope = math.abs(slope89) > 0.12
isSqueezed = math.abs(ta.ema(close, 34) - ema89) < (atr * 0.5)
var int waveCount = 0
if not hasSlope
waveCount := 0
newWave = hasSlope and ((low <= ema34H and close > ema34H) or (high >= ema34L and close < ema34L))
if newWave and not newWave
waveCount := waveCount + 1
// --- 3. LOGIC VÀO LỆNH ---
isMarubozu = math.abs(close - open) / (high - low) > 0.8
highVol = volume > avgVol * vol_mult
buyCondition = is_in_session and (trades_count < max_trades_per_session) and waveCount <= max_waves and is_htf_trend == 1 and
(isMarubozu or highVol) and close > ema34H and low >= ema89 and
(slope89 > 0.1 or isSqueezed ) and close > open
sellCondition = is_in_session and (trades_count < max_trades_per_session) and waveCount <= max_waves and is_htf_trend == -1 and
(isMarubozu or highVol) and close < ema34L and high <= ema89 and
(slope89 < -0.1 or isSqueezed ) and close < open
// --- 4. QUẢN LÝ LỆNH ---
var float last_entry = na
var float last_sl = na
var float last_tp1 = na
var float last_tp2 = na
var float last_tp3 = na
var float last_tp4 = na
var string last_type = "NONE"
var int lastBar = 0
trigger_buy = buyCondition and (bar_index - lastBar > trade_cd)
trigger_sell = sellCondition and (bar_index - lastBar > trade_cd)
// --- 5. TÍNH TOÁN SL & LOT SIZE ---
float contract_size = 1.0
if str.contains(syminfo.ticker, "XAU") or str.contains(syminfo.ticker, "GOLD")
contract_size := 100
// Logic tính SL linh hoạt
float swing_low = ta.lowest(low, lookback_x)
float swing_high = ta.highest(high, lookback_x)
float temp_sl_calc = na
if trigger_buy
temp_sl_calc := (sl_mode == "Dragon") ? ema34L : swing_low
if trigger_sell
temp_sl_calc := (sl_mode == "Dragon") ? ema34H : swing_high
float sl_dist_calc = math.abs(close - temp_sl_calc)
float calc_lots = (sl_dist_calc > 0) ? (risk_usd / (sl_dist_calc * contract_size)) : 0
if (trigger_buy or trigger_sell)
trades_count := trades_count + 1
lastBar := bar_index
last_type := trigger_buy ? "BUY" : "SELL"
last_entry := close
last_sl := temp_sl_calc
float riskAmt = math.abs(last_entry - last_sl)
last_tp1 := trigger_buy ? last_entry + (riskAmt * rr_tp1) : last_entry - (riskAmt * rr_tp1)
last_tp2 := trigger_buy ? last_entry + (riskAmt * rr_tp2) : last_entry - (riskAmt * rr_tp2)
last_tp3 := trigger_buy ? last_entry + (riskAmt * rr_tp3) : last_entry - (riskAmt * rr_tp3)
last_tp4 := trigger_buy ? last_entry + (riskAmt * rr_tp4) : last_entry - (riskAmt * rr_tp4)
// Vẽ dòng kẻ
line.new(bar_index, last_entry, bar_index + line_len, last_entry, color=color.new(color.gray, 50), width=2)
line.new(bar_index, last_sl, bar_index + line_len, last_sl, color=color.red, width=2, style=line.style_dashed)
line.new(bar_index, last_tp1, bar_index + line_len, last_tp1, color=color.green, width=1)
line.new(bar_index, last_tp2, bar_index + line_len, last_tp2, color=color.lime, width=1)
line.new(bar_index, last_tp3, bar_index + line_len, last_tp3, color=color.aqua, width=1)
line.new(bar_index, last_tp4, bar_index + line_len, last_tp4, color=color.blue, width=2)
// KÍCH HOẠT ALERT()
string alert_msg = (trigger_buy ? "BUY " : "SELL ") + syminfo.ticker + " at " + str.tostring(close) + " | SL Mode: " + sl_mode + " | Lot: " + str.tostring(calc_lots, "#.##") + " | SL: " + str.tostring(last_sl, format.mintick)
alert(alert_msg, alert.freq_once_per_bar_close)
// --- 6. CẢNH BÁO CỐ ĐỊNH ---
alertcondition(trigger_buy, title="Sonic R BUY Alert", message="Sonic R BUY Signal Detected")
alertcondition(trigger_sell, title="Sonic R SELL Alert", message="Sonic R SELL Signal Detected")
// --- 7. DASHBOARD & PLOT ---
var table sonic_table = table.new(position.top_right, 2, 10, bgcolor=color.new(color.black, 70), border_width=1, border_color=color.gray)
if barstate.islast
table.cell(sonic_table, 0, 0, "NY SESSION", text_color=color.white), table.cell(sonic_table, 1, 0, last_type, text_color=(last_type == "BUY" ? color.lime : color.red))
table.cell(sonic_table, 0, 1, "SL Mode:", text_color=color.white), table.cell(sonic_table, 1, 1, sl_mode, text_color=color.orange)
table.cell(sonic_table, 0, 2, "Trades this Sess:", text_color=color.white), table.cell(sonic_table, 1, 2, str.tostring(trades_count) + "/" + str.tostring(max_trades_per_session), text_color=color.yellow)
table.cell(sonic_table, 0, 3, "LOT SIZE:", text_color=color.orange), table.cell(sonic_table, 1, 3, str.tostring(calc_lots, "#.##"), text_color=color.orange)
table.cell(sonic_table, 0, 4, "Entry:", text_color=color.white), table.cell(sonic_table, 1, 4, str.tostring(last_entry, format.mintick), text_color=color.yellow)
table.cell(sonic_table, 0, 5, "SL:", text_color=color.white), table.cell(sonic_table, 1, 5, str.tostring(last_sl, format.mintick), text_color=color.red)
table.cell(sonic_table, 0, 6, "TP1:", text_color=color.gray), table.cell(sonic_table, 1, 6, str.tostring(last_tp1, format.mintick), text_color=color.green)
table.cell(sonic_table, 0, 7, "TP2:", text_color=color.gray), table.cell(sonic_table, 1, 7, str.tostring(last_tp2, format.mintick), text_color=color.lime)
table.cell(sonic_table, 0, 8, "TP3:", text_color=color.gray), table.cell(sonic_table, 1, 8, str.tostring(last_tp3, format.mintick), text_color=color.aqua)
table.cell(sonic_table, 0, 9, "TP4:", text_color=color.gray), table.cell(sonic_table, 1, 9, str.tostring(last_tp4, format.mintick), text_color=color.blue)
plot(ema89, color=slope89 > 0.1 ? color.lime : slope89 < -0.1 ? color.red : color.gray, linewidth=2)
p_high = plot(ema34H, color=color.new(color.blue, 80))
p_low = plot(ema34L, color=color.new(color.blue, 80))
fill(p_high, p_low, color=color.new(color.blue, 96))
plotshape(trigger_buy, "BUY", shape.triangleup, location.belowbar, color=color.green, size=size.small)
plotshape(trigger_sell, "SELL", shape.triangledown, location.abovebar, color=color.red, size=size.small)
bgcolor(isSqueezed ? color.new(color.yellow, 92) : na)
bgcolor(not is_in_session ? color.new(color.gray, 96) : na)






















