JASHAN T.W BREAKSjanduinteriors@outlook.com
janduinteriorslimited@gmail.com
JASMEET SINGH JANDU(JASHAN), RAJPREET SINGH JANDU(PRINCE)
Indicators and strategies
悟隐高阶战法//@version=5
indicator("悟隐高阶战法", shorttitle='HT', overlay=true, max_labels_count=500, max_bars_back=5000)
// 输入参数
count_bull = input.int(3, title='非连续阳线数量', group='设置')
count_bear = input.int(3, title='非连续阴线数量', group='设置')
show_points = input.bool(true, title='显示高低点')
show_lines = input.bool(true,title = '显示线条')
max_points = input.int(200, title='最大点数')
line_color = input.color(color.purple, "连线颜色")
line_width = input.int(2, "线宽", minval=1, maxval=4)
h_color=input.color(color.red,title = 'H点颜色')
h_trs=input.float(80,title = 'h点透明度')
l_color=input.color(color.green,title = 'L点颜色')
l_trs=input.float(80,title = 'L点透明度')
// 警报设置
enable_alerts = input.bool(true, title='启用警报', group='警报设置')
show_signals = input.bool(true, title='显示BUY/SELL标记', group='信号显示设置')
signal_size = input.string('normal', title='信号标记大小', options= , group='信号显示设置')
signal_distance = input.float(0.1, title='信号标记距K线距离(%)', minval=0.05, maxval=0.5, group='信号显示设置')
// 各信号显示开关
show_signal_yyx = input.bool(true, title='显示看跌【阴阳阴】', group='信号开关')
show_signal_ayy = input.bool(true, title='显示看涨【阳阴阳】', group='信号开关')
show_signal_bull_1v2 = input.bool(true, title='显示看涨【一大于二】', group='信号开关')
show_signal_bear_1v2 = input.bool(true, title='显示看跌【一大于二】', group='信号开关')
show_signal_bear_2v2 = input.bool(true, title='显示看跌【二大于二】', group='信号开关')
show_signal_bull_2v2 = input.bool(true, title='显示看涨【二大于二】', group='信号开关')
show_signal_bull_engulf = input.bool(true, title='显示看涨吞没【吞没随阴线】', group='信号开关')
show_signal_bear_engulf = input.bool(true, title='显示看跌【吞没随阳线】', group='信号开关')
// 子条件显示开关
show_signal_bear_2v2_c1 = input.bool(true, title='看跌【二大于二】-条件1', group='子条件开关')
show_signal_bear_2v2_c2 = input.bool(true, title='看跌【二大于二】-条件2', group='子条件开关')
show_signal_bull_2v2_c1 = input.bool(true, title='看涨【二大于二】-条件1', group='子条件开关')
show_signal_bull_2v2_c2 = input.bool(true, title='看涨【二大于二】-条件2', group='子条件开关')
// ------------------ 自定义数据类型 ------------------
type RecordPrice
int bar_index
float open_price
float high_price
float low_price
float close_price
type Extremum
chart.point pt
string kind // "high" 或 "low"
type ABCPoints
float price_a
int index_a
float price_b
int index_b
float price_c
int index_c
string trend_type // "bull" 或 "bear"
bool broken // 是否被突破
// ------------------ 数组初始化 ------------------
var bullRecords = array.new()
var bearRecords = array.new()
var allPoints = array.new() // 存储所有高低点
var label pointLabels = array.new() // 存储绘制的标签,方便清理
var abcBullPoints = ABCPoints.new() // 存储牛市ABC点
var abcBearPoints = ABCPoints.new() // 存储熊市ABC点
// 存储黄线和标签的引用
var line yellowLines = array.new()
var label yellowLabels = array.new()
// 存储绿线和标签的引用
var line greenLines = array.new()
var label greenLabels = array.new()
// 突破状态变量
var bool cBroken = false
var int breakBarIndex = na
var bool fBroken = false
var int breakBarIndexBear = na
// 信号检测变量
var string currentSignal = ""
var string alertMessage = ""
var bool buySignal = false
var bool sellSignal = false
// ------------------ 状态变量 ------------------
var string lastPosition = "none"
var float lastHigh = na
var int lastHighBarIndex = na
var float lastLow = na
var int lastLowBarIndex = na
var float currentHigh = 0.0
var float currentLow = 0.0
var int currentHighBar = 0
var int currentLowBar = 0
// 使用Map存储每根K线是否创新高/新低
var map newHighMap = map.new()
var map newLowMap = map.new()
// 初始化
if barstate.isfirst
currentHigh := high
currentLow := low
currentHighBar := bar_index
currentLowBar := bar_index
// 更新区间高低并标记
bool isNewHigh = false
bool isNewLow = false
if high > currentHigh
currentHigh := high
currentHighBar := bar_index
isNewHigh := true
if low < currentLow
currentLow := low
currentLowBar := bar_index
isNewLow := true
// 存储当前K线的标记
map.put(newHighMap, bar_index, isNewHigh)
map.put(newLowMap, bar_index, isNewLow)
// ------------------ 方法 ------------------
method putRecord(array arr, int bar_idx, float open_pr, float high_pr, float low_pr, float close_pr) =>
newRecord = RecordPrice.new()
newRecord.bar_index := bar_idx
newRecord.open_price := open_pr
newRecord.high_price := high_pr
newRecord.low_price := low_pr
newRecord.close_price := close_pr
array.push(arr, newRecord)
method getRecord(array arr, int index) =>
if array.size(arr) > index and index >= 0
array.get(arr, index)
else
na
method removeRecord(array arr, int index) =>
if array.size(arr) > index and index >= 0
array.remove(arr, index)
method getLastRecord(array arr) =>
int size = array.size(arr)
if size > 0
array.get(arr, size - 1)
else
na
method isIncreasingLastN(array arr, int N) =>
if array.size(arr) < N
false
else
inc = true
for i = array.size(arr) - N to array.size(arr) - 2
prev = arr.getRecord(i)
curr = arr.getRecord(i + 1)
if curr.high_price <= prev.high_price
inc := false
break
inc
method isDecreasingLastN(array arr, int N) =>
if array.size(arr) < N
false
else
dec = true
for i = array.size(arr) - N to array.size(arr) - 2
prev = arr.getRecord(i)
curr = arr.getRecord(i + 1)
if curr.low_price >= prev.low_price
dec := false
break
dec
// 删除所有黄线和标签的方法
deleteYellowLinesAndLabels() =>
// 删除黄线
if array.size(yellowLines) > 0
for i = 0 to array.size(yellowLines) - 1
line l = array.get(yellowLines, i)
if not na(l)
line.delete(l)
array.clear(yellowLines)
// 删除标签
if array.size(yellowLabels) > 0
for i = 0 to array.size(yellowLabels) - 1
label lab = array.get(yellowLabels, i)
if not na(lab)
label.delete(lab)
array.clear(yellowLabels)
// 删除所有绿线和标签的方法
deleteGreenLinesAndLabels() =>
// 删除绿线
if array.size(greenLines) > 0
for i = 0 to array.size(greenLines) - 1
line l = array.get(greenLines, i)
if not na(l)
line.delete(l)
array.clear(greenLines)
// 删除标签
if array.size(greenLabels) > 0
for i = 0 to array.size(greenLabels) - 1
label lab = array.get(greenLabels, i)
if not na(lab)
label.delete(lab)
array.clear(greenLabels)
// 辅助函数:判断K线类型
isBullish(int offset = 0) =>
close > open
isBearish(int offset = 0) =>
close < open
// 辅助函数:获取当前趋势
getCurrentTrend() =>
if lastPosition == "low"
"uptrend" // 上涨趋势
else if lastPosition == "high"
"downtrend" // 下跌趋势
else
"none"
// 辅助函数:检查指定偏移的K线是否创过新高
wasNewHigh(int offset) =>
int targetBarIndex = bar_index - offset
bool result = false
if map.contains(newHighMap, targetBarIndex)
result := map.get(newHighMap, targetBarIndex)
result
// 辅助函数:检查指定偏移的K线是否创过新低
wasNewLow(int offset) =>
int targetBarIndex = bar_index - offset
bool result = false
if map.contains(newLowMap, targetBarIndex)
result := map.get(newLowMap, targetBarIndex)
result
// 辅助函数:检查过去N根K线中是否有创新高
hasNewHigh(int lookback = 3) =>
bool newHigh = false
for i = 0 to lookback - 1
if wasNewHigh(i)
newHigh := true
break
newHigh
// 辅助函数:检查过去N根K线中是否有创新低
hasNewLow(int lookback = 3) =>
bool newLow = false
for i = 0 to lookback - 1
if wasNewLow(i)
newLow := true
break
newLow
// 辅助函数:在过去5根K线中检查阴阳阴组合且有新高(相对于趋势起点)
checkBearishYYXPattern() =>
bool hasPattern = false
bool hasHighInRange = false
// 检查过去5根K线中是否有创新高
for i = 0 to 4
if wasNewHigh(i)
hasHighInRange := true
break
if hasHighInRange
// 检查过去3根K线的阴阳阴组合
if isBearish(0) and isBullish(1) and isBearish(2)
hasPattern := true
hasPattern
// 辅助函数:在过去5根K线中检查阳阴阳组合且有新低(相对于趋势起点)
checkBullishAYYPattern() =>
bool hasPattern = false
bool hasLowInRange = false
// 检查过去5根K线中是否有创新低
for i = 0 to 4
if wasNewLow(i)
hasLowInRange := true
break
if hasLowInRange
// 检查过去3根K线的阳阴阳组合
if isBullish(0) and isBearish(1) and isBullish(2)
hasPattern := true
hasPattern
// 辅助函数:检查是否是看涨吞没形态
isBullishEngulf(int offset = 0) =>
// 当前K线是阳线
isBullish(offset) and
// 吞没前一根K线
high > high and low < low and
// 确保只吞没前一根,不吞没前二根
not (high > high and low < low )
// 辅助函数:检查是否是看跌吞没形态
isBearishEngulf(int offset = 0) =>
// 当前K线是阴线
isBearish(offset) and
// 吞没前一根K线
high > high and low < low and
// 确保只吞没前一根,不吞没前二根
not (high > high and low < low )
// ------------------ 阳线/阴线处理 ------------------
if close > open
bullRecords.putRecord(bar_index, open, high, low, close)
if array.size(bullRecords) > count_bull
bullRecords.removeRecord(0)
if close < open
bearRecords.putRecord(bar_index, open, high, low, close)
if array.size(bearRecords) > count_bear
bearRecords.removeRecord(0)
// 做一个统计 ,记录当时的高价
var int count_long=na
var int count_short=na
var float high_price=na
var float low_price=na
// ------------------ 寻找低点 ------------------
if array.size(bullRecords) >= count_bull and bullRecords.isIncreasingLastN(count_bull) and close > open
if (lastPosition == "none" or lastPosition == "high") and low!=currentLow and bullRecords.first().bar_index >= currentLowBar
lastPosition := "low"
lastLow := currentLow
lastLowBarIndex := currentLowBar
if array.size(allPoints) >= max_points
array.shift(allPoints)
array.push(allPoints, Extremum.new(chart.point.from_index(lastLowBarIndex, lastLow), "low"))
currentHigh := high
currentHighBar := bar_index
count_long:=0
high_price:=high
// ------------------ 寻找高点 ------------------
if array.size(bearRecords) >= count_bear and bearRecords.isDecreasingLastN(count_bear) and close < open
if (lastPosition == "none" or lastPosition == "low") and high!=currentHigh and bearRecords.first().bar_index >= currentHighBar
lastPosition := "high"
lastHigh := currentHigh
lastHighBarIndex := currentHighBar
if array.size(allPoints) >= max_points
array.shift(allPoints)
array.push(allPoints, Extremum.new(chart.point.from_index(lastHighBarIndex, lastHigh), "high"))
currentLow := low
currentLowBar := bar_index
count_short:=0
low_price:=low
// ------------------ 绘制 ------------------
if barstate.islast and array.size(allPoints) > 1
// 删除旧的标签
for l in pointLabels
label.delete(l)
array.clear(pointLabels)
// 历史折线
if array.size(allPoints) > 2 and show_lines
tmpPts = array.new()
for i = 0 to array.size(allPoints)-2
ex = array.get(allPoints, i)
array.push(tmpPts, ex.pt)
polyline.new(tmpPts, xloc=xloc.bar_index, line_color=line_color, line_width=line_width)
// 最后一段线
if array.size(allPoints) >= 2 and show_lines
ex1 = array.get(allPoints, array.size(allPoints)-2)
ex2 = array.get(allPoints, array.size(allPoints)-1)
line.new(x1=ex1.pt.index, y1=ex1.pt.price, x2=ex2.pt.index, y2=ex2.pt.price,
xloc=xloc.bar_index, color=line_color, width=line_width)
// 高低点标签
if show_points
for i = 0 to array.size(allPoints)-1
ex = array.get(allPoints, i)
label lbl = na
if ex.kind == "low"
lbl := label.new(ex.pt.index, ex.pt.price, text=str.tostring(ex.pt.price),
style=label.style_label_up, color=color.new(color.green,80), textcolor=color.white)
else
lbl := label.new(ex.pt.index, ex.pt.price, text=str.tostring(ex.pt.price),
style=label.style_label_down, color=color.new(color.red,80), textcolor=color.white)
array.push(pointLabels,lbl)
// ------------------ 虚线预测段 ------------------
var line lastDashedLine = na
var label lastDashedLabel = na
if barstate.islast and array.size(allPoints) > 0
lastEx = array.get(allPoints, array.size(allPoints)-1)
if lastEx.kind == "low" and show_lines
if not na(lastDashedLine)
line.delete(lastDashedLine)
lastDashedLine := line.new(lastEx.pt.index, lastEx.pt.price, currentHighBar, currentHigh,
xloc=xloc.bar_index, color=line_color, width=line_width, style=line.style_dashed)
if show_points
if not na(lastDashedLabel)
label.delete(lastDashedLabel)
lastDashedLabel := label.new(lastEx.pt.index, lastEx.pt.price, text='H',
style=label.style_label_down, color=color.new(h_color,h_trs), textcolor=color.white)
if lastEx.kind == "high" and show_lines
if not na(lastDashedLine)
line.delete(lastDashedLine)
lastDashedLine := line.new(lastEx.pt.index, lastEx.pt.price, currentLowBar, currentLow,
xloc=xloc.bar_index, color=line_color, width=line_width, style=line.style_dashed)
if show_points
if not na(lastDashedLabel)
label.delete(lastDashedLabel)
lastDashedLabel := label.new(currentLowBar, currentLow, text='L',
style=label.style_label_up, color=color.new(l_color,l_trs), textcolor=color.white)
// ------------------ 信号检测逻辑 ------------------
// 重置信号
buySignal := false
sellSignal := false
currentSignal := ""
alertMessage := ""
if enable_alerts and bar_index >= 2
// 获取当前趋势
trend = getCurrentTrend()
// 信号1:看跌【阴阳阴】- 上涨趋势中,过去5根K线中有新高且出现阴线-阳线-阴线组合
if show_signal_yyx and trend == "uptrend" and checkBearishYYXPattern()
sellSignal := true
currentSignal := "SELL"
alertMessage := "看跌【阴阳阴】"
// 信号2:看涨【阳阴阳】- 下跌趋势中,过去5根K线中有新低且出现阳线-阴线-阳线组合
if show_signal_ayy and trend == "downtrend" and checkBullishAYYPattern()
buySignal := true
currentSignal := "BUY"
alertMessage := "看涨【阳阴阳】"
// 信号3:看涨【一大于二】- 下跌趋势中创新低,出现阳线,左边2根K至少有一根阴线
if show_signal_bull_1v2 and trend == "downtrend" and isBullish(0) and (isBearish(1) or isBearish(2)) and hasNewLow(3)
// 条件1:阳线实体最高价(收盘价)大于左边2根K实体最高价且实体最低价(开盘价)小于左边2根K实体最低价
condition1 = close > math.max(close , open ) and close > math.max(close , open ) and
open < math.min(close , open ) and open < math.min(close , open )
// 条件2:阳线最高价分别大于左边2根K最高价且最低价分别小于左边2根K最低价
condition2 = high > high and high > high and low < low and low < low
if condition1 or condition2
buySignal := true
currentSignal := "BUY"
alertMessage := "看涨【一大于二】"
// 信号4:看跌【一大于二】- 上涨趋势中,出现阴线,左边2根K至少有一根阳线
if show_signal_bear_1v2 and trend == "uptrend" and isBearish(0) and (isBullish(1) or isBullish(2)) and hasNewHigh(3)
// 条件1:阴线实体最高价(开盘价)大于左边2根K实体最高价且实体最低价(收盘价)小于左边2根K实体最低价
condition1 = open > math.max(close , open ) and open > math.max(close , open ) and
close < math.min(close , open ) and close < math.min(close , open )
// 条件2:阴线最高价分别大于左边2根K最高价且最低价分别小于左边2根K最低价
condition2 = high > high and high > high and low < low and low < low
if condition1 or condition2
sellSignal := true
currentSignal := "SELL"
alertMessage := "看跌【一大于二】"
// 信号5:看跌【二大于二】- 上涨趋势中
if show_signal_bear_2v2 and trend == "uptrend" and bar_index >= 3
// 条件1:连续2根阴线收盘价低于左边2根K线,且4根K线前3根必须有一根创新高(相对于趋势起点)
condition1 = show_signal_bear_2v2_c1 and isBearish(0) and isBearish(1) and
close < close and close < close and close < close and close < close and
(wasNewHigh(1) or wasNewHigh(2) or wasNewHigh(3))
// 条件2:连续2根阳线后再连续2根阴线,2根阴线最低价低于前面2根阳线最低价,最高价大于前面2根阳线最高价,中间2根K必须有一根创新高(相对于趋势起点)
condition2 = show_signal_bear_2v2_c2 and isBearish(0) and isBearish(1) and isBullish(2) and isBullish(3) and
math.min(low, low ) < math.min(low , low ) and
math.max(high, high ) > math.max(high , high ) and
(wasNewHigh(1) or wasNewHigh(2))
if condition1 or condition2
sellSignal := true
currentSignal := "SELL"
alertMessage := "看跌【二大于二】" + (condition1 ? "-条件1" : "") + (condition2 ? "-条件2" : "")
// 信号6:看涨【二大于二】- 下跌趋势中
if show_signal_bull_2v2 and trend == "downtrend" and bar_index >= 3
// 条件1:连续2根阳线收盘价高于左边2根K线,且4根K线前3根必须有一根创新低(相对于趋势起点)
condition1 = show_signal_bull_2v2_c1 and isBullish(0) and isBullish(1) and
close > close and close > close and close > close and close > close and
(wasNewLow(1) or wasNewLow(2) or wasNewLow(3))
// 条件2:连续2根阴线后再连续2根阳线,2根阳线最低价低于前面2根阴线最低价,最高价大于前面2根阴线最高价,中间2根K必须有一根创新低(相对于趋势起点)
condition2 = show_signal_bull_2v2_c2 and isBullish(0) and isBullish(1) and isBearish(2) and isBearish(3) and
math.min(low, low ) < math.min(low , low ) and
math.max(high, high ) > math.max(high , high ) and
(wasNewLow(1) or wasNewLow(2))
if condition1 or condition2
buySignal := true
currentSignal := "BUY"
alertMessage := "看涨【二大于二】" + (condition1 ? "-条件1" : "") + (condition2 ? "-条件2" : "")
// 信号7:看跌【吞没随阴线】- 上涨趋势中阳线吞没前一根K线,阳线后出现阴线,且有一根K创新高
if show_signal_bull_engulf and trend == "uptrend" and bar_index >= 2 and
isBullishEngulf(1) and isBearish(0) and hasNewHigh(3)
sellSignal := true
currentSignal := "SELL"
alertMessage := "看跌【吞没随阴线】"
// 信号8:看涨【吞没随阳线】- 下跌趋势中阴线吞没前一根K线,阴线后出现阳线,且有一根K创新低
if show_signal_bear_engulf and trend == "downtrend" and bar_index >= 2 and
isBearishEngulf(1) and isBullish(0) and hasNewLow(3)
buySignal := true
currentSignal := "BUY"
alertMessage := "看涨【吞没随阳线】"
// ------------------ BUY/SELL标记显示 ------------------
if show_signals
// 根据signal_size设置标记大小
labelSize = switch signal_size
"tiny" => size.tiny
"small" => size.small
"normal" => size.normal
"large" => size.large
"huge" => size.huge
=> size.normal
// 显示BUY信号
if buySignal
label.new(bar_index, low - (high - low) * signal_distance, text="BUY",
style=label.style_label_up, color=color.new(color.green, 0),
textcolor=color.white, size=labelSize, tooltip=alertMessage)
// 显示SELL信号
if sellSignal
label.new(bar_index, high + (high - low) * signal_distance, text="SELL",
style=label.style_label_down, color=color.new(color.red, 0),
textcolor=color.white, size=labelSize, tooltip=alertMessage)
// ------------------ TradingView警报条件 ------------------
// 检查是否有启用的买入/卖出信号(包括子条件)
enabledBuySignals = show_signal_ayy or
(show_signal_bull_1v2 ) or
(show_signal_bull_2v2 and (show_signal_bull_2v2_c1 or show_signal_bull_2v2_c2)) or
show_signal_bear_engulf
enabledSellSignals = show_signal_yyx or
(show_signal_bear_1v2) or
(show_signal_bear_2v2 and (show_signal_bear_2v2_c1 or show_signal_bear_2v2_c2)) or
show_signal_bull_engulf
// 买入信号警报
alertcondition(enable_alerts and enabledBuySignals and buySignal, title="买入信号", message="{{alertMessage}}")
// 卖出信号警报
alertcondition(enable_alerts and enabledSellSignals and sellSignal, title="卖出信号", message="{{alertMessage}}")
// 所有信号的通用警报
alertcondition(enable_alerts and (enabledBuySignals and buySignal or enabledSellSignals and sellSignal), title="所有交易信号",
message="信号类型: {{currentSignal}}, 详情: {{alertMessage}}")
// 具体的信号类型警报
alertcondition(enable_alerts and show_signal_ayy and buySignal and str.contains(alertMessage, "阳阴阳"), title="看涨【阳阴阳】", message="看涨【阳阴阳】")
alertcondition(enable_alerts and show_signal_yyx and sellSignal and str.contains(alertMessage, "阴阳阴"), title="看跌【阴阳阴】", message="看跌【阴阳阴】")
alertcondition(enable_alerts and show_signal_bull_1v2 and buySignal and str.contains(alertMessage, "一大于二"), title="看涨【一大于二】", message="看涨【一大于二】")
alertcondition(enable_alerts and show_signal_bear_1v2 and sellSignal and str.contains(alertMessage, "一大于二"), title="看跌【一大于二】", message="看跌【一大于二】")
alertcondition(enable_alerts and show_signal_bull_2v2 and buySignal and str.contains(alertMessage, "二大于二"), title="看涨【二大于二】", message="看涨【二大于二】")
alertcondition(enable_alerts and show_signal_bear_2v2 and sellSignal and str.contains(alertMessage, "二大于二"), title="看跌【二大于二】", message="看跌【二大于二】")
alertcondition(enable_alerts and show_signal_bull_engulf and sellSignal and str.contains(alertMessage, "吞没随阴线"), title="看涨吞没【吞没随阴线】", message="看涨吞没【吞没随阴线】")
alertcondition(enable_alerts and show_signal_bear_engulf and buySignal and str.contains(alertMessage, "吞没随阳线"), title="看跌【吞没随阳线】", message="看跌【吞没随阳线】")
ZTCRYPTOLAB - Liquidity (v1.8.4)ZTCRYPTOLAB — Liquidation
See the market’s likely liquidation pockets as clean, readable “heat bars.”
The script groups nearby levels into a single bar, sizes the bar by strength, shows a compact value label (K/M/B/T) inside the bar, and automatically fades levels once price takes them out.
What it does (plain-English)
Finds likely liquidation zones above and below current price at three “tiers” (roughly like 25× / 50× / 100×).
Groups nearby levels into one clear bar so your chart doesn’t turn into spaghetti.
Makes stronger zones look wider (more eye-catching) and prints a value pill in K/M/B/T so you can compare strength at a glance.
Fades levels once they’re hit so you instantly see what’s still in play vs. what was already taken.
Quick start (how to use)
Add to chart on the symbol/timeframe you trade.
In the settings, the only control most traders touch is “Max live levels (Top-N)”.
Lower = cleaner, only the best zones.
Higher = more detail.
Zoom out to view big cluster magnets. Zoom in to see them split into more precise lines.
Use wide, nearby bars as targets, magnets, or caution zones. Combine with your entries, stop placement, and risk rules.
Tip: For very busy charts, start with Top-N around 80–100 on intraday, 40–80 on swing. Raise only if you need more context.
Inputs you’ll actually use
Max live levels (Top-N): Caps how many live bars can appear after pruning. Everything else is tuned for clarity out-of-the-box.
(Pre-tuned so you don’t have to fiddle)
Reference price: HLCC4 (balanced)
Density: Fine (crisper separation)
Tier-1 (25×) sensitivity slightly boosted so you see more actionable near-term zones
How to read the chart
Bar color = Tier (25× / 50× / 100×).
Bar width = Relative strength (wider = stronger).
Value pill = Strength in K/M/B/T.
Faded bar = That pocket was taken by price—left for context, no longer active.
Suggested setups by timeframe
Scalping (1–5m): Top-N 80–120. Expect bars to merge more when zoomed out; zoom in for fine detail.
Intraday (15–60m): Top-N 80–100. Balanced view of magnets around current session.
Swing (4H–1D): Top-N 40–80. Use the longest-standing wide clusters as swing targets/areas of interest.
Best practices
Treat bars as areas, not razor-thin lines.
Look for confluence (e.g., HTF levels, fair value gaps, session highs/lows).
Use wide nearby bars to scale out or tighten risk, not as the only reason to trade.
FOR MORE PREMIUM INDICATORS VISIT OUR WHOP : whop.com
10MA Crosses Above 20MA//@version=5
indicator("10MA Crosses Above 20MA", overlay=true)
ma10 = ta.sma(close, 10)
ma20 = ta.sma(close, 20)
plot(ma10, color=color.orange, title="10MA")
plot(ma20, color=color.blue, title="20MA")
crossUp = ta.crossover(ma10, ma20)
alertcondition(crossUp, title="10MA Crosses Above 20MA", message="10MA升穿20MA,可能是買入訊號!")
10MA Crosses Above 20MA//@version=5
indicator("10MA Crosses Above 20MA", overlay=true)
ma10 = ta.sma(close, 10)
ma20 = ta.sma(close, 20)
plot(ma10, color=color.orange, title="10MA")
plot(ma20, color=color.blue, title="20MA")
crossUp = ta.crossover(ma10, ma20)
alertcondition(crossUp, title="10MA Crosses Above 20MA", message="10MA升穿20MA,可能是買入訊號!")
Basic Odds Enhancer: Supply Zone for ShortsHow to Use/Adjust:
On your chart, it marks bars where a 20-bar high coincides with high volume and bearish divergence—flag these as supply zones.
Tweak supply_threshold to 2.0 for stricter volume (fewer but stronger signals).
For zones, manually draw rectangles around the flagged area (use Drawing Tools > Rectangle).
Backtest: Apply to historical data (e.g., EUR/USD 4H) and check win rate with shorts on retests.
This setup typically yields 2-5 signals per week on major pairs, depending on volatility. Test on a demo account, and combine with market context (e.g., avoid shorts in strong uptrends).
Opening Range Gaps [TakingProphets]What is an Opening Range Gap (ORG)?
In ICT, the Opening Range Gap is defined as the price difference between the previous session’s close (e.g., 4:00 PM EST in U.S. indices) and the current day’s open (9:30 AM EST).
That gap is a liquidity void—an area where no trading occurred during regular hours.
Why ICT Traders Care About ORG
Liquidity Void (Gap Fill Logic)
-Because the gap is an untraded area, it naturally acts as a draw on liquidity.
-Price often seeks to rebalance by retracing into or fully filling this void.
Premium/Discount Sensitivity
-Once the ORG is defined, ICT treats it as a mini dealing range.
-Above EQ (Consequent Encroachment) = algorithmic premium (sell-sensitive).
-Below EQ = algorithmic discount (buy-sensitive).
-Price reaction at these levels gives a precise read on institutional intent intraday.
Support/Resistance from ORG
-If the session opens above prior close, the gap often acts as support until violated.
-If the session opens below prior close, the gap often acts as resistance until reclaimed.
Key ICT Concepts Anchored to ORG
Consequent Encroachment (CE): The midpoint of the gap. The algo is highly sensitive to CE as a decision point: reject → continuation; reclaim → reversal.
Draw on Liquidity (DoL): Price is algorithmically “pulled” toward gap fills, CE, or the opposite side of the ORG.
Order Flow Confirmation: If price ignores the gap and runs away from it, this signals strong institutional order flow in that direction.
Confluence with Other Tools: FVGs, OBs, and HTF PD arrays often overlap with ORG levels, strengthening setups.
Practical Application for Traders
Bias Formation:
Use ORG EQ as a line in the sand for intraday bias.
If price trades below ORG EQ after the open → look for short setups into the prior day’s low or external liquidity.
If price trades above ORG EQ → favor longs into highs/liquidity pools.
Execution Framework:
Wait for liquidity raids or market structure shifts at ORG edges (.00, .25, .50, .75).
Target: EQ, opposite quarter, or full gap fill.
Precision Reads:
ORG lines let traders anticipate where algorithms are likely to respond, providing mechanical invalidation and clear targets without clutter.
Odds Enhancer: Volume + RSI DivHow it Works: This flags potential demand zones where price hits a 20-bar low with a volume spike and bullish RSI divergence. Customize for supply zones by flipping logic.
MACD 面积战术 ZCu like it, u use it
MACD version 3
MACD Area Tactical – Strategy Overview
This custom TradingView indicator is a multi-timeframe MACD-based tactical tool designed to identify bottoms, breakouts, take-profits, and volatility spikes with noise control and advanced gating.
Core Features:
Bottom Detection
Detects early bottom signals before a MACD golden cross, with conditions such as histogram improvement, minimum negative depth, and “rate of decline slowing.”
Differentiates between major bottoms and minor bottoms, with rules to avoid repeated or false signals in extended downtrends.
Chasing Signals
Confirms trend continuation after a bottom, with multi-timeframe validation (30m, 4h) and fallback triggers from lower-timeframes.
Includes impulse mode for strong rallies, allowing more flexible breakout confirmation.
Take-Profit Logic
Provides both major take-profit (trend peak exits) and minor take-profit (short-term weakening).
Uses histogram weakening, moving-average breakdowns, higher-timeframe momentum loss, and divergence detection.
Built-in filters suppress false take-profits at low MACD levels.
3F High-Speed Moves
Detects short-term surges or crashes (3-minute bars) by combining returns, volatility z-scores, MACD acceleration, and histogram turnarounds.
Helps catch fast market reversals or exhaustion signals.
Noise Control & RTH/Non-RTH Filtering
In regular trading hours (RTH), signals fire intrabar.
Outside RTH, confirmation requires bar close + additional volume/volatility gating to reduce false signals.
Cooldown periods (e.g., 8–12 bars) further suppress repetitive signals.
Dynamic Webhook System
Sends structured JSON alerts with prioritized signal categories (Bottom > Take-Profit > Impulse > Chase).
Compatible with Discord/Telegram bots or automated trading pipelines.
Practical Use
Bottom & Chase help identify entry opportunities.
Take-Profit signals provide disciplined exit levels with flexibility for major vs. minor exits.
Impulse & 3F filters enhance recognition of momentum bursts and avoid chasing noise.
Webhook integration allows automated logging or execution in external systems.
In short: it is a comprehensive, multi-layered MACD tactical system combining bottom-fishing, breakout chasing, and structured exit logic with noise-reduction and automation support.
New York SessionNY Session highlighter, this indicator highlights newyork session to make it simpler for everyone to differentiate moves between different different sessions
✨ Astonishing Smooth Double Keltner Channels ✨This indicator brings a fresh, ultra-smooth take on the classic Keltner Channels, designed to help you better visualize volatility and trend with minimal lag and maximum clarity.
Key Features:
Hull Moving Average (HMA) as the middle line for superior smoothness and responsiveness compared to traditional EMA.
Double Keltner Channels with customizable multipliers (default 4 and 8) to capture different volatility zones.
Adaptive ATR smoothing using RMA for stable yet responsive channel width.
Dynamic coloring of channel bands and background based on price position relative to the middle line — green for bullish, red for bearish.
Visual fills between channel bands for easy zone identification.
Price crossover signals plotted as arrows to highlight potential breakout or breakdown points.
Why use this indicator?
Keltner Channels are a powerful tool for identifying trend direction, volatility expansion, and potential reversal zones. This version enhances the classic formula by applying advanced smoothing techniques and visual cues, making it easier to interpret price action and make informed trading decisions.
How to use:
Adjust the length and multipliers to fit your trading style and the instrument’s volatility.
Watch the smooth middle line (HMA) to identify trend direction.
Use the channel bands as dynamic support/resistance and volatility boundaries.
Pay attention to the crossover signals for potential entry or exit points.
The background color helps quickly gauge market bias at a glance.
Feel free to customize the inputs and experiment with different settings to suit your strategy. This indicator works well on all timeframes and instruments.
If you find it useful, please leave a like and comment! Happy trading! 🚀📈
Big BaseA 120 bar breakout is considered powerful because it identifies price moves beyond a significant and long term reference point the highest closing price over approximately 6 months of trading days. Such breakouts signal strong momentum and often mark the start of major new trends or significant price swings.
It represents a breakout beyond a well established resistance level formed over many weeks, highlighting strong buying interest that overcame prior price ceilings.
This timeframe reduces noise from short term fluctuations, helping focus on sustained moves with higher probability of follow through
Breakouts from long consolidation periods tend to generate increased volatility, attracting more traders and volume, which supports stronger trends.
These breakouts can act as a reliable signal for entry points in both swing trading and longer-term investing, often leading to substantial price appreciation.
To leverage such breakouts, traders typically confirm the breakout with volume spikes, set appropriate stop loss levels just below the breakout price, and manage risk carefully since not all breakouts hold.
Odd Digit Candle High/Low Sums [Cross-Aware EMA]DO NOt use this
This is only a test showcasing cool different color options and stuff
It has no use
Do not use
Odd Digit Candle High/Low Sums [Cross-Aware EMA]This is a test.
Do not use:
Only using to display different things indicator can do.
This is not a real indicator
SMA Pro (Tick)Simple moving average based on 100 ticks, by default. Use for high volume markets like ES, NQ, and RTY.
Blizzard TradingBlizzard Trading is an advanced technical indicator designed to identify trends, structural changes, and potential entry zones in the market. It combines multiple layers of analysis — such as overall trend direction, momentum, and price structure — to provide a clear view of market behavior.
Visually, it highlights bullish and bearish phases through colors and shaded areas, making the chart easier to interpret. It also generates automatic alerts when significant changes in trend or price structure are detected. The indicator is mainly aimed at scalping and intraday trading, helping traders spot quick opportunities with precise visual confirmations.
Blvck 369 TestA test run on my 369 indicator for Brox to check out.
Plots pivots that align with Zeussy's 369 time price theory.
Plots pivots that align with 369 time. LTF and auto adjusts for HTF.
Can have alerts set to any label triggered. You can adjust things in the back end too like pivot sensitivity, high only/low only and looks etc.
pretty pleased with it and if you dont mind me doing so, id like to offer it to folks. Your call though.
If youd rather I not then ill just keep it to myself for now.
A2B TRADING AREAS OF INTREST-RSI-MACD-ADX-BUY & SELLS HIKEN ASH ✅ How to Read the Chart Quickly
Look at HA candles: green uptrend, red downtrend.
Check background color: confirms trend strength (green/red/yellow).
Observe combo MA slope: direction reinforces trend.
RSI dots: highlight oversold/overbought turning points.
ADX + MACD + RSI arrows: confirm buy/sell zones with high probability.
Smart Trail line: optional guide for potential stops or trailing entry levels.
mp.mood UTC Sessions boxes tg - picabloEN:
UTC Sessions — wick-bounded boxes. Draws compact transparent rectangles for Tokyo, London, New York, Sydney, and Frankfurt sessions in UTC. Each box spans the session time and auto-fits vertically to candle wicks (high/low) of the current timeframe. Labels appear in the top-left of each box. Colors, transparency, and sessions are configurable.
UK:
UTC Sessions — прямокутники за сесіями. Малює лаконічні прозорі квадрати для сесій Tokyo, London, New York, Sydney та Frankfurt у UTC. Кожен квадрат охоплює час сесії та автоматично підлаштовує вертикальні межі під тіні свічок (high/low) поточного таймфрейму. Підпис у верхньому лівому куті. Кольори, прозорість і набір сесій налаштовуються.
Eng. Jaycob 💰It will show you where are the prices that may get reverse from them.
Numbers will be updated daily on the chart.
Blvck 369 — Zeussy 3/6/9 Pivot Time FilterBlvck 369 Pivot Time Indicator implements the Zeussy 369 trading theory on-chart, so you don’t have to manually calculate 3/6/9 timings in real time. It marks pivot Highs/Lows only when the digital root of the timestamp (or date, on HTFs) equals 3, 6, or 9—all other prints are filtered out. It scales cleanly from lower timeframes (LTF) to higher timeframes (HTF) and keeps the labels neatly offset from price using an ATR-based gap.
What it shows
Intraday (auto):
H+M (hour+minute digits) and M-only (minute digits) digital roots.
If either = 3/6/9, the pivot is labeled (time on first line, matching modes on second).
HTFs (auto on Daily/Weekly/Monthly):
M+D (month+day digits) and D-only (day digits) digital roots.
If either = 3/6/9, the pivot is labeled (date + matching modes).
Filter: Only relevant 3/6/9 timings are shown—noise removed.
Why use it
Zeussy 369 automation: No more mental math or off-chart notes—everything is computed live.
Scales across LTF/HTF: Auto-switches logic (time vs date) so you can keep the same tool for scalps and swings.
Clean placement: Single, combined label per pivot with ATR-based offset for consistent spacing across symbols/timeframes.
Targeted view: Toggle Show Highs and Show Lows to focus on one side of liquidity hunts.
Settings (highlights)
Hour Offset (±): Align session times to your local clock.
Show Highs / Show Lows: Side filters.
Show numeric DR: Append which mode(s) matched (e.g., H+M 9 | M 6 or M+D 6 | D 3).
ATR Length & Multipliers: Controls label distance from the wick (stable across TFs/instruments).
Pro tip: Combine Blvck 369 Indicator with time-cycle SMT (Smart Money divergence) around these 3/6/9 pivots. The confluence often marks high-probability reversal windows.
Built for traders who like it clean, fast, and to the point. All the relevant 369 numbers are displayed—everything else is filtered out.