TSI in Dynamic Zones with Divergence v2.2HOW TO READ IT
A momentum companion oscillator built around the True Strength Index (TSI), with adaptive overbought/oversold zones, automatic divergence detection, and a volatility-context dashboard. Designed to ride underneath a price-chart framework (MA stack / squeeze / trigger systems) as the momentum second opinion: the price chart tells you where, this tells you how much force is behind it. Adapted from the open-source GPL-3.0 "TSI in Dynamic Zones with Divergence" with Pine v6 fixes and display work; published under the same license.
THE 30-SECOND VERSION
Cyan line = TSI (momentum). Orange line = its signal. Cyan above orange = bulls in control; below = bears. The shaded orange band on top and aqua band on the bottom are NOT fixed levels — they're dynamic zones that adapt to the last 70 bars, so "overbought" on a quiet day sits lower than on a wild one. Momentum reaching into a zone is stretched; turning back out of one is the actionable part. Green/red labels on the oscillator are divergences: price and momentum disagreeing, which is an early-warning sign, not an entry by itself.
WHAT EACH ELEMENT MEANS
TSI + signal cross — The basic momentum read. Crosses above zero carry more weight than crosses below it for longs, and vice versa.
Dynamic zones (orange top / aqua bottom) — Percentile-based adaptive OB/OS. Entering a zone = stretched. Exiting back through it = momentum actually turning.
Divergence labels — Green (bullish): price made a lower low but TSI made a higher low — selling force is fading. Red (bearish): price higher high, TSI lower high — buying force is fading. Hidden divergences (aqua/orange, off by default) are continuation signals rather than reversal signals.
White triangles — TSI pivot highs/lows at stretched readings; minor structure inside the oscillator.
Orange / aqua cross markers (top and bottom rows) — A sequence of signal-line cross-bounces that's deteriorating (orange, possible top) or improving (aqua, possible bottom). "Maybe" signals — context, not triggers.
Column colors behind the TSI — Kumo-based implied volatility heat: white/silver/aqua = quiet, yellow/orange = elevated, red/dark red = extreme. Divergences and zone touches mean more when volatility is waking up.
DASHBOARD
TSI — Current value and regime (BULL/BEAR, above/below zero).
Zones — Today's adaptive buy/sell thresholds, so you know what counts as stretched right now.
BB % — Where price sits inside its Bollinger Bands (0 = lower band, 1 = upper).
BBW % — Bollinger Band Width percentile. Under 7 = SQUEEZE (compression — pair this with your price chart's squeeze state). Over 70 = EXPANDED.
MFI — Money Flow Index: volume-weighted momentum, OB above 80 / OS below 20.
Kumo IV — The volatility regime in words, MINIMAL through EXTREME.
SMALL SCREENS — TINY AND COMPACT MODES
Settings → Inputs → Dashboard:
• Dashboard text size — Tiny / Small / Normal. Tiny roughly halves the footprint; recommended on phones and small laptops.
• Dashboard mode — Full shows all 6 rows. Compact merges everything into 3 short rows: TSI value + regime, the two zone thresholds, and a one-line volatility readout (BBWP · IV · MFI). Phone recipe: Compact + Tiny + a corner position.
• Dashboard position — six anchor choices to keep it out of the oscillator's way.
KEY SETTINGS
TSI lengths (5/12/10) — Faster than the textbook 25/13 on purpose; built for intraday timeframes.
Cross signal threshold (±) — Gates the orange/aqua cross-bounce markers to crosses beyond ± this value. Default 0 (any cross past zero); raise toward 30 to only flag crosses at stretched readings.
Divergence pivot lookbacks — Lower left-lookback = more signals, more noise. 5 is aggressive; 8–10 is conservative.
Filter crossovers by BBWP — On by default: zero-line crossover alerts are suppressed during squeezes, when chop makes them unreliable.
Hidden divergences — Off by default; turn on if you trade continuation setups.
HONEST LIMITATIONS
Divergence labels confirm one bar after the pivot — the label appears with a delay by design, and acting on an unconfirmed wiggle is how divergence trading goes wrong. Divergences fail routinely in strong trends; momentum can stay "wrong" far longer than a position can. The dynamic zones need their full lookback (70 bars) of history to mean anything — ignore them in the first bars of a newly listed symbol or a fresh session on low-history tickers. This oscillator describes momentum; it knows nothing about structure, levels, or news. Read it alongside a price framework, not instead of one.
This is a study tool, not trade advice, and not an executor. Nothing here is a recommendation to buy or sell anything. Test it, judge the signals against what actually happened, and size your own risk. 지표

지표

지표

Skippy the Indicator v1.8.4Multi-timeframe MA-structure framework for short-timeframe momentum trading. Codifies a full squeeze-to-exit sequence — squeeze arming, 50ma curl, MA-stack trigger, MA5 ride, staged exit — into plain-language labels, a state machine, and a dashboard.
THE SEQUENCE
The core logic walks one setup from start to finish:
WATCH → READY → BUY → HOLD → TRIM or SELL
WATCH — Squeeze armed. Bollinger Bands are inside the Keltner Channels; energy is compressing.
READY ▲/▼ — The 50ma has begun to curl in the trade direction. Early heads-up.
BUY ▲/▼ — Gamma trigger. MA5, MA10, and MA20 have all closed beyond the 50ma, with the required number of confirmation closes (user-set, default 1). A ★ on the BUY marks a full-sequence setup: squeeze → curl → cross.
HOLD ▲/▼ — Price retested the MA5 and held (the glue). Trend intact.
TRIM ▲/▼ — MA5 glue failed. The leg is done but the thesis is alive. Lighten and watch for re-entry. This is NOT an exit signal.
SELL ▲/▼ — Price rejected at the 50ma with confirmed closes. Thesis dead.
TRIM vs SELL is the one distinction not to blur: orange means the leg ended, red means the trade ended.
A Display toggle switches all labels to technical names (ARMED / CURL / GLUE ✓✗ / ✕50) if you prefer.
REVERSAL SIGNALS
PR — Potential Reversal at a Bollinger Band extreme, RSI-confirmed. As of v0.8.4, PR fires intrabar the moment the high/low touches the band — non-repainting, since a bar's high/low can only extend, never retract. A toggle restores close-confirmed firing. PR is a mean-reversion signal and misfires in strong trends by design — that is what HOLD and the Direction row are for.
RIDE logic converts a failed fade into a continuation read: PR fires, then MA5 holds on the retest — the fade failed and the prior trend is resuming.
DASHBOARD
Seq State in plain language (WAITING / WATCHING / GETTING READY / IN TRADE / LEG DONE — WATCH RE-ENTRY), Direction from full MA-stack alignment, RSI veto row, Fast TFs (5/15/30m) and Slow TFs (1h/4h/D/W) bullish counts, cascading three-level target sequence, structure proximity (previous highs/lows, necklines — wick-measured as of v0.8.4), session window, and volume (informational only — it never gates signals).
Display options: Full (19 rows) or Compact (9 rows), Tiny/Small/Normal text size, and position. On phones use Compact + Tiny + bottom right.
ALERTS
Every label has a matching alert, and push notifications lead with the action word ("BUY ▲ — MA5/10/20 closed above 50ma"). PR and structure alerts use touch semantics — set alert frequency to "Once per bar."
READING IT
Trigger and exit logic is close-confirmed on the chart timeframe: "through" a level means a confirmed close, not a wick. The state machine reads one chart — always check higher timeframes before acting. Fast/slow TF agreement is the conviction read; disagreement is information (fast bear + slow bull = pullback in an uptrend, fast bull + slow bear = bounce in a downtrend).
This is a study and visual-verification tool, not trade advice and not an executor. The label words are signal names, not instructions — nothing here is a recommendation to buy or sell anything. Judge the signals against what actually happens and size your own risk. 지표

지표

CQ_(9)_Zig Zag Auto Fibonacci Retracement================================================================================
CQ_(9)_
USER MANUAL
================================================================================
Author handle : CQuevedo345
Platform : TradingView
Language : Pine Script v6
Type : Overlay indicator
Built from : Section 1 = CQ_(5)_Zig Zag Trend Metrics (ported verbatim)
Section 2 = CQ_(8)_Auto Fibonacci Retracement (adapted to be
fed by the zigzag's last confirmed leg)
--------------------------------------------------------------------------------
1. WHAT THIS INDICATOR DOES
--------------------------------------------------------------------------------
This script merges two tools into one overlay:
A) A ZIG ZAG SWING ENGINE that detects confirmed swing highs and lows over
a user-defined lookback period, connects them with lines, labels each
swing with its price/percent change and bar-time distance from the prior
opposite swing, and (optionally) shows a running statistics table of the
average up-leg and down-leg size/duration.
B) An AUTO FIBONACCI RETRACEMENT + GAUGE that is automatically anchored to
whatever the zigzag currently considers its LAST CONFIRMED LEG. As the
zigzag confirms new swings, the Fibonacci grid re-anchors itself with no
manual drawing required.
Because the retracement math is direction-agnostic (0% is always the newest
pivot, 100% is always the older pivot), the readout flips meaning depending on
the leg type:
- Last leg is BEARISH (High -> Low) => retracement is measured UP from the
low, i.e. it reads as a potential BULLISH bounce.
- Last leg is BULLISH (Low -> High) => retracement is measured DOWN from
the high, i.e. it reads as a potential BEARISH pullback.
--------------------------------------------------------------------------------
2. HOW THE ZIG ZAG ENGINE WORKS (SECTION 1)
--------------------------------------------------------------------------------
- Every bar, the script checks whether the current bar's high is the highest
high of the last "Period" bars (a confirmed pivot high) or the current low
is the lowest low of the last "Period" bars (a confirmed pivot low).
- "direction" flips to +1 on a new pivot high context and -1 on a new pivot
low context. A swing point is only "added" the first time direction flips;
while direction stays the same, the existing extreme point is simply
UPDATED (extended) if price makes a more extreme high/low.
- Each swing point gets a label showing:
* Pattern tag: HH / LH (higher high / lower high) or LL / HL
(lower low / higher low)
* The price or percent change versus the most recent OPPOSITE swing
(format controlled by the "Δ Format" input)
* Elapsed bars ("⏱") since that opposite swing
* Optionally, a second "cycle" line showing elapsed bars since the
previous SAME-type swing (Show "Display Cycle")
- Connecting lines:
* Thin "range lines" link consecutive same-type swings (high-to-high,
low-to-low) if "Range Lines" is enabled.
* Thick colored lines link low-to-high (bullish leg, up color) and
high-to-low (bearish leg, down color) — these are the zigzag's main
visible backbone and are what Section 2 anchors to.
* A fill (linefill) shades the area between the most recent high-to-high
and low-to-low lines.
- A statistics table (optional) shows the GEOMETRIC AVERAGE of the last N
("Averaging") up-leg and down-leg price changes and their average bar
durations. Geometric averaging is used instead of arithmetic to better
represent compounding percentage moves.
--------------------------------------------------------------------------------
3. HOW THE FIBONACCI ENGINE WORKS (SECTION 2)
--------------------------------------------------------------------------------
- A "leg bridge" watches the zigzag's internal arrays every bar. Whenever the
zigzag's lastSwingType is "high" and a bullish line exists, that bullish
line becomes the active Fibonacci anchor (0%=high just made, 100%=the low
it came from). Whenever lastSwingType is "low" and a bearish line exists,
that bearish line becomes the anchor instead (0%=low just made, 100%=the
high it came from).
- The active leg line is automatically restyled DASHED with hollow circle (◯)
markers at both ends so you can see at a glance which leg is currently
driving the Fibonacci grid. When a newer leg takes over, the old leg is
reverted back to its normal solid zigzag styling.
- Standard retracement levels drawn: 0%, 25%, 40%, 50%, 60%, 75%, 90%, 100%
(each individually toggleable).
- Extended/projection levels are drawn AUTOMATICALLY, only when price has
actually traded through the prior threshold level: -25%, -50%, -100%,
-150%, -200%, 125%, 150%, 200%. These auto-lines fade in only when needed,
keeping the chart clean during normal retracements.
- Each level shows:
* A short horizontal "identifier" line from the pivot's opposite end out
to the current bar (dotted for internal levels, solid+thick for 0%/100%)
* A small tick/handle at the right-hand gauge column
* A label with the level percentage and (optionally) the exact price
- GAUGE (drawn at the 100% level position, right side of chart by default):
* Outer dotted box + white/colored end lines = the highest/lowest price
reached since the anchor leg was confirmed (the "extreme" reading,
also shown as a small ▲/▼ % label).
* Inner solid box + thick colored line = current CLOSE plotted against
the 0% pivot price, i.e. a compact visual "how far has price already
retraced/extended" bar.
- PROFIT LABEL (drawn at the 0% level): shows the raw $ change of the current
close versus the 0% pivot price, with a tooltip giving the % change too.
- An optional raw CLOSE PRICE line/area/histogram/step/cross/column/circle
plot can be overlaid for reference (off by default).
--------------------------------------------------------------------------------
4. INPUT REFERENCE
--------------------------------------------------------------------------------
♦ lines (zigzag)
- Period : Lookback bars used to confirm a pivot high/low
- Color ↑ / ↓ : Colors of the bullish/bearish zigzag legs
- Width : Line width of the zigzag legs
- Range Lines / color : Toggle + color for the thin high-to-high /
low-to-low connector lines
- Highlight Last Confirmed Leg : Toggle the dashed+circle styling on the
active leg
- Marker Size : Size of the hollow circle end markers
♦ labels (zigzag)
- Δ Format : "Percent" or "Absolute" for the swing-label
price change readout
- Text Size : Size of zigzag swing labels
- Display Cycle : Adds a second same-type elapsed-time line to
each swing label
♦ statistics table (zigzag)
- Show Stats table : Toggle the table on/off
- Location / Size : Table position and text size
- Averaging : Number of past legs used in the geometric
average calculation
🪙 Fibonacci Retracement — ⚙ Master Control
- Enable Fibonacci Gauge : Master on/off switch for Section 2
- 25% / 40% / 50% / 60% / 75% / 90% : Toggle each standard retracement level
Close Price Plot
- Show Line Graph, Color, Width, Style : Optional raw price plot overlay
Color Settings
- BEARISH / BULLISH theme colors (note: named for the CURRENT tendency the
retracement implies, not the leg direction itself — see Section 1 note
above)
- Use Trend Colors for Labels (+ independent label colors if disabled)
- Label Side (vs Gauge) : Left or Right label placement
- Gauge ⁞▌ toggle + Bullish/Bearish highlight colors
- Gauge X-Offset : Horizontal offset of the gauge column from the
anchor bar
- Level Tick Length (Right) : Length of the small tick marks at the gauge
- Show Price on Labels : Adds the exact price under each % label
- Label Size
- Gauge at Line End (vs Current Bar) : Anchors the gauge column to the end
of the active leg line instead of following the
live/current bar
♦ Last Confirmed Leg
- Dash Last Leg : Restyle the active leg as dashed
- Mark Start/End (Hollow Circles) : Add ◯ markers at both ends
- Circle Size
--------------------------------------------------------------------------------
5. READING THE CHART — QUICK GUIDE
--------------------------------------------------------------------------------
1. Find the DASHED leg with ◯ markers — that is the leg currently driving the
Fibonacci grid.
2. Check which color theme is active at the gauge (BULLISH vs BEARISH theme
color) to know whether the retracement is reading as an up-bounce or a
down-pullback.
3. Use the OUTER gauge box to see how far price has already run beyond the
0%/100% pivots (the extreme reached since the leg was confirmed).
4. Use the INNER gauge box/line to see where the current close sits relative
to the 0% pivot right now.
5. The PROFIT label at 0% gives you a quick $ (and, via tooltip, %) read of
how far price has moved from the most recent extreme pivot.
6. Auto-extension levels (125%, 150%, 200%, -50%, -100%, etc.) only appear
once price has actually traded past the prior level — their absence means
price hasn't reached that extension yet.
--------------------------------------------------------------------------------
6. TECHNICAL NOTES / ARCHITECTURE
--------------------------------------------------------------------------------
- indicator() flags: max_labels_count=500, max_lines_count=500,
max_boxes_count=500, explicit_plot_zorder=true, max_bars_back=4000.
- Section 1 is ported VERBATIM from CQ_(5)_Zig Zag Trend Metrics — no logic
was altered, only reused as the pivot/leg source of truth.
- Section 2 does not run its own pivot detection; it reads directly from the
Section 1 arrays (swingHighValues/BarIndexes, swingLowValues/BarIndexes,
bullishLines, bearishLines, lastSwingType) each bar via the "leg bridge"
block, so the two sections always stay in sync.
- Persistent var objects (lines/boxes/labels) are reused and repositioned in
place each bar rather than deleted/recreated, following the standard CQ
collect-then-update pattern for efficient rendering.
- request.security() is used once to pull a small multi-value tuple
(volume, OHLC variants, ATR14, RSI-of-PVT, etc.) — several of these fields
are legacy/reserved from the source script and only k_atr14 and k_high/
k_low are actively used by the current Fibonacci logic.
- Colors for the "BULLISH"/"BEARISH" theme inputs are intentionally reversed
relative to leg direction — they represent the TENDENCY implied by the
retracement, not the raw zigzag leg color. This mirrors the source script
(CQ_(8)) naming convention; see Section 3 note if this feels
counter-intuitive at first.
--------------------------------------------------------------------------------
7. VERSION / COMPATIBILITY
--------------------------------------------------------------------------------
- Written for Pine Script v6.
- overlay=true — must be applied directly to the price chart, not a
separate pane.
- No alerts or strategy logic included; this is a pure visual/analysis tool.
================================================================================
END OF MANUAL
================================================================================ 지표

