ch
Feedback
CryptoHub

CryptoHub

前往频道在 Telegram

Welcome to the most loved crypto Community in Africa Admin - https://t.me/niels_official Admin will never Message you first

显示更多

📈 Telegram 频道 CryptoHub 的分析概览

频道 CryptoHub (@cryptohub_withn) 英语 语言赛道中的 是活跃参与者。目前社区聚集了 12 123 名订阅者,在 加密货币 类别中位列第 8 863,并在 尼日利亚 地区排名第 1 461

📊 受众指标与增长动态

невідомо 创建以来,项目保持高速增长,吸引了 12 123 名订阅者。

根据 22 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -213,过去 24 小时变化为 -9,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 8.09%。内容发布后 24 小时内通常能获得 3.04% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 981 次浏览,首日通常累积 369 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 8
  • 主题关注点: 内容集中在 analyst, moonshot, script, uniusdt 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
Welcome to the most loved crypto Community in Africa Admin - https://t.me/niels_official Admin will never Message you first

凭借高频更新(最新数据采集于 23 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 加密货币 类别中的关键影响点。

12 123
订阅者
-924 小时
-727
-21330

数据加载中...

吸引订阅者
六月 '26
六月 '26
+96
在1个频道中
五月 '26
+8
在0个频道中
Get PRO
四月 '26
+4
在0个频道中
Get PRO
三月 '26
+10
在0个频道中
Get PRO
二月 '26
+2
在0个频道中
Get PRO
一月 '26
+3
在0个频道中
Get PRO
十二月 '25
+15
在0个频道中
Get PRO
十一月 '25
+31
在0个频道中
Get PRO
十月 '25
+22
在0个频道中
Get PRO
九月 '25
+138
在2个频道中
Get PRO
八月 '25
+44
在0个频道中
Get PRO
七月 '25
+206
在1个频道中
Get PRO
六月 '25
+17
在0个频道中
Get PRO
五月 '25
+240
在2个频道中
Get PRO
四月 '25
+45
在1个频道中
Get PRO
三月 '25
+153
在1个频道中
Get PRO
二月 '25
+204
在0个频道中
Get PRO
一月 '25
+1 269
在0个频道中
Get PRO
十二月 '24
+932
在0个频道中
Get PRO
十一月 '24
+5 069
在0个频道中
Get PRO
十月 '24
+1 232
在0个频道中
Get PRO
九月 '24
+3 511
在0个频道中
Get PRO
八月 '24
+6 275
在1个频道中
日期
订阅者增长
提及
频道
22 六月0
21 六月0
20 六月0
19 六月0
18 六月0
17 六月0
16 六月+4
15 六月0
14 六月0
13 六月+5
12 六月+87
11 六月0
10 六月0
09 六月0
08 六月0
07 六月0
06 六月0
05 六月0
04 六月0
03 六月0
02 六月0
01 六月0
频道帖子
Day3 | AI Trading automation and strategy tutorial https://youtu.be/0glERNJ0oUU

2
Day2 Trading automation and strategy tutorial https://youtu.be/gpyOUuiehhA
301
3
Can anyone hear me?
421
4
If you had issues connecting https://www.nojai.io/ with MT5 last week The bug has been fixed Write to me today @niels_official if you have any pending complain We hope for a good week 💰
465
5
Good evening everyone We are having our Day3 and final class on automation and strategy scripting this evening 9pm WAT Don’t miss it Day1 | Trading Automation & Strategy Tutorial https://youtu.be/K_XsPia5-CE Day2 will be posted tonight.
518
6
There’s a strategy I’m trying out For $BTCUSD and $XAUUSD on Nojai bot I will upload it for you guys on TradingView before Mo
There’s a strategy I’m trying out For $BTCUSD and $XAUUSD on Nojai bot I will upload it for you guys on TradingView before Monday If you haven’t signup on nojai.io what are you waiting for? 🤭
695
7
If you live in Abuja and would like to attend Rain Conference with me I just created a WhatsApp community for communication h
If you live in Abuja and would like to attend Rain Conference with me I just created a WhatsApp community for communication https://chat.whatsapp.com/IJACmtbXpm30MmjHxmgUjv Transportation will be 100% taken care of
1 206
8
4. tv_health_check
1 081
9
3. (Tradingview app location)
1 048
10
2. /path/to/Tradingview.app/Contents/Mac0S/Tradingview --remote-debugging-port=9222
1 045
11
1. https://github.com/LewisWJackson/tradingview-mcp-jackson2.
1 049
12
// ══════════════════════════════════════════════════════════════════════════════ // ░░ BACKGROUND — ACTIVE RETEST ZONE // ══════════════════════════════════════════════════════════════════════════════ inRetestBull = awaitBull and priceExtBull and not na(fvgTop) and high >= fvgBot and low <= fvgTop inRetestBear = awaitBear and priceExtBear and not na(fvgTop) and high >= fvgBot and low <= fvgTop bgcolor(inRetestBull ? color.new(color.green, 88) : na, title="Bull Retest Zone") bgcolor(inRetestBear ? color.new(color.red, 88) : na, title="Bear Retest Zone")
1 051
13
// ══════════════════════════════════════════════════════════════════════════════ if strategy.position_size != 0 and not na(l_entry) line.set_x2(l_entry, bar_index + 1) line.set_x2(l_sl, bar_index + 1) line.set_x2(l_tp1, bar_index + 1) line.set_x2(l_tp2, bar_index + 1) label.set_x(lb_entry, bar_index + 1) label.set_x(lb_sl, bar_index + 1) label.set_x(lb_tp1, bar_index + 1) label.set_x(lb_tp2, bar_index + 1) // ══════════════════════════════════════════════════════════════════════════════ // ░░ BREAKEVEN MANAGEMENT // ══════════════════════════════════════════════════════════════════════════════ if i_be and not tp1Done if strategy.position_size > 0 and strategy.position_size < strategy.position_size[1] tp1Done := true strategy.cancel("Long TP2") strategy.exit("Long TP2 BE", from_entry="Long", qty_percent=100, limit=activeTP2, stop=entryPx, comment="TP2 BE") if strategy.position_size < 0 and strategy.position_size > strategy.position_size[1] tp1Done := true strategy.cancel("Short TP2") strategy.exit("Short TP2 BE", from_entry="Short", qty_percent=100, limit=activeTP2, stop=entryPx, comment="TP2 BE") // ══════════════════════════════════════════════════════════════════════════════ // ░░ LIVE TRADE DASHBOARD // ══════════════════════════════════════════════════════════════════════════════ var table dash = table.new(position.top_right, 2, 9, bgcolor = color.new(#0D1117, 15), border_color= color.new(color.gray, 60), border_width= 1, frame_color = color.new(color.gray, 40), frame_width = 1) tCell(col, row, txt, bg, tc) => table.cell(dash, col, row, txt, bgcolor=bg, text_color=tc, text_size=size.small) if i_showTable and barstate.islast inLong = strategy.position_size > 0 inShort = strategy.position_size < 0 inTrade = inLong or inShort dirTxt = inLong ? "▲ LONG" : inShort ? "▼ SHORT" : "── FLAT ──" dirCol = inLong ? color.new(color.lime, 20) : inShort ? color.new(color.red, 20) : color.new(color.gray, 60) hdrCol = color.new(#1A237E, 20) valCol = color.new(#0D1117, 40) tCell(0, 0, "FVG STRATEGY v4", hdrCol, color.white) tCell(1, 0, dirTxt, dirCol, color.white) tCell(0, 1, "Entry", valCol, color.gray) tCell(1, 1, inTrade ? "$" + str.tostring(math.round(strategy.position_avg_price, 2)) : "—", valCol, color.white) tCell(0, 2, "Stop Loss", valCol, color.gray) tCell(1, 2, inTrade ? "$" + str.tostring(math.round(activeSL, 2)) : "—", valCol, color.new(color.red, 20)) tCell(0, 3, "TP 1", valCol, color.gray) tCell(1, 3, inTrade ? "$" + str.tostring(math.round(activeTP1, 2)) : "—", valCol, color.new(color.lime, 20)) tCell(0, 4, "TP 2", valCol, color.gray) tCell(1, 4, inTrade ? "$" + str.tostring(math.round(activeTP2, 2)) : "—", valCol, color.new(color.lime, 0)) tCell(0, 5, "Setup Score", valCol, color.gray) tCell(1, 5, inTrade ? str.tostring(setupScore) + " / 7" : "—", valCol, color.white) tCell(0, 6, "Next Setup", valCol, color.gray) tCell(1, 6, qActive ? (qIsBull ? "▲ Bull queued" : "▼ Bear queued") : "None", valCol, qActive ? color.new(color.yellow, 20) : color.new(color.gray, 50)) openPnl = inTrade ? strategy.openprofit : 0.0 pnlCol = openPnl >= 0 ? color.new(color.lime, 20) : color.new(color.red, 20) tCell(0, 7, "Open P&L", valCol, color.gray) tCell(1, 7, inTrade ? "$" + str.tostring(math.round(openPnl, 2)) : "—", valCol, pnlCol) wr = strategy.wintrades + strategy.losstrades > 0 ? math.round(strategy.wintrades / (strategy.wintrades + strategy.losstrades) * 100, 1) : 0.0 tCell(0, 8, "Win Rate", valCol, color.gray) tCell(1, 8, str.tostring(wr) + " %", valCol, wr >= 50 ? color.new(color.lime, 20) : color.new(color.orange, 20))
591
14
l_tp2 := line.new(bar_index, tp2Px, bar_index + 1, tp2Px, color=color.new(#00C853, 0), width=2) lb_entry := label.new(bar_index + 1, close, " Entry $" + str.tostring(math.round(close, 2)), style=label.style_label_right, color=color.new(#1565C0, 10), textcolor=color.white, size=size.small) lb_sl := label.new(bar_index + 1, slPx, " SL $" + str.tostring(math.round(slPx, 2)), style=label.style_label_right, color=color.new(color.red, 10), textcolor=color.white, size=size.small) lb_tp1 := label.new(bar_index + 1, tp1Px, " TP1 (" + str.tostring(i_rr1) + "R) $" + str.tostring(math.round(tp1Px, 2)), style=label.style_label_right, color=color.new(#00C853, 30), textcolor=color.white, size=size.small) lb_tp2 := label.new(bar_index + 1, tp2Px, " TP2 (" + str.tostring(i_rr2) + "R) $" + str.tostring(math.round(tp2Px, 2)), style=label.style_label_right, color=color.new(#00C853, 10), textcolor=color.white, size=size.small) awaitBull := false fvgTop := na fvgBot := na cePx := na // ══════════════════════════════════════════════════════════════════════════════ // ░░ SHORT EXECUTION + LEVEL VISUALISATION // ══════════════════════════════════════════════════════════════════════════════ if shortEntry slPx = fvgTop + i_slAtrMult * atr14 risk = slPx - close tp1Px = close - risk * i_rr1 tp2Px = close - risk * i_rr2 entryPx := close activeSL := slPx activeTP1:= tp1Px activeTP2:= tp2Px strategy.entry("Short", strategy.short, comment="FVG Short (" + str.tostring(setupScore) + "/7)") strategy.exit("Short TP1", from_entry="Short", qty_percent=i_tp1Pct, limit=tp1Px, stop=slPx, comment="TP1 $" + str.tostring(math.round(tp1Px, 2))) strategy.exit("Short TP2", from_entry="Short", qty_percent=100, limit=tp2Px, stop=slPx, comment="TP2 $" + str.tostring(math.round(tp2Px, 2))) if i_showLevels line.delete(l_entry) line.delete(l_sl) line.delete(l_tp1) line.delete(l_tp2) label.delete(lb_entry) label.delete(lb_sl) label.delete(lb_tp1) label.delete(lb_tp2) l_entry := line.new(bar_index, close, bar_index + 1, close, color=#1565C0, width=2) l_sl := line.new(bar_index, slPx, bar_index + 1, slPx, color=color.red, width=1, style=line.style_dashed) l_tp1 := line.new(bar_index, tp1Px, bar_index + 1, tp1Px, color=color.new(#00C853, 0), width=1, style=line.style_dashed) l_tp2 := line.new(bar_index, tp2Px, bar_index + 1, tp2Px, color=color.new(#00C853, 0), width=2) lb_entry := label.new(bar_index + 1, close, " Entry $" + str.tostring(math.round(close, 2)), style=label.style_label_right, color=color.new(#1565C0, 10), textcolor=color.white, size=size.small) lb_sl := label.new(bar_index + 1, slPx, " SL $" + str.tostring(math.round(slPx, 2)), style=label.style_label_right, color=color.new(color.red, 10), textcolor=color.white, size=size.small) lb_tp1 := label.new(bar_index + 1, tp1Px, " TP1 (" + str.tostring(i_rr1) + "R) $" + str.tostring(math.round(tp1Px, 2)), style=label.style_label_right, color=color.new(#00C853, 30), textcolor=color.white, size=size.small) lb_tp2 := label.new(bar_index + 1, tp2Px, " TP2 (" + str.tostring(i_rr2) + "R) $" + str.tostring(math.round(tp2Px, 2)), style=label.style_label_right, color=color.new(#00C853, 10), textcolor=color.white, size=size.small) awaitBear := false fvgTop := na fvgBot := na cePx := na // ══════════════════════════════════════════════════════════════════════════════ // ░░ EXTEND LEVEL LINES WHILE TRADE IS LIVE
344
15
// ── Flush queue the bar a trade closes ─────────────────────────────────────── if strategy.position_size == 0 and strategy.position_size[1] != 0 and qActive fvgTop := qFvgTop fvgBot := qFvgBot cePx := (qFvgTop + qFvgBot) / 2 awaitBull := qIsBull awaitBear := not qIsBull setupBar := bar_index setupScore := qScore maxExtBull := qIsBull ? high : na minExtBear := not qIsBull ? low : na drawSetupBox(qFvgTop, qFvgBot, qIsBull, qScore) qFvgTop := na qFvgBot := na qActive := false // ── Continuous FVG refresh (first 8 bars post-breakout) ────────────────────── if awaitBull and not na(setupBar) and (bar_index - setupBar) <= 8 and strategy.position_size == 0 [newGt, newGb] = getBullFVG(3) if not na(newGt) and (newGt - newGb) > (fvgTop - fvgBot) fvgTop := newGt fvgBot := newGb cePx := (newGt + newGb) / 2 if awaitBear and not na(setupBar) and (bar_index - setupBar) <= 8 and strategy.position_size == 0 [newGt, newGb] = getBearFVG(3) if not na(newGt) and (newGt - newGb) > (fvgTop - fvgBot) fvgTop := newGt fvgBot := newGb cePx := (newGt + newGb) / 2 // ── Track post-breakout extension ───────────────────────────────────────────── if awaitBull and not na(maxExtBull) maxExtBull := math.max(maxExtBull, high) if awaitBear and not na(minExtBear) minExtBear := math.min(minExtBear, low) // ── Expire stale setups ──────────────────────────────────────────────────────── if (awaitBull or awaitBear) and not na(setupBar) and (bar_index - setupBar) >= i_boExpiry and strategy.position_size == 0 awaitBull := false awaitBear := false fvgTop := na fvgBot := na cePx := na if strategy.position_size == 0 tp1Done := false // ══════════════════════════════════════════════════════════════════════════════ // ░░ ENTRY CONDITIONS // ══════════════════════════════════════════════════════════════════════════════ priceExtBull = not na(maxExtBull) and (maxExtBull - fvgTop) >= i_extMult * atr14 priceExtBear = not na(minExtBear) and (fvgBot - minExtBear) >= i_extMult * atr14 bullEntry = awaitBull and strategy.position_size == 0 and priceExtBull and low <= cePx and close >= fvgBot and close > open shortEntry = awaitBear and strategy.position_size == 0 and priceExtBear and high >= cePx and close <= fvgTop and close < open // ══════════════════════════════════════════════════════════════════════════════ // ░░ LONG EXECUTION + LEVEL VISUALISATION // ══════════════════════════════════════════════════════════════════════════════ if bullEntry slPx = fvgBot - i_slAtrMult * atr14 risk = close - slPx tp1Px = close + risk * i_rr1 tp2Px = close + risk * i_rr2 entryPx := close activeSL := slPx activeTP1:= tp1Px activeTP2:= tp2Px strategy.entry("Long", strategy.long, comment="FVG Long (" + str.tostring(setupScore) + "/7)") strategy.exit("Long TP1", from_entry="Long", qty_percent=i_tp1Pct, limit=tp1Px, stop=slPx, comment="TP1 $" + str.tostring(math.round(tp1Px, 2))) strategy.exit("Long TP2", from_entry="Long", qty_percent=100, limit=tp2Px, stop=slPx, comment="TP2 $" + str.tostring(math.round(tp2Px, 2))) if i_showLevels line.delete(l_entry) line.delete(l_sl) line.delete(l_tp1) line.delete(l_tp2) label.delete(lb_entry) label.delete(lb_sl) label.delete(lb_tp1) label.delete(lb_tp2) l_entry := line.new(bar_index, close, bar_index + 1, close, color=#1565C0, width=2) l_sl := line.new(bar_index, slPx, bar_index + 1, slPx, color=color.red, width=1, style=line.style_dashed) l_tp1 := line.new(bar_index, tp1Px, bar_index + 1, tp1Px, color=color.new(#00C853, 0), width=1, style=line.style_dashed)
324
16
var bool awaitBear = false var int setupBar = na var int setupScore = 0 var float maxExtBull = na var float minExtBear = na var float qFvgTop = na var float qFvgBot = na var bool qIsBull = false var int qScore = 0 var bool qActive = false var float entryPx = na var float activeSL = na var float activeTP1 = na var float activeTP2 = na var bool tp1Done = false var line l_entry = na var line l_sl = na var line l_tp1 = na var line l_tp2 = na var label lb_entry = na var label lb_sl = na var label lb_tp1 = na var label lb_tp2 = na // ══════════════════════════════════════════════════════════════════════════════ // ░░ INLINE HELPER — draw FVG box + score label // Pure display, no global var writes — safe inside a UDF. // ══════════════════════════════════════════════════════════════════════════════ drawSetupBox(gt, gb, isBull, score) => if i_showFVG if isBull box.new(bar_index, gt, bar_index + i_boExpiry, gb, bgcolor=i_bullCol, border_color=color.new(color.lime, 20), border_width=1) label.new(bar_index, gt, "BO▲ " + str.tostring(score) + "/7", style=label.style_label_down, color=color.new(color.lime, 10), textcolor=color.white, size=size.small) else box.new(bar_index, gb, bar_index + i_boExpiry, gt, bgcolor=i_bearCol, border_color=color.new(color.red, 20), border_width=1) label.new(bar_index, gb, "BO▼ " + str.tostring(score) + "/7", style=label.style_label_up, color=color.new(color.red, 10), textcolor=color.white, size=size.small) // ══════════════════════════════════════════════════════════════════════════════ // ░░ SETUP ACTIVATION // ✅ All global var writes are in the main scope — no UDF involved. // ══════════════════════════════════════════════════════════════════════════════ // ── Bullish breakout ───────────────────────────────────────────────────────── if bullBO and goodVol and inSession score = calcScore(true) if score >= i_minScore [gt, gb] = getBullFVG(i_fvgLB) if not na(gt) if strategy.position_size == 0 and not awaitBull and not awaitBear // Activate immediately fvgTop := gt fvgBot := gb cePx := (gt + gb) / 2 awaitBull := true awaitBear := false setupBar := bar_index setupScore := score maxExtBull := high minExtBear := na drawSetupBox(gt, gb, true, score) else if strategy.position_size != 0 // Queue for instant activation on trade close qFvgTop := gt qFvgBot := gb qIsBull := true qScore := score qActive := true // ── Bearish breakout ───────────────────────────────────────────────────────── if bearBO and goodVol and inSession score = calcScore(false) if score >= i_minScore [gt, gb] = getBearFVG(i_fvgLB) if not na(gt) if strategy.position_size == 0 and not awaitBull and not awaitBear // Activate immediately fvgTop := gt fvgBot := gb cePx := (gt + gb) / 2 awaitBear := true awaitBull := false setupBar := bar_index setupScore := score minExtBear := low maxExtBull := na drawSetupBox(gt, gb, false, score) else if strategy.position_size != 0 // Queue qFvgTop := gt qFvgBot := gb qIsBull := false qScore := score qActive := true
338
17
ema50_4H = request.security(syminfo.tickerid, "240", ta.ema(close, 50), lookahead=barmerge.lookahead_off) atrRank = ta.percentrank(atr14, 100) goodVol = i_atrPct ? (atrRank >= 30 and atrRank <= 80) : true plot(ema200D, "Daily EMA 200", color.new(color.orange, 40), 2) plot(ema50, "EMA 50", color.new(color.yellow, 50), 1) plot(ema50_4H, "4H EMA 50", color.new(#FF6D00, 50), 1) // ══════════════════════════════════════════════════════════════════════════════ // ░░ SETUP QUALITY SCORE (max 7 pts) // ══════════════════════════════════════════════════════════════════════════════ calcScore(isBull) => s = 0 s += i_htf ? (isBull ? close > ema200D : close < ema200D) ? 2 : 0 : 0 s += i_htf4h ? (isBull ? close > ema50_4H : close < ema50_4H) ? 2 : 0 : 0 s += i_ema50 ? (isBull ? close > ema50 : close < ema50) ? 1 : 0 : 0 s += i_adx ? adxVal > 18 ? 1 : 0 : 0 s += i_rsiFilter? (rsi14 >= 30 and rsi14 <= 70) ? 1 : 0 : 0 s // ══════════════════════════════════════════════════════════════════════════════ // ░░ FVG SCANNER // ══════════════════════════════════════════════════════════════════════════════ getBullFVG(lb) => float gTop = na float gBot = na for i = 0 to lb - 1 bot = high[i + 2] top = low[i] if top > bot and (top - bot) >= i_fvgMinAtr * atr14 gTop := top gBot := bot break [gTop, gBot] getBearFVG(lb) => float gTop = na float gBot = na for i = 0 to lb - 1 top = low[i + 2] bot = high[i] if top > bot and (top - bot) >= i_fvgMinAtr * atr14 gTop := top gBot := bot break [gTop, gBot] // ══════════════════════════════════════════════════════════════════════════════ // ░░ SWING HIGH / LOW — three levels // ══════════════════════════════════════════════════════════════════════════════ ph = ta.pivothigh(high, i_swingLen, i_swingLen) pl = ta.pivotlow(low, i_swingLen, i_swingLen) var float swingH1 = na var float swingH2 = na var float swingH3 = na var float swingL1 = na var float swingL2 = na var float swingL3 = na if not na(ph) swingH3 := swingH2 swingH2 := swingH1 swingH1 := ph if not na(pl) swingL3 := swingL2 swingL2 := swingL1 swingL1 := pl if i_showBO and not na(ph) line.new(bar_index - i_swingLen, ph, bar_index + 6, ph, color=color.new(#1E90FF, 40), style=line.style_dotted, width=2) if i_showBO and not na(pl) line.new(bar_index - i_swingLen, pl, bar_index + 6, pl, color=color.new(color.fuchsia, 40), style=line.style_dotted, width=2) // ══════════════════════════════════════════════════════════════════════════════ // ░░ BREAKOUT DETECTION — six unconditional crossover calls // ══════════════════════════════════════════════════════════════════════════════ xoH1 = ta.crossover(close, swingH1) xoH2 = ta.crossover(close, swingH2) xoH3 = ta.crossover(close, swingH3) xuL1 = ta.crossunder(close, swingL1) xuL2 = ta.crossunder(close, swingL2) xuL3 = ta.crossunder(close, swingL3) candleRange = high - low candleBody = math.abs(close - open) strongCandle = candleRange > 0 and (candleBody / candleRange) >= i_bodyRatio isBullBO(level, xo) => not na(level) and xo and strongCandle and (close - level) >= i_boStrength * atr14 isBearBO(level, xu) => not na(level) and xu and strongCandle and (level - close) >= i_boStrength * atr14 bullBO = isBullBO(swingH1, xoH1) or isBullBO(swingH2, xoH2) or isBullBO(swingH3, xoH3) bearBO = isBearBO(swingL1, xuL1) or isBearBO(swingL2, xuL2) or isBearBO(swingL3, xuL3) // ══════════════════════════════════════════════════════════════════════════════ // ░░ STATE VARIABLES // ══════════════════════════════════════════════════════════════════════════════ var float fvgTop = na var float fvgBot = na var float cePx = na var bool awaitBull = false
406
18
//@version=6 strategy("FVG After Breakout | XAUUSD v4", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 2, commission_type = strategy.commission.percent, commission_value = 0.007, slippage = 3, initial_capital = 10000, currency = currency.USD, max_boxes_count = 500, max_lines_count = 500, max_labels_count = 500) // ══════════════════════════════════════════════════════════════════════════════ // ░░ INPUTS // ══════════════════════════════════════════════════════════════════════════════ i_swingLen = input.int(5, "Swing Length (bars)", group="⚡ Breakout", minval=3, maxval=20) i_boExpiry = input.int(30, "Setup Expiry (bars)", group="⚡ Breakout", minval=5, maxval=100) i_boStrength = input.float(0.1,"Min Breakout Extension (× ATR)", group="⚡ Breakout", minval=0.05, step=0.05) i_bodyRatio = input.float(0.3,"Min Breakout Candle Body Ratio", group="⚡ Breakout", minval=0.1, step=0.05) i_fvgLB = input.int(15, "FVG Search Window (bars)", group="📦 FVG", minval=2, maxval=25) i_fvgMinAtr = input.float(0.1,"Min FVG Size (× ATR)", group="📦 FVG", minval=0.05, step=0.05) i_extMult = input.float(0.1,"Min Post-BO Extension (× ATR)", group="📦 FVG", minval=0.05, step=0.05) i_rr1 = input.float(1.5,"TP1 R : R", group="💰 Risk Mgmt", minval=0.5, step=0.1) i_rr2 = input.float(3.0,"TP2 R : R", group="💰 Risk Mgmt", minval=1.0, step=0.1) i_tp1Pct = input.float(50, "% of Position Closed at TP1", group="💰 Risk Mgmt", minval=10, maxval=90, step=5) i_be = input.bool(true,"Move SL → Breakeven after TP1", group="💰 Risk Mgmt") i_slAtrMult = input.float(0.5,"SL Buffer (× ATR beyond FVG edge)", group="💰 Risk Mgmt", minval=0.1, step=0.1) i_minScore = input.int(2, "Minimum Setup Score (0 – 7)", group="🏆 Scoring", minval=1, maxval=7) i_htf = input.bool(true, "Daily EMA 200 Filter (+2 pts)", group="🔍 Filters") i_htf4h = input.bool(true, "4H EMA 50 Filter (+2 pts)", group="🔍 Filters") i_adx = input.bool(true, "ADX(14) > 18 Trending (+1 pt)", group="🔍 Filters") i_ema50 = input.bool(true, "EMA 50 Current TF (+1 pt)", group="🔍 Filters") i_rsiFilter = input.bool(true, "RSI(14) 30–70 Retest (+1 pt)", group="🔍 Filters") i_atrPct = input.bool(false,"ATR Percentile Filter (30–80th)", group="🔍 Filters") i_sessionFlt = input.bool(false,"London / NY Session Filter", group="🔍 Filters") i_showFVG = input.bool(true, "Show FVG Boxes", group="🎨 Display") i_showBO = input.bool(true, "Show Swing Levels", group="🎨 Display") i_showLevels = input.bool(true, "Show Entry / SL / TP Lines", group="🎨 Display") i_showTable = input.bool(true, "Show Live Trade Dashboard", group="🎨 Display") i_bullCol = input.color(color.new(#00C853, 78), "Bull FVG", group="🎨 Display") i_bearCol = input.color(color.new(#D50000, 78), "Bear FVG", group="🎨 Display") // ══════════════════════════════════════════════════════════════════════════════ // ░░ SESSION FILTER // ══════════════════════════════════════════════════════════════════════════════ _lon = time(timeframe.period, "0200-1200", "America/New_York") _ny = time(timeframe.period, "0700-1600", "America/New_York") inSession = i_sessionFlt ? (not na(_lon) or not na(_ny)) : true // ══════════════════════════════════════════════════════════════════════════════ // ░░ INDICATORS // ══════════════════════════════════════════════════════════════════════════════ atr14 = ta.atr(14) rsi14 = ta.rsi(close, 14) ema50 = ta.ema(close, 50) [_, _, adxVal] = ta.dmi(14, 14) ema200D = request.security(syminfo.tickerid, "D", ta.ema(close, 200), lookahead=barmerge.lookahead_off)
475
19
Day1 | Trading Automation & Strategy Tutorial https://youtu.be/K_XsPia5-CE
777
20
Today we start day 2 same time, 6:30pm Don’t miss
767