지표

지표

지표

지표

지표

Gabriel Gartley O-A-B-C-D Screener w/ TargetO, A, B, C labeled (yellow) with actual retrace % on B and C; card ratios enforced: B ≈ 0.618 of O-A, C = 0.382–0.886 of A-B, D ≈ 0.786 of O-A (tunable tolerance)
D (Stop-Loss) in red with price + dashed stop line
"Buy with Support ▲" after bullish D; mirror "Sell after Resistance ▼" after bearish D
TARGET for the last leg past D (default 61.8% of O-A, tunable) — dashed orange level + dotted projection ray
Green/red legs per direction, gray dashed O-D and A-C guide lines, alerts with D, stop, and target prices 지표

Sniper Open - Complete SignalSniper Open — NY Open FVG + Liquidity + Momentum
This indicator detects a specific 3-part confluence at the New York market open (9:30-9:45 ET):
Fair Value Gap (FVG) — a 3-candle imbalance in price
Liquidity Zone alignment — the gap must sit near a validated equal-high/equal-low level (2+ touches within 24 hours)
Momentum confirmation — the confirming candle must close in the signal's direction
Order block alignment — a recent order block in the same direction must exist
All four conditions must align, during the 9:30-9:45 ET window specifically, for a confirmed signal to fire.
Backtested results (3 years of NQ data, train/test validated):
~66-71% win rate on filled trades
~13-16 point average expectancy per filled trade
Signals fire roughly once every 2 trading days
How to use it:
The small faded circles are "watching" markers — an unconfirmed setup possibly forming. Informational only, not a trade signal.
The solid triangle is the confirmed signal. When it appears, place a limit order at the entry price shown (not a market order).
If your limit order isn't filled within 15 minutes, cancel it. This happens on roughly 44% of signals — it's expected, not a malfunction. The strategy's edge comes from letting price return to the level, not chasing it.
Stop and target levels are drawn automatically alongside each signal.
Important disclaimers:
This is backtested historical data, not a live trading track record. Past performance does not guarantee future results.
This is not financial advice. Trade at your own risk and do your own due diligence.
Built and tested specifically for NQ futures at the NY open — performance on other instruments or timeframes is not validated.
No mechanical filter can eliminate all uncertainty — momentum can reverse, targets aren't always reached, and drawdowns happen even in genuinely validated strategies. 지표

지표

Bo3li.trading Scalper//@version=6
indicator(
title = "Bo3li.trading Scalper",
shorttitle = "Bo3li.trading",
overlay = true,
max_lines_count = 100,
max_labels_count = 100,
max_boxes_count = 20
)
//====================================================
// إعدادات الدعم والمقاومة ومناطق العرض والطلب
//====================================================
pivotLeft = input.int(
5,
"قوة المنطقة من اليسار",
minval = 1,
group = "الدعم والمقاومة"
)
pivotRight = input.int(
5,
"قوة المنطقة من اليمين",
minval = 1,
group = "الدعم والمقاومة"
)
atrLength = input.int(
14,
"فترة ATR",
minval = 1,
group = "الدعم والمقاومة"
)
zoneSizeATR = input.float(
0.30,
"سُمك منطقة العرض والطلب",
minval = 0.05,
step = 0.05,
group = "الدعم والمقاومة"
)
showZones = input.bool(
true,
"إظهار مناطق العرض والطلب",
group = "الدعم والمقاومة"
)
showSupportResistance = input.bool(
true,
"إظهار خطوط الدعم والمقاومة",
group = "الدعم والمقاومة"
)
//====================================================
// إعدادات فلتر الدخول
//====================================================
useTrendFilter = input.bool(
true,
"استخدام فلتر الاتجاه",
group = "فلتر الدخول"
)
emaFastLength = input.int(
20,
"EMA السريع",
minval = 1,
group = "فلتر الدخول"
)
emaSlowLength = input.int(
50,
"EMA البطيء",
minval = 1,
group = "فلتر الدخول"
)
useRSIFilter = input.bool(
true,
"استخدام فلتر RSI",
group = "فلتر الدخول"
)
rsiLength = input.int(
14,
"فترة RSI",
minval = 1,
group = "فلتر الدخول"
)
buyRSILevel = input.int(
52,
"أقل RSI للشراء",
minval = 1,
maxval = 99,
group = "فلتر الدخول"
)
sellRSILevel = input.int(
48,
"أعلى RSI للبيع",
minval = 1,
maxval = 99,
group = "فلتر الدخول"
)
//====================================================
// إعدادات الأهداف ووقف الخسارة
//====================================================
// على الذهب:
// 1 Pip = 0.10 دولار من حركة السعر
// 50 Pip = 5 دولارات
// 100 Pip = 10 دولارات
// 150 Pip = 15 دولاراً
pipSize = input.float(
0.10,
"قيمة Pip بالسعر",
minval = 0.00001,
step = 0.01,
tooltip = "للذهب: 100 Pip تساوي حركة 10 دولارات",
group = "الأهداف ووقف الخسارة"
)
tpStepPips = input.int(
50,
"المسافة بين كل TP",
minval = 1,
group = "الأهداف ووقف الخسارة"
)
slPips = input.int(
50,
"SL بالـ Pip",
minval = 1,
group = "الأهداف ووقف الخسارة"
)
tp1Pips = tpStepPips
tp2Pips = tpStepPips * 2
tp3Pips = tpStepPips * 3
projectionBars = input.int(
40,
"طول خطوط الصفقة",
minval = 5,
maxval = 200,
group = "الأهداف ووقف الخسارة"
)
//====================================================
// إعدادات المظهر
//====================================================
showEMAs = input.bool(
true,
"إظهار المتوسطات",
group = "المظهر"
)
showSignals = input.bool(
true,
"إظهار إشارات الشراء والبيع",
group = "المظهر"
)
showWatermark = input.bool(
true,
"إظهار Bo3li.trading بالخلفية",
group = "المظهر"
)
//====================================================
// الحسابات
//====================================================
atrValue = ta.atr(atrLength)
zoneThickness = atrValue * zoneSizeATR
emaFast = ta.ema(close, emaFastLength)
emaSlow = ta.ema(close, emaSlowLength)
rsiValue = ta.rsi(close, rsiLength)
pivotHigh = ta.pivothigh(
high,
pivotLeft,
pivotRight
)
pivotLow = ta.pivotlow(
low,
pivotLeft,
pivotRight
)
//====================================================
// تخزين آخر دعم ومقاومة
//====================================================
var float resistancePrice = na
var float supportPrice = na
var float supplyTop = na
var float supplyBottom = na
var float demandTop = na
var float demandBottom = na
if not na(pivotHigh)
resistancePrice := pivotHigh
supplyTop := pivotHigh
supplyBottom := pivotHigh - zoneThickness
if not na(pivotLow)
supportPrice := pivotLow
demandTop := pivotLow + zoneThickness
demandBottom := pivotLow
//====================================================
// مناطق العرض والطلب
//====================================================
var box supplyBox = na
var box demandBox = na
var label supplyLabel = na
var label demandLabel = na
if not na(pivotHigh)
if not na(supplyBox)
box.delete(supplyBox)
if not na(supplyLabel)
label.delete(supplyLabel)
if showZones
supplyBox := box.new(
left = bar_index - pivotRight,
top = supplyTop,
right = bar_index,
bottom = supplyBottom,
border_color = color.new(color.red, 25),
border_width = 1,
bgcolor = color.new(color.red, 88),
extend = extend.right
)
supplyLabel := label.new(
x = bar_index - pivotRight,
y = supplyTop,
text = "منطقة عرض",
style = label.style_label_down,
color = color.new(color.red, 10),
textcolor = color.white,
size = size.small
)
if not na(pivotLow)
if not na(demandBox)
box.delete(demandBox)
if not na(demandLabel)
label.delete(demandLabel)
if showZones
demandBox := box.new(
left = bar_index - pivotRight,
top = demandTop,
right = bar_index,
bottom = demandBottom,
border_color = color.new(color.green, 25),
border_width = 1,
bgcolor = color.new(color.green, 88),
extend = extend.right
)
demandLabel := label.new(
x = bar_index - pivotRight,
y = demandBottom,
text = "منطقة طلب",
style = label.style_label_up,
color = color.new(color.green, 10),
textcolor = color.white,
size = size.small
)
if not showZones
if not na(supplyBox)
box.delete(supplyBox)
supplyBox := na
if not na(demandBox)
box.delete(demandBox)
demandBox := na
if not na(supplyLabel)
label.delete(supplyLabel)
supplyLabel := na
if not na(demandLabel)
label.delete(demandLabel)
demandLabel := na
//====================================================
// خطوط الدعم والمقاومة البرتقالية
//====================================================
plot(
showSupportResistance ? resistancePrice : na,
title = "المقاومة",
color = color.orange,
linewidth = 2,
style = plot.style_stepline
)
plot(
showSupportResistance ? supportPrice : na,
title = "الدعم",
color = color.orange,
linewidth = 2,
style = plot.style_stepline
)
//====================================================
// المتوسطات المتحركة
//====================================================
plot(
showEMAs ? emaFast : na,
title = "EMA السريع",
color = color.aqua,
linewidth = 1
)
plot(
showEMAs ? emaSlow : na,
title = "EMA البطيء",
color = color.purple,
linewidth = 2
)
//====================================================
// شروط الدخول
//====================================================
bullTrend = emaFast > emaSlow and close > emaFast
bearTrend = emaFast < emaSlow and close < emaFast
bullRSI = rsiValue >= buyRSILevel
bearRSI = rsiValue <= sellRSILevel
buyTrendAllowed = not useTrendFilter or bullTrend
sellTrendAllowed = not useTrendFilter or bearTrend
buyRSIAllowed = not useRSIFilter or bullRSI
sellRSIAllowed = not useRSIFilter or bearRSI
// الشراء بعد كسر المقاومة والإغلاق فوقها
rawBuySignal =
not na(resistancePrice) and
ta.crossover(close, resistancePrice)
// البيع بعد كسر الدعم والإغلاق تحته
rawSellSignal =
not na(supportPrice) and
ta.crossunder(close, supportPrice)
buySignal =
barstate.isconfirmed and
rawBuySignal and
buyTrendAllowed and
buyRSIAllowed
sellSignal =
barstate.isconfirmed and
rawSellSignal and
sellTrendAllowed and
sellRSIAllowed
//====================================================
// خطوط الصفقة
//====================================================
var line entryLine = na
var line tp1Line = na
var line tp2Line = na
var line tp3Line = na
var line slLine = na
var label entryLabel = na
var label tp1Label = na
var label tp2Label = na
var label tp3Label = na
var label slLabel = na
//====================================================
// صفقة شراء
//====================================================
if buySignal
if not na(entryLine)
line.delete(entryLine)
if not na(tp1Line)
line.delete(tp1Line)
if not na(tp2Line)
line.delete(tp2Line)
if not na(tp3Line)
line.delete(tp3Line)
if not na(slLine)
line.delete(slLine)
if not na(entryLabel)
label.delete(entryLabel)
if not na(tp1Label)
label.delete(tp1Label)
if not na(tp2Label)
label.delete(tp2Label)
if not na(tp3Label)
label.delete(tp3Label)
if not na(slLabel)
label.delete(slLabel)
float entryPrice = close
float tp1Price = entryPrice + tp1Pips * pipSize
float tp2Price = entryPrice + tp2Pips * pipSize
float tp3Price = entryPrice + tp3Pips * pipSize
float slPrice = entryPrice - slPips * pipSize
entryLine := line.new(
x1 = bar_index,
y1 = entryPrice,
x2 = bar_index + projectionBars,
y2 = entryPrice,
color = color.blue,
width = 3
)
tp1Line := line.new(
x1 = bar_index,
y1 = tp1Price,
x2 = bar_index + projectionBars,
y2 = tp1Price,
color = color.green,
width = 2,
style = line.style_dashed
)
tp2Line := line.new(
x1 = bar_index,
y1 = tp2Price,
x2 = bar_index + projectionBars,
y2 = tp2Price,
color = color.green,
width = 2,
style = line.style_dashed
)
tp3Line := line.new(
x1 = bar_index,
y1 = tp3Price,
x2 = bar_index + projectionBars,
y2 = tp3Price,
color = color.green,
width = 2
)
slLine := line.new(
x1 = bar_index,
y1 = slPrice,
x2 = bar_index + projectionBars,
y2 = slPrice,
color = color.red,
width = 2
)
entryLabel := label.new(
x = bar_index + projectionBars,
y = entryPrice,
text = "دخول شراء",
style = label.style_label_left,
color = color.blue,
textcolor = color.white
)
tp1Label := label.new(
x = bar_index + projectionBars,
y = tp1Price,
text = "TP1 - " + str.tostring(tp1Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
tp2Label := label.new(
x = bar_index + projectionBars,
y = tp2Price,
text = "TP2 - " + str.tostring(tp2Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
tp3Label := label.new(
x = bar_index + projectionBars,
y = tp3Price,
text = "TP3 - " + str.tostring(tp3Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
slLabel := label.new(
x = bar_index + projectionBars,
y = slPrice,
text = "SL - " + str.tostring(slPips) + " Pip",
style = label.style_label_left,
color = color.red,
textcolor = color.white
)
//====================================================
// صفقة بيع
//====================================================
if sellSignal
if not na(entryLine)
line.delete(entryLine)
if not na(tp1Line)
line.delete(tp1Line)
if not na(tp2Line)
line.delete(tp2Line)
if not na(tp3Line)
line.delete(tp3Line)
if not na(slLine)
line.delete(slLine)
if not na(entryLabel)
label.delete(entryLabel)
if not na(tp1Label)
label.delete(tp1Label)
if not na(tp2Label)
label.delete(tp2Label)
if not na(tp3Label)
label.delete(tp3Label)
if not na(slLabel)
label.delete(slLabel)
float entryPrice = close
float tp1Price = entryPrice - tp1Pips * pipSize
float tp2Price = entryPrice - tp2Pips * pipSize
float tp3Price = entryPrice - tp3Pips * pipSize
float slPrice = entryPrice + slPips * pipSize
entryLine := line.new(
x1 = bar_index,
y1 = entryPrice,
x2 = bar_index + projectionBars,
y2 = entryPrice,
color = color.blue,
width = 3
)
tp1Line := line.new(
x1 = bar_index,
y1 = tp1Price,
x2 = bar_index + projectionBars,
y2 = tp1Price,
color = color.green,
width = 2,
style = line.style_dashed
)
tp2Line := line.new(
x1 = bar_index,
y1 = tp2Price,
x2 = bar_index + projectionBars,
y2 = tp2Price,
color = color.green,
width = 2,
style = line.style_dashed
)
tp3Line := line.new(
x1 = bar_index,
y1 = tp3Price,
x2 = bar_index + projectionBars,
y2 = tp3Price,
color = color.green,
width = 2
)
slLine := line.new(
x1 = bar_index,
y1 = slPrice,
x2 = bar_index + projectionBars,
y2 = slPrice,
color = color.red,
width = 2
)
entryLabel := label.new(
x = bar_index + projectionBars,
y = entryPrice,
text = "دخول بيع",
style = label.style_label_left,
color = color.blue,
textcolor = color.white
)
tp1Label := label.new(
x = bar_index + projectionBars,
y = tp1Price,
text = "TP1 - " + str.tostring(tp1Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
tp2Label := label.new(
x = bar_index + projectionBars,
y = tp2Price,
text = "TP2 - " + str.tostring(tp2Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
tp3Label := label.new(
x = bar_index + projectionBars,
y = tp3Price,
text = "TP3 - " + str.tostring(tp3Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
slLabel := label.new(
x = bar_index + projectionBars,
y = slPrice,
text = "SL - " + str.tostring(slPips) + " Pip",
style = label.style_label_left,
color = color.red,
textcolor = color.white
)
//====================================================
// إشارات الدخول
//====================================================
plotshape(
showSignals and buySignal,
title = "إشارة شراء",
text = "شراء",
style = shape.labelup,
location = location.belowbar,
color = color.green,
textcolor = color.white,
size = size.small
)
plotshape(
showSignals and sellSignal,
title = "إشارة بيع",
text = "بيع",
style = shape.labeldown,
location = location.abovebar,
color = color.red,
textcolor = color.white,
size = size.small
)
//====================================================
// خلفية Bo3li.trading
//====================================================
var table watermark = table.new(
position.middle_center,
1,
1
)
if barstate.islast
table.cell(
watermark,
0,
0,
showWatermark ? "Bo3li.trading" : "",
text_color = color.new(color.gray, 82),
text_size = size.huge,
bgcolor = color.new(color.white, 100)
)
//====================================================
// التنبيهات
//====================================================
alertcondition(
buySignal,
title = "Bo3li.trading - شراء",
message = "إشارة شراء من مؤشر Bo3li.trading بعد كسر المقاومة"
)
alertcondition(
sellSignal,
title = "Bo3li.trading - بيع",
message = "إشارة بيع من مؤشر Bo3li.trading بعد كسر الدعم"
)
지표

지표

지표

지표

지표

Bo3li.trading Scalper//@version=6
indicator(
title = "Bo3li.trading Scalper",
shorttitle = "Bo3li.trading",
overlay = true,
max_lines_count = 100,
max_labels_count = 100,
max_boxes_count = 20
)
//====================================================
// إعدادات الدعم والمقاومة ومناطق العرض والطلب
//====================================================
pivotLeft = input.int(
5,
"قوة المنطقة من اليسار",
minval = 1,
group = "الدعم والمقاومة"
)
pivotRight = input.int(
5,
"قوة المنطقة من اليمين",
minval = 1,
group = "الدعم والمقاومة"
)
atrLength = input.int(
14,
"فترة ATR",
minval = 1,
group = "الدعم والمقاومة"
)
zoneSizeATR = input.float(
0.30,
"سُمك منطقة العرض والطلب",
minval = 0.05,
step = 0.05,
group = "الدعم والمقاومة"
)
showZones = input.bool(
true,
"إظهار مناطق العرض والطلب",
group = "الدعم والمقاومة"
)
showSupportResistance = input.bool(
true,
"إظهار خطوط الدعم والمقاومة",
group = "الدعم والمقاومة"
)
//====================================================
// إعدادات فلتر الدخول
//====================================================
useTrendFilter = input.bool(
true,
"استخدام فلتر الاتجاه",
group = "فلتر الدخول"
)
emaFastLength = input.int(
20,
"EMA السريع",
minval = 1,
group = "فلتر الدخول"
)
emaSlowLength = input.int(
50,
"EMA البطيء",
minval = 1,
group = "فلتر الدخول"
)
useRSIFilter = input.bool(
true,
"استخدام فلتر RSI",
group = "فلتر الدخول"
)
rsiLength = input.int(
14,
"فترة RSI",
minval = 1,
group = "فلتر الدخول"
)
buyRSILevel = input.int(
52,
"أقل RSI للشراء",
minval = 1,
maxval = 99,
group = "فلتر الدخول"
)
sellRSILevel = input.int(
48,
"أعلى RSI للبيع",
minval = 1,
maxval = 99,
group = "فلتر الدخول"
)
//====================================================
// إعدادات الأهداف ووقف الخسارة
//====================================================
// على الذهب:
// 1 Pip = 0.10 دولار من حركة السعر
// 50 Pip = 5 دولارات
// 100 Pip = 10 دولارات
// 150 Pip = 15 دولاراً
pipSize = input.float(
0.10,
"قيمة Pip بالسعر",
minval = 0.00001,
step = 0.01,
tooltip = "للذهب: 100 Pip تساوي حركة 10 دولارات",
group = "الأهداف ووقف الخسارة"
)
tpStepPips = input.int(
50,
"المسافة بين كل TP",
minval = 1,
group = "الأهداف ووقف الخسارة"
)
slPips = input.int(
50,
"SL بالـ Pip",
minval = 1,
group = "الأهداف ووقف الخسارة"
)
tp1Pips = tpStepPips
tp2Pips = tpStepPips * 2
tp3Pips = tpStepPips * 3
projectionBars = input.int(
40,
"طول خطوط الصفقة",
minval = 5,
maxval = 200,
group = "الأهداف ووقف الخسارة"
)
//====================================================
// إعدادات المظهر
//====================================================
showEMAs = input.bool(
true,
"إظهار المتوسطات",
group = "المظهر"
)
showSignals = input.bool(
true,
"إظهار إشارات الشراء والبيع",
group = "المظهر"
)
showWatermark = input.bool(
true,
"إظهار Bo3li.trading بالخلفية",
group = "المظهر"
)
//====================================================
// الحسابات
//====================================================
atrValue = ta.atr(atrLength)
zoneThickness = atrValue * zoneSizeATR
emaFast = ta.ema(close, emaFastLength)
emaSlow = ta.ema(close, emaSlowLength)
rsiValue = ta.rsi(close, rsiLength)
pivotHigh = ta.pivothigh(
high,
pivotLeft,
pivotRight
)
pivotLow = ta.pivotlow(
low,
pivotLeft,
pivotRight
)
//====================================================
// تخزين آخر دعم ومقاومة
//====================================================
var float resistancePrice = na
var float supportPrice = na
var float supplyTop = na
var float supplyBottom = na
var float demandTop = na
var float demandBottom = na
if not na(pivotHigh)
resistancePrice := pivotHigh
supplyTop := pivotHigh
supplyBottom := pivotHigh - zoneThickness
if not na(pivotLow)
supportPrice := pivotLow
demandTop := pivotLow + zoneThickness
demandBottom := pivotLow
//====================================================
// مناطق العرض والطلب
//====================================================
var box supplyBox = na
var box demandBox = na
var label supplyLabel = na
var label demandLabel = na
if not na(pivotHigh)
if not na(supplyBox)
box.delete(supplyBox)
if not na(supplyLabel)
label.delete(supplyLabel)
if showZones
supplyBox := box.new(
left = bar_index - pivotRight,
top = supplyTop,
right = bar_index,
bottom = supplyBottom,
border_color = color.new(color.red, 25),
border_width = 1,
bgcolor = color.new(color.red, 88),
extend = extend.right
)
supplyLabel := label.new(
x = bar_index - pivotRight,
y = supplyTop,
text = "منطقة عرض",
style = label.style_label_down,
color = color.new(color.red, 10),
textcolor = color.white,
size = size.small
)
if not na(pivotLow)
if not na(demandBox)
box.delete(demandBox)
if not na(demandLabel)
label.delete(demandLabel)
if showZones
demandBox := box.new(
left = bar_index - pivotRight,
top = demandTop,
right = bar_index,
bottom = demandBottom,
border_color = color.new(color.green, 25),
border_width = 1,
bgcolor = color.new(color.green, 88),
extend = extend.right
)
demandLabel := label.new(
x = bar_index - pivotRight,
y = demandBottom,
text = "منطقة طلب",
style = label.style_label_up,
color = color.new(color.green, 10),
textcolor = color.white,
size = size.small
)
if not showZones
if not na(supplyBox)
box.delete(supplyBox)
supplyBox := na
if not na(demandBox)
box.delete(demandBox)
demandBox := na
if not na(supplyLabel)
label.delete(supplyLabel)
supplyLabel := na
if not na(demandLabel)
label.delete(demandLabel)
demandLabel := na
//====================================================
// خطوط الدعم والمقاومة البرتقالية
//====================================================
plot(
showSupportResistance ? resistancePrice : na,
title = "المقاومة",
color = color.orange,
linewidth = 2,
style = plot.style_stepline
)
plot(
showSupportResistance ? supportPrice : na,
title = "الدعم",
color = color.orange,
linewidth = 2,
style = plot.style_stepline
)
//====================================================
// المتوسطات المتحركة
//====================================================
plot(
showEMAs ? emaFast : na,
title = "EMA السريع",
color = color.aqua,
linewidth = 1
)
plot(
showEMAs ? emaSlow : na,
title = "EMA البطيء",
color = color.purple,
linewidth = 2
)
//====================================================
// شروط الدخول
//====================================================
bullTrend = emaFast > emaSlow and close > emaFast
bearTrend = emaFast < emaSlow and close < emaFast
bullRSI = rsiValue >= buyRSILevel
bearRSI = rsiValue <= sellRSILevel
buyTrendAllowed = not useTrendFilter or bullTrend
sellTrendAllowed = not useTrendFilter or bearTrend
buyRSIAllowed = not useRSIFilter or bullRSI
sellRSIAllowed = not useRSIFilter or bearRSI
// الشراء بعد كسر المقاومة والإغلاق فوقها
rawBuySignal =
not na(resistancePrice) and
ta.crossover(close, resistancePrice)
// البيع بعد كسر الدعم والإغلاق تحته
rawSellSignal =
not na(supportPrice) and
ta.crossunder(close, supportPrice)
buySignal =
barstate.isconfirmed and
rawBuySignal and
buyTrendAllowed and
buyRSIAllowed
sellSignal =
barstate.isconfirmed and
rawSellSignal and
sellTrendAllowed and
sellRSIAllowed
//====================================================
// خطوط الصفقة
//====================================================
var line entryLine = na
var line tp1Line = na
var line tp2Line = na
var line tp3Line = na
var line slLine = na
var label entryLabel = na
var label tp1Label = na
var label tp2Label = na
var label tp3Label = na
var label slLabel = na
//====================================================
// صفقة شراء
//====================================================
if buySignal
if not na(entryLine)
line.delete(entryLine)
if not na(tp1Line)
line.delete(tp1Line)
if not na(tp2Line)
line.delete(tp2Line)
if not na(tp3Line)
line.delete(tp3Line)
if not na(slLine)
line.delete(slLine)
if not na(entryLabel)
label.delete(entryLabel)
if not na(tp1Label)
label.delete(tp1Label)
if not na(tp2Label)
label.delete(tp2Label)
if not na(tp3Label)
label.delete(tp3Label)
if not na(slLabel)
label.delete(slLabel)
float entryPrice = close
float tp1Price = entryPrice + tp1Pips * pipSize
float tp2Price = entryPrice + tp2Pips * pipSize
float tp3Price = entryPrice + tp3Pips * pipSize
float slPrice = entryPrice - slPips * pipSize
entryLine := line.new(
x1 = bar_index,
y1 = entryPrice,
x2 = bar_index + projectionBars,
y2 = entryPrice,
color = color.blue,
width = 3
)
tp1Line := line.new(
x1 = bar_index,
y1 = tp1Price,
x2 = bar_index + projectionBars,
y2 = tp1Price,
color = color.green,
width = 2,
style = line.style_dashed
)
tp2Line := line.new(
x1 = bar_index,
y1 = tp2Price,
x2 = bar_index + projectionBars,
y2 = tp2Price,
color = color.green,
width = 2,
style = line.style_dashed
)
tp3Line := line.new(
x1 = bar_index,
y1 = tp3Price,
x2 = bar_index + projectionBars,
y2 = tp3Price,
color = color.green,
width = 2
)
slLine := line.new(
x1 = bar_index,
y1 = slPrice,
x2 = bar_index + projectionBars,
y2 = slPrice,
color = color.red,
width = 2
)
entryLabel := label.new(
x = bar_index + projectionBars,
y = entryPrice,
text = "دخول شراء",
style = label.style_label_left,
color = color.blue,
textcolor = color.white
)
tp1Label := label.new(
x = bar_index + projectionBars,
y = tp1Price,
text = "TP1 - " + str.tostring(tp1Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
tp2Label := label.new(
x = bar_index + projectionBars,
y = tp2Price,
text = "TP2 - " + str.tostring(tp2Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
tp3Label := label.new(
x = bar_index + projectionBars,
y = tp3Price,
text = "TP3 - " + str.tostring(tp3Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
slLabel := label.new(
x = bar_index + projectionBars,
y = slPrice,
text = "SL - " + str.tostring(slPips) + " Pip",
style = label.style_label_left,
color = color.red,
textcolor = color.white
)
//====================================================
// صفقة بيع
//====================================================
if sellSignal
if not na(entryLine)
line.delete(entryLine)
if not na(tp1Line)
line.delete(tp1Line)
if not na(tp2Line)
line.delete(tp2Line)
if not na(tp3Line)
line.delete(tp3Line)
if not na(slLine)
line.delete(slLine)
if not na(entryLabel)
label.delete(entryLabel)
if not na(tp1Label)
label.delete(tp1Label)
if not na(tp2Label)
label.delete(tp2Label)
if not na(tp3Label)
label.delete(tp3Label)
if not na(slLabel)
label.delete(slLabel)
float entryPrice = close
float tp1Price = entryPrice - tp1Pips * pipSize
float tp2Price = entryPrice - tp2Pips * pipSize
float tp3Price = entryPrice - tp3Pips * pipSize
float slPrice = entryPrice + slPips * pipSize
entryLine := line.new(
x1 = bar_index,
y1 = entryPrice,
x2 = bar_index + projectionBars,
y2 = entryPrice,
color = color.blue,
width = 3
)
tp1Line := line.new(
x1 = bar_index,
y1 = tp1Price,
x2 = bar_index + projectionBars,
y2 = tp1Price,
color = color.green,
width = 2,
style = line.style_dashed
)
tp2Line := line.new(
x1 = bar_index,
y1 = tp2Price,
x2 = bar_index + projectionBars,
y2 = tp2Price,
color = color.green,
width = 2,
style = line.style_dashed
)
tp3Line := line.new(
x1 = bar_index,
y1 = tp3Price,
x2 = bar_index + projectionBars,
y2 = tp3Price,
color = color.green,
width = 2
)
slLine := line.new(
x1 = bar_index,
y1 = slPrice,
x2 = bar_index + projectionBars,
y2 = slPrice,
color = color.red,
width = 2
)
entryLabel := label.new(
x = bar_index + projectionBars,
y = entryPrice,
text = "دخول بيع",
style = label.style_label_left,
color = color.blue,
textcolor = color.white
)
tp1Label := label.new(
x = bar_index + projectionBars,
y = tp1Price,
text = "TP1 - " + str.tostring(tp1Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
tp2Label := label.new(
x = bar_index + projectionBars,
y = tp2Price,
text = "TP2 - " + str.tostring(tp2Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
tp3Label := label.new(
x = bar_index + projectionBars,
y = tp3Price,
text = "TP3 - " + str.tostring(tp3Pips) + " Pip",
style = label.style_label_left,
color = color.green,
textcolor = color.white
)
slLabel := label.new(
x = bar_index + projectionBars,
y = slPrice,
text = "SL - " + str.tostring(slPips) + " Pip",
style = label.style_label_left,
color = color.red,
textcolor = color.white
)
//====================================================
// إشارات الدخول
//====================================================
plotshape(
showSignals and buySignal,
title = "إشارة شراء",
text = "شراء",
style = shape.labelup,
location = location.belowbar,
color = color.green,
textcolor = color.white,
size = size.small
)
plotshape(
showSignals and sellSignal,
title = "إشارة بيع",
text = "بيع",
style = shape.labeldown,
location = location.abovebar,
color = color.red,
textcolor = color.white,
size = size.small
)
//====================================================
// خلفية Bo3li.trading
//====================================================
var table watermark = table.new(
position.middle_center,
1,
1
)
if barstate.islast
table.cell(
watermark,
0,
0,
showWatermark ? "Bo3li.trading" : "",
text_color = color.new(color.gray, 82),
text_size = size.huge,
bgcolor = color.new(color.white, 100)
)
//====================================================
// التنبيهات
//====================================================
alertcondition(
buySignal,
title = "Bo3li.trading - شراء",
message = "إشارة شراء من مؤشر Bo3li.trading بعد كسر المقاومة"
)
alertcondition(
sellSignal,
title = "Bo3li.trading - بيع",
message = "إشارة بيع من مؤشر Bo3li.trading بعد كسر الدعم"
) 지표

지표

지표

지표
