指标示例

共 91 个可运行公式。通过顶部搜索查找指标、函数或公式内容。

“添加自编指标”菜单依次提供 新建指标 、 指标示例 和 指标管理 ,分隔线下单独展示客户已同步到清单的指标。

内置示例是 只读模板 ,在“指标示例”中显示的名称不附加“(示例)”。编辑示例并保存时生成 新 ID 的自编指标 ,当前图表使用新指标,原示例和其他图表中的示例保持不变。

保存只编译当前编辑框中的公式。其他已保存公式的源码错误不会阻止本次保存。指标文件的结构或元数据损坏时会拒绝覆盖。

“同步到自编指标清单”决定副本是否加入客户清单,默认不勾选。“指标管理”只管理客户指标,支持改名、排序和从清单删除。旧版已保存的用户覆盖定义继续作为客户指标保留。

扩展示范新增 Squeeze、WaveTrend、Stoch RSI、HMA 趋势、唐奇安突破、肯特纳通道、VWAP 标准差通道、市场结构基础和 FVG+OB 基础。参数集中在源码开头,默认不发声、不下单。

市场结构在确认当根标记,不回填拐点。FVG+OB 基础仅演示当前周期的三根结构识别,不含区域方框、向右延伸、回补管理或多周期叠加。最新未收盘 K 线上的标记可能随行情变化。

主图指标

BOLL

原始 BOLL 指标的公式复刻

NAME = "BOLL";
PLACEMENT = MAIN;
N=26;
UP=2;
DOWN=2;
MID_VALUE := MA(CLOSE, N);
DEV := STDP(CLOSE, N);
UPPER: MID_VALUE + UP * DEV, COLORCYAN, LINETHICK1;
MID: MID_VALUE, COLORYELLOW, LINETHICK1;
LOWER: MID_VALUE - DOWN * DEV, COLORMAGENTA, LINETHICK1;

MA

原始 MA 指标的公式复刻

PLACEMENT = MAIN;
N=30;
MA: MA(CLOSE, N), COLORYELLOW, LINETHICK1;

PUBU

原始瀑布线指标的公式复刻

NAME = "PUBU";
PLACEMENT = MAIN;
M1=4;
M2=6;
M3=9;
M4=13;
M5=18;
M6=24;
PB1: (EMA(CLOSE, M1) + MA(CLOSE, M1 * 2) + MA(CLOSE, M1 * 4)) / 3, COLORWHITE, LINETHICK1;
PB2: (EMA(CLOSE, M2) + MA(CLOSE, M2 * 2) + MA(CLOSE, M2 * 4)) / 3, COLORYELLOW, LINETHICK1;
PB3: (EMA(CLOSE, M3) + MA(CLOSE, M3 * 2) + MA(CLOSE, M3 * 4)) / 3, COLORCYAN, LINETHICK1;
PB4: (EMA(CLOSE, M4) + MA(CLOSE, M4 * 2) + MA(CLOSE, M4 * 4)) / 3, COLORMAGENTA, LINETHICK1;
PB5: (EMA(CLOSE, M5) + MA(CLOSE, M5 * 2) + MA(CLOSE, M5 * 4)) / 3, COLORGREEN, LINETHICK1;
PB6: (EMA(CLOSE, M6) + MA(CLOSE, M6 * 2) + MA(CLOSE, M6 * 4)) / 3, COLORRED, LINETHICK1;

MIDPOINT

原始 MIDPOINT 指标的公式复刻

PLACEMENT = MAIN;
N=14;
MIDPOINT: (HHV(CLOSE, N) + LLV(CLOSE, N)) / 2, COLORYELLOW, LINETHICK1;

MIDPRICE

原始 MIDPRICE 指标的公式复刻

PLACEMENT = MAIN;
N=14;
MIDPRICE: (HHV(HIGH, N) + LLV(LOW, N)) / 2, COLORYELLOW, LINETHICK1;

CHL

原始收高低线组合指标的公式复刻

NAME = "CHL";
PLACEMENT = MAIN;
CLOSE_LINE: CLOSE, COLORYELLOW, LINETHICK1;
HIGH_LINE: HIGH, COLORRED, LINETHICK1;
LOW_LINE: LOW, COLORGREEN, LINETHICK1;

DC

原始唐奇安通道指标的公式复刻

NAME = "DC";
PLACEMENT = MAIN;
N=20;
UPPER_VALUE := HHV(HIGH, N);
LOWER_VALUE := LLV(LOW, N);
UPPER: UPPER_VALUE, COLORRED, LINETHICK1;
MIDDLE: (UPPER_VALUE + LOWER_VALUE) / 2, COLORYELLOW, LINETHICK1;
LOWER: LOWER_VALUE, COLORGREEN, LINETHICK1;

DEMA

原始双重指数移动平均线指标的公式复刻

PLACEMENT = MAIN;
N=30;
EMA1 := EMA(CLOSE, N);
EMA2_VALUE := EMA(EMA1, N);
DEMA: 2 * EMA1 - EMA2_VALUE, COLORYELLOW, LINETHICK1;

EMA

原始指数移动平均线指标的公式复刻

PLACEMENT = MAIN;
N=30;
EMA: EMA(CLOSE, N), COLORYELLOW, LINETHICK1;

TEMA

原始三重指数移动平均线指标的公式复刻

PLACEMENT = MAIN;
N=30;
EMA1 := EMA(CLOSE, N);
EMA2_VALUE := EMA(EMA1, N);
EMA3_VALUE := EMA(EMA2_VALUE, N);
TEMA: 3 * EMA1 - 3 * EMA2_VALUE + EMA3_VALUE, COLORYELLOW, LINETHICK1;

TRIMA

原始三角移动平均线指标的公式复刻

PLACEMENT = MAIN;
N=30;
P1=FLOOR((N + 1) / 2);
P2=N - P1 + 1;
FIRST_MA := MA(CLOSE, P1);
TRIMA: MA(FIRST_MA, P2), COLORYELLOW, LINETHICK1;

WMA

原始线性加权移动平均线指标的公式复刻

PLACEMENT = MAIN;
N=30;
WMA: WMA(CLOSE, N), COLORYELLOW, LINETHICK1;

KAMA

原始考夫曼自适应移动平均线指标的公式复刻

PLACEMENT = MAIN;
N=30;
KAMA: KAMA(CLOSE, N), COLORYELLOW, LINETHICK1;

SAR

原始抛物线转向指标及多空点位分色的公式复刻

NAME = "SAR";
PLACEMENT = MAIN;
ACC=0.02;
MAXACC=0.20;
SAR_LONG: SAR_LONG(HIGH, LOW, ACC, MAXACC), COLORRED, POINTDOT, LINETHICK2;
SAR_SHORT: SAR_SHORT(HIGH, LOW, ACC, MAXACC), COLORGREEN, POINTDOT, LINETHICK2;

MAMA

原始 MESA 自适应移动平均线指标的公式复刻

NAME = "MAMA";
PLACEMENT = MAIN;
FAST=0.9;
SLOW=0.1;
MAMA: MAMA(CLOSE, FAST, SLOW), COLORYELLOW, LINETHICK1;
FAMA: FAMA(CLOSE, FAST, SLOW), COLORCYAN, LINEDASH;

HT_TRENDLINE

原始 Hilbert 瞬时趋势线指标的公式复刻

PLACEMENT = MAIN;
HT_TRENDLINE: HT_TRENDLINE(CLOSE), COLORYELLOW, LINETHICK1;

成交量与持仓

OBV

原始 OBV 指标的公式复刻

PLACEMENT = SUB;
OBV: OBV(CLOSE, VOLUME), COLORYELLOW, LINETHICK1;

OI

原始持仓量指标的公式复刻

PLACEMENT = SUB;
OPEN_INTEREST: OPI, COLORRED, LINETHICK1;

AD

原始累积量价指标的公式复刻

PLACEMENT = SUB;
PRICE_RANGE := HIGH - LOW;
FLOW := IFELSE(PRICE_RANGE == 0, 0, ((CLOSE - LOW) - (HIGH - CLOSE)) * VOLUME / PRICE_RANGE);
AD: SUM(FLOW, 0), COLORYELLOW, LINETHICK1;

ADOSC

原始 Chaikin 累积量振荡器指标的公式复刻

PLACEMENT = SUB;
FAST=3;
SLOW=10;
PRICE_RANGE := HIGH - LOW;
FLOW := IFELSE(PRICE_RANGE == 0, 0, ((CLOSE - LOW) - (HIGH - CLOSE)) * VOLUME / PRICE_RANGE);
AD_VALUE := SUM(FLOW, 0);
FAST_EMA := SMA(AD_VALUE, FAST + 1, 2);
SLOW_EMA := SMA(AD_VALUE, SLOW + 1, 2);
READY := MA(AD_VALUE, SLOW);
ADOSC: IFELSE(READY == READY, FAST_EMA - SLOW_EMA, READY), COLORYELLOW, LINETHICK1;

VOL

原始成交量指标及涨跌分色的公式复刻

PLACEMENT = SUB;
VOL_UP: IFELSE(CLOSE >= OPEN, VOLUME, DRAWNULL), COLORRED, STICK;
VOL_DOWN: IFELSE(CLOSE < OPEN, VOLUME, DRAWNULL), COLORGREEN, STICK;

CCL

原始持仓异动指标及价格方向分色的公式复刻

PLACEMENT = SUB;
LC := REF(CLOSE, 1);
DELTA_OI := OI - REF(OI, 1);
CCL_UP: IFELSE(CLOSE >= LC, DELTA_OI, DRAWNULL), COLORRED, STICK;
CCL_DOWN: IFELSE(CLOSE < LC, DELTA_OI, DRAWNULL), COLORGREEN, STICK;

VOL+OI (示例)

成交量单输出按K线涨跌边框色绘实心柱,平盘用上涨色;持仓折线独立缩放,保留真实数值

PLACEMENT=SUB;
VOL:#VOL,IF(#CLOSE>=#OPEN,COLORUP,COLORDOWN),STICK2;
OI:#OI,COLORYELLOW,LINETHICK2,INDEPENDENTSCALE;

趋势与动量

KDJ

原始 KDJ 指标的公式复刻

NAME = "KDJ";
PLACEMENT = SUB;
N=9;
M1=3;
M2=3;
HH := HHV(HIGH, N);
LL := LLV(LOW, N);
RANGE := HH - LL;
RSV := IFELSE(RANGE == 0, 0, 100 * (CLOSE - LL) / RANGE);
K: EMA(RSV, M1), COLORYELLOW, LINETHICK1;
D: EMA(K, M2), COLORCYAN, LINETHICK1;
J: 3 * K - 2 * D, COLORMAGENTA, LINETHICK1;

MACD

原始 MACD 指标的公式复刻

NAME = "MACD";
PLACEMENT = SUB;
FAST=12;
SLOW=26;
SIGNAL=9;
FAST_EMA := EMA(CLOSE, FAST, SLOW);
SLOW_EMA := EMA(CLOSE, SLOW);
DIF: FAST_EMA - SLOW_EMA, COLORWHITE, LINETHICK1;
DEA: EMA(DIF, SIGNAL), COLORYELLOW, LINETHICK1;
MACD: 2 * (DIF - DEA), COLORSTICK;

DMI

原始 DMI 指标的公式复刻

NAME = "DMI";
PLACEMENT = SUB;
N=14;
LC := REF(CLOSE, 1);
TR_VALUE := MAX(MAX(HIGH - LOW, ABS(HIGH - LC)), ABS(LOW - LC));
HD := HIGH - REF(HIGH, 1);
LD := REF(LOW, 1) - LOW;
PDM := MAX(HD, 0) * (HD > LD);
MDM := MAX(LD, 0) * (LD > HD);
TR_SMOOTH := WILDERSUM(TR_VALUE, N);
PDM_SMOOTH := WILDERSUM(PDM, N);
MDM_SMOOTH := WILDERSUM(MDM, N);
PDI_VALUE := IFELSE(TR_SMOOTH == 0, 0, 100 * PDM_SMOOTH / TR_SMOOTH);
MDI_VALUE := IFELSE(TR_SMOOTH == 0, 0, 100 * MDM_SMOOTH / TR_SMOOTH);
DI_SUM := PDI_VALUE + MDI_VALUE;
DX := IFELSE(DI_SUM == 0, 0, 100 * ABS(PDI_VALUE - MDI_VALUE) / DI_SUM);
ADX_VALUE := WILDER(DX, N);
ADXR_VALUE := (ADX_VALUE + REF(ADX_VALUE, N - 1)) / 2;
PDI: PDI_VALUE, COLORYELLOW, LINETHICK1;
MDI: MDI_VALUE, COLORCYAN, LINETHICK1;
ADX: ADX_VALUE, COLORWHITE, LINETHICK1;
ADXR: ADXR_VALUE, COLORMAGENTA, LINETHICK1;

TRIX

原始 TRIX 指标的公式复刻

PLACEMENT = SUB;
N=30;
TR1 := EMA(CLOSE, N);
TR2 := EMA(TR1, N);
TR3 := EMA(TR2, N);
BASE := REF(TR3, 1);
TRIX: IFELSE(BASE == 0, 0, 100 * (TR3 - BASE) / BASE), COLORYELLOW, LINETHICK1;

RSI

原始 RSI 指标的公式复刻

NAME = "RSI";
PLACEMENT = SUB;
N1=7;
N2=14;
CHANGE := CLOSE - REF(CLOSE, 1);
GAIN := MAX(CHANGE, 0);
LOSS := MAX(-CHANGE, 0);
GAIN1 := WILDER(GAIN, N1, N2);
LOSS1 := WILDER(LOSS, N1, N2);
GAIN2 := WILDER(GAIN, N2);
LOSS2 := WILDER(LOSS, N2);
TOTAL1 := GAIN1 + LOSS1;
TOTAL2 := GAIN2 + LOSS2;
RSI1: IFELSE(TOTAL1 == 0, 0, 100 * GAIN1 / TOTAL1), COLORYELLOW, LINETHICK1;
RSI2: IFELSE(TOTAL2 == 0, 0, 100 * GAIN2 / TOTAL2), COLORCYAN, LINETHICK1;

BIAS

原始 BIAS 指标的公式复刻

NAME = "BIAS";
PLACEMENT = SUB;
N1=6;
N2=12;
N3=24;
MA1 := MA(CLOSE, N1);
MA2 := MA(CLOSE, N2);
MA3 := MA(CLOSE, N3);
BIAS1: IFELSE(MA1 == 0, 0, 100 * (CLOSE - MA1) / MA1), COLORYELLOW, LINETHICK1;
BIAS2: IFELSE(MA2 == 0, 0, 100 * (CLOSE - MA2) / MA2), COLORCYAN, LINETHICK1;
BIAS3: IFELSE(MA3 == 0, 0, 100 * (CLOSE - MA3) / MA3), COLORMAGENTA, LINETHICK1;

CCI

原始 CCI 指标的公式复刻

PLACEMENT = SUB;
N=14;
TYP := (HIGH + LOW + CLOSE) / 3;
AVERAGE := MA(TYP, N);
DEVIATION := 0.015 * AVEDEV(TYP, N);
CCI: IFELSE(DEVIATION == 0, 0, (TYP - AVERAGE) / DEVIATION), COLORYELLOW, LINETHICK1;

ROC

原始 ROC 指标的公式复刻

PLACEMENT = SUB;
N=10;
BASE := REF(CLOSE, N);
ROC: IFELSE(BASE == 0, 0, 100 * (CLOSE - BASE) / BASE), COLORYELLOW, LINETHICK1;

MOM

原始动量指标的公式复刻

PLACEMENT = SUB;
N=10;
MOM: CLOSE - REF(CLOSE, N), COLORYELLOW, LINETHICK1;

ROCR

原始价格比率指标的公式复刻

PLACEMENT = SUB;
N=10;
BASE := REF(CLOSE, N);
ROCR: IFELSE(BASE == 0, 0, CLOSE / BASE), COLORYELLOW, LINETHICK1;

APO

原始绝对价格振荡器指标的公式复刻

PLACEMENT = SUB;
FAST=12;
SLOW=26;
FAST_MA := MA(CLOSE, FAST);
SLOW_MA := MA(CLOSE, SLOW);
APO: FAST_MA - SLOW_MA, COLORYELLOW, LINETHICK1;

PPO

原始百分比价格振荡器指标的公式复刻

PLACEMENT = SUB;
FAST=12;
SLOW=26;
FAST_MA := MA(CLOSE, FAST);
SLOW_MA := MA(CLOSE, SLOW);
PPO: IFELSE(SLOW_MA == 0, 0, 100 * (FAST_MA - SLOW_MA) / SLOW_MA), COLORYELLOW, LINETHICK1;

ADX

原始平均趋向指标的公式复刻

NAME = "ADX";
PLACEMENT = SUB;
N=14;
LC := REF(CLOSE, 1);
TR_VALUE := MAX(MAX(HIGH - LOW, ABS(HIGH - LC)), ABS(LOW - LC));
HD := HIGH - REF(HIGH, 1);
LD := REF(LOW, 1) - LOW;
PDM := MAX(HD, 0) * (HD > LD);
MDM := MAX(LD, 0) * (LD > HD);
TR_SMOOTH := WILDERSUM(TR_VALUE, N);
PDM_SMOOTH := WILDERSUM(PDM, N);
MDM_SMOOTH := WILDERSUM(MDM, N);
PDI_VALUE := IFELSE(TR_SMOOTH == 0, 0, 100 * PDM_SMOOTH / TR_SMOOTH);
MDI_VALUE := IFELSE(TR_SMOOTH == 0, 0, 100 * MDM_SMOOTH / TR_SMOOTH);
DI_SUM := PDI_VALUE + MDI_VALUE;
DX_VALUE := IFELSE(DI_SUM == 0, 0, 100 * ABS(PDI_VALUE - MDI_VALUE) / DI_SUM);
ADX_VALUE := WILDER(DX_VALUE, N);
PDI: PDI_VALUE, COLORYELLOW, LINETHICK1;
MDI: MDI_VALUE, COLORCYAN, LINETHICK1;
ADX: ADX_VALUE, COLORWHITE, LINETHICK1;

AROONOSC

原始阿隆振荡器指标的公式复刻

PLACEMENT = SUB;
N=14;
HIGH_BARS := HHVBARS(HIGH, N + 1);
LOW_BARS := LLVBARS(LOW, N + 1);
AROONOSC: 100 * (LOW_BARS - HIGH_BARS) / N, COLORYELLOW, LINETHICK1;

BOP

原始力量均衡指标的公式复刻

PLACEMENT = SUB;
PRICE_RANGE := HIGH - LOW;
BOP: IFELSE(PRICE_RANGE == 0, 0, (CLOSE - OPEN) / PRICE_RANGE), COLORYELLOW, LINETHICK1;

WILLR

原始威廉指标的公式复刻

PLACEMENT = SUB;
N=14;
HH := HHV(HIGH, N);
LL := LLV(LOW, N);
PRICE_RANGE := HH - LL;
WILLR: IFELSE(PRICE_RANGE == 0, 0, -100 * (HH - CLOSE) / PRICE_RANGE), COLORYELLOW, LINETHICK1;

CMO

原始钱德动量摆动指标的公式复刻

PLACEMENT = SUB;
N=14;
CHANGE := CLOSE - REF(CLOSE, 1);
GAIN := MAX(CHANGE, 0);
LOSS := MAX(-CHANGE, 0);
GAIN_AVERAGE := WILDER(GAIN, N);
LOSS_AVERAGE := WILDER(LOSS, N);
TOTAL := GAIN_AVERAGE + LOSS_AVERAGE;
CMO: IFELSE(TOTAL == 0, 0, 100 * (GAIN_AVERAGE - LOSS_AVERAGE) / TOTAL), COLORYELLOW, LINETHICK1;

DX

原始趋向指数指标的公式复刻

PLACEMENT = SUB;
N=14;
LC := REF(CLOSE, 1);
TR_VALUE := MAX(MAX(HIGH - LOW, ABS(HIGH - LC)), ABS(LOW - LC));
HD := HIGH - REF(HIGH, 1);
LD := REF(LOW, 1) - LOW;
PDM := MAX(HD, 0) * (HD > LD);
MDM := MAX(LD, 0) * (LD > HD);
TR_SMOOTH := WILDERSUM(TR_VALUE, N);
PDM_SMOOTH := WILDERSUM(PDM, N);
MDM_SMOOTH := WILDERSUM(MDM, N);
PDI_VALUE := IFELSE(TR_SMOOTH == 0, 0, 100 * PDM_SMOOTH / TR_SMOOTH);
MDI_VALUE := IFELSE(TR_SMOOTH == 0, 0, 100 * MDM_SMOOTH / TR_SMOOTH);
DI_SUM := PDI_VALUE + MDI_VALUE;
DX: IFELSE(DI_SUM == 0, 0, 100 * ABS(PDI_VALUE - MDI_VALUE) / DI_SUM), COLORYELLOW, LINETHICK1;

MFI

原始资金流量指标的公式复刻

PLACEMENT = SUB;
N=14;
TYP := (HIGH + LOW + CLOSE) / 3;
RAW_FLOW := TYP * VOLUME;
CHANGE := TYP - REF(TYP, 1);
POSITIVE_FLOW := IFELSE(CHANGE > 0, RAW_FLOW, 0);
NEGATIVE_FLOW := IFELSE(CHANGE < 0, RAW_FLOW, 0);
POSITIVE_SUM := SUM(POSITIVE_FLOW, N);
NEGATIVE_SUM := SUM(NEGATIVE_FLOW, N);
TOTAL_FLOW := POSITIVE_SUM + NEGATIVE_SUM;
READY_SOURCE := IFELSE(CHANGE == CHANGE, RAW_FLOW, CHANGE);
READY := MA(READY_SOURCE, N);
MFI_VALUE := IFELSE(TOTAL_FLOW < 1, 0, 100 * POSITIVE_SUM / TOTAL_FLOW);
MFI: IFELSE(READY == READY, MFI_VALUE, READY), COLORYELLOW, LINETHICK1;

MINUS_DI

原始负向指标的公式复刻

PLACEMENT = SUB;
N=14;
LC := REF(CLOSE, 1);
TR_VALUE := MAX(MAX(HIGH - LOW, ABS(HIGH - LC)), ABS(LOW - LC));
HD := HIGH - REF(HIGH, 1);
LD := REF(LOW, 1) - LOW;
MDM := MAX(LD, 0) * (LD > HD);
TR_SMOOTH := WILDERSUM(TR_VALUE, N);
MDM_SMOOTH := WILDERSUM(MDM, N);
MINUS_DI: IFELSE(TR_SMOOTH == 0, 0, 100 * MDM_SMOOTH / TR_SMOOTH), COLORYELLOW, LINETHICK1;

MINUS_DM

原始负向动向指标的公式复刻

PLACEMENT = SUB;
N=14;
HD := HIGH - REF(HIGH, 1);
LD := REF(LOW, 1) - LOW;
MDM := MAX(LD, 0) * (LD > HD);
MINUS_DM: WILDERSUM(MDM, N, N - 1), COLORYELLOW, LINETHICK1;

PLUS_DI

原始正向指标的公式复刻

PLACEMENT = SUB;
N=14;
LC := REF(CLOSE, 1);
TR_VALUE := MAX(MAX(HIGH - LOW, ABS(HIGH - LC)), ABS(LOW - LC));
HD := HIGH - REF(HIGH, 1);
LD := REF(LOW, 1) - LOW;
PDM := MAX(HD, 0) * (HD > LD);
TR_SMOOTH := WILDERSUM(TR_VALUE, N);
PDM_SMOOTH := WILDERSUM(PDM, N);
PLUS_DI: IFELSE(TR_SMOOTH == 0, 0, 100 * PDM_SMOOTH / TR_SMOOTH), COLORYELLOW, LINETHICK1;

PLUS_DM

原始正向动向指标的公式复刻

PLACEMENT = SUB;
N=14;
HD := HIGH - REF(HIGH, 1);
LD := REF(LOW, 1) - LOW;
PDM := MAX(HD, 0) * (HD > LD);
PLUS_DM: WILDERSUM(PDM, N, N - 1), COLORYELLOW, LINETHICK1;

KD

原始随机指标的公式复刻

NAME = "KD";
PLACEMENT = SUB;
N=9;
M1=3;
M2=3;
HH := HHV(HIGH, N);
LL := LLV(LOW, N);
PRICE_RANGE := HH - LL;
RSV := IFELSE(PRICE_RANGE == 0, 0, 100 * (CLOSE - LL) / PRICE_RANGE);
K_VALUE := EMA(RSV, M1);
D_VALUE := EMA(K_VALUE, M2);
K: K_VALUE, COLORYELLOW, LINETHICK1;
D: D_VALUE, COLORCYAN, LINETHICK1;

STOCHF

原始快速随机指标的公式复刻

NAME = "STOCHF";
PLACEMENT = SUB;
N=9;
M=3;
HH := HHV(HIGH, N);
LL := LLV(LOW, N);
PRICE_RANGE := HH - LL;
FASTK_VALUE := IFELSE(PRICE_RANGE == 0, 0, 100 * (CLOSE - LL) / PRICE_RANGE);
FASTD_VALUE := MA(FASTK_VALUE, M);
FASTK: FASTK_VALUE, COLORYELLOW, LINETHICK1;
FASTD: FASTD_VALUE, COLORCYAN, LINETHICK1;

ULTOSC

原始终极振荡器指标的公式复刻

PLACEMENT = SUB;
N1=7;
N2=14;
N3=28;
LC := REF(CLOSE, 1);
TRUE_LOW := MIN(LOW, LC);
BUYING_PRESSURE := CLOSE - TRUE_LOW;
TRUE_RANGE := MAX(MAX(HIGH - LOW, ABS(HIGH - LC)), ABS(LOW - LC));
BP1 := SUM(BUYING_PRESSURE, N1);
BP2 := SUM(BUYING_PRESSURE, N2);
BP3 := SUM(BUYING_PRESSURE, N3);
TR1 := SUM(TRUE_RANGE, N1);
TR2 := SUM(TRUE_RANGE, N2);
TR3 := SUM(TRUE_RANGE, N3);
RATIO1 := IFELSE(TR1 == 0, 0, BP1 / TR1);
RATIO2 := IFELSE(TR2 == 0, 0, BP2 / TR2);
RATIO3 := IFELSE(TR3 == 0, 0, BP3 / TR3);
READY := MA(TRUE_RANGE, N3);
ULTOSC_VALUE := 100 * (4 * RATIO1 + 2 * RATIO2 + RATIO3) / 7;
ULTOSC: IFELSE(READY == READY, ULTOSC_VALUE, READY), COLORYELLOW, LINETHICK1;

AROON

原始阿隆指标双线及虚线样式的公式复刻

NAME = "AROON";
PLACEMENT = SUB;
N=14;
AROONDOWN: 100 * (N - LLVBARS(LOW, N + 1)) / N, COLORCYAN, LINEDASH;
AROONUP: 100 * (N - HHVBARS(HIGH, N + 1)) / N, COLORYELLOW, LINETHICK1;

波动率

ATR

原始 ATR 指标的公式复刻

NAME = "ATR";
PLACEMENT = SUB;
N=14;
LC := REF(CLOSE, 1);
TR_VALUE := MAX(MAX(HIGH - LOW, ABS(HIGH - LC)), ABS(LOW - LC));
ATR_VALUE := WILDER(TR_VALUE, N);
TR: TR_VALUE, COLORWHITE, LINETHICK1;
ATR: ATR_VALUE, COLORYELLOW, LINETHICK1;

NATR

原始标准平均真实波幅指标的公式复刻

PLACEMENT = SUB;
N=14;
LC := REF(CLOSE, 1);
TR_VALUE := MAX(MAX(HIGH - LOW, ABS(HIGH - LC)), ABS(LOW - LC));
ATR_VALUE := WILDER(TR_VALUE, N);
NATR: IFELSE(CLOSE == 0, 0, 100 * ATR_VALUE / CLOSE), COLORYELLOW, LINETHICK1;

TR

原始真实波幅指标的公式复刻

PLACEMENT = SUB;
LC := REF(CLOSE, 1);
TR: MAX(MAX(HIGH - LOW, ABS(HIGH - LC)), ABS(LOW - LC)), COLORYELLOW, LINETHICK1;

价格变换

AVGPRICE

原始平均价格指标的公式复刻

PLACEMENT = MAIN;
AVGPRICE: (OPEN + HIGH + LOW + CLOSE) / 4, COLORYELLOW, LINETHICK1;

MEDPRICE

原始中位价格指标的公式复刻

PLACEMENT = MAIN;
MEDPRICE: (HIGH + LOW) / 2, COLORYELLOW, LINETHICK1;

TYPPRICE

原始典型价格指标的公式复刻

PLACEMENT = MAIN;
TYPPRICE: (HIGH + LOW + CLOSE) / 3, COLORYELLOW, LINETHICK1;

WCLPRICE

原始加权收盘价格指标的公式复刻

PLACEMENT = MAIN;
WCLPRICE: (HIGH + LOW + 2 * CLOSE) / 4, COLORYELLOW, LINETHICK1;

周期指标

HT_DCPERIOD

原始 Hilbert 主导周期指标的公式复刻

PLACEMENT = SUB;
HT_DCPERIOD: HT_DCPERIOD(CLOSE), COLORYELLOW, LINETHICK1;

HT_DCPHASE

原始 Hilbert 主导周期相位指标的公式复刻

PLACEMENT = SUB;
HT_DCPHASE: HT_DCPHASE(CLOSE), COLORYELLOW, LINETHICK1;

HT_PHASOR

原始 Hilbert 相量同相与正交分量指标的公式复刻

NAME = "HT_PHASOR";
PLACEMENT = SUB;
INPHASE: HT_INPHASE(CLOSE), COLORYELLOW, LINETHICK1;
QUADRATURE: HT_QUADRATURE(CLOSE), COLORCYAN, LINEDASH;

HT_SINE

原始 Hilbert 正弦波与领先正弦波指标的公式复刻

NAME = "HT_SINE";
PLACEMENT = SUB;
SINE: HT_SINE(CLOSE), COLORYELLOW, LINETHICK1;
LEADSINE: HT_LEADSINE(CLOSE), COLORCYAN, LINEDASH;

统计指标

BETA

原始贝塔系数指标默认输入的公式复刻

PLACEMENT = SUB;
N=5;
X := CLOSE;
Y := CLOSE;
X_BASE := REF(X, 1);
Y_BASE := REF(Y, 1);
X_RETURN := IFELSE(X_BASE == 0, 0, (X - X_BASE) / X_BASE);
Y_RETURN := IFELSE(Y_BASE == 0, 0, (Y - Y_BASE) / Y_BASE);
SUM_X := SUM(X_RETURN, N);
SUM_Y := SUM(Y_RETURN, N);
SUM_XX := SUM(X_RETURN * X_RETURN, N);
SUM_XY := SUM(X_RETURN * Y_RETURN, N);
DENOMINATOR := N * SUM_XX - SUM_X * SUM_X;
READY := MA(X_RETURN, N);
BETA_VALUE := IFELSE(DENOMINATOR == 0, 0, (N * SUM_XY - SUM_X * SUM_Y) / DENOMINATOR);
BETA: IFELSE(READY == READY, BETA_VALUE, READY), COLORYELLOW, LINETHICK1;

STDDEV

原始总体标准差指标的公式复刻

PLACEMENT = SUB;
N=5;
DEVIATIONS=1;
STDDEV_VALUE := STDP(CLOSE, N);
STDDEV: STDDEV_VALUE * DEVIATIONS, COLORYELLOW, LINETHICK1;

VAR

原始总体方差指标的公式复刻

PLACEMENT = SUB;
N=5;
DEVIATIONS=1;
VAR_VALUE := VARP(CLOSE, N);
VAR: VAR_VALUE * DEVIATIONS * DEVIATIONS, COLORYELLOW, LINETHICK1;

LINEARREG

原始线性回归指标的公式复刻

PLACEMENT = MAIN;
N=14;
LINEARREG: LINEARREG(CLOSE, N), COLORYELLOW, LINETHICK1;

LINEARREG_ANGLE

原始线性回归角度指标的公式复刻

PLACEMENT = SUB;
N=14;
LINEARREG_ANGLE: LINEARREG_ANGLE(CLOSE, N), COLORYELLOW, LINETHICK1;

LINEARREG_INTERCEPT

原始线性回归截距指标的公式复刻

PLACEMENT = SUB;
N=14;
LINEARREG_INTERCEPT: LINEARREG_INTERCEPT(CLOSE, N), COLORYELLOW, LINETHICK1;

LINEARREG_SLOPE

原始线性回归斜率指标的公式复刻

PLACEMENT = SUB;
N=14;
LINEARREG_SLOPE: LINEARREG_SLOPE(CLOSE, N), COLORYELLOW, LINETHICK1;

TSF

原始时序预测指标的公式复刻

PLACEMENT = SUB;
N=14;
TSF: TSF(CLOSE, N), COLORYELLOW, LINETHICK1;

扩展示范

EXPMA

双周期指数移动平均线

NAME = "EXPMA";
PLACEMENT = MAIN;
SHORT=12;
LONG=50;
EXP1: EMA(CLOSE, SHORT), COLORYELLOW, LINETHICK1;
EXP2: EMA(CLOSE, LONG), COLORCYAN, LINETHICK1;

BBI

多空指标平均线

PLACEMENT = MAIN;
N1=3;
N2=6;
N3=12;
N4=24;
BBI: (MA(CLOSE, N1) + MA(CLOSE, N2) + MA(CLOSE, N3) + MA(CLOSE, N4)) / 4, COLORYELLOW, LINETHICK2;

WR

威廉指标

PLACEMENT = SUB;
N=14;
HH := HHV(HIGH, N);
LL := LLV(LOW, N);
RANGE := HH - LL;
WR: IFELSE(RANGE == 0, 0, 100 * (HH - CLOSE) / RANGE), COLORYELLOW, LINETHICK1;

MA组 (示例)

四周期简单移动平均线示范

PLACEMENT = MAIN;
M1=5;
M2=10;
M3=20;
M4=60;
MA1: MA(CLOSE, M1), COLORYELLOW, LINETHICK1;
MA2: MA(CLOSE, M2), COLORCYAN, LINETHICK1;
MA3: MA(CLOSE, M3), COLORMAGENTA, LINETHICK1;
MA4: MA(CLOSE, M4), COLORWHITE, LINETHICK1;

OBV+MA

OBV 与均线组合示范

NAME = "OBV+MA";
PLACEMENT = SUB;
M=30;
OBV_VALUE := OBV(CLOSE, VOLUME);
OBV: OBV_VALUE, COLORYELLOW, LINETHICK1;
MAOBV: MA(OBV_VALUE, M), COLORCYAN, LINETHICK1;

RSI 三周期

三周期 RSI 平滑算法示范

NAME = "RSI多周期";
PLACEMENT = SUB;
N1=6;
N2=12;
N3=24;
CHANGE := CLOSE - REF(CLOSE, 1);
ABS_CHANGE := ABS(CHANGE);
RSI1: IFELSE(SMA(ABS_CHANGE, N1, 1) == 0, 0, 100 * SMA(MAX(CHANGE, 0), N1, 1) / SMA(ABS_CHANGE, N1, 1)), COLORYELLOW, LINETHICK1;
RSI2: IFELSE(SMA(ABS_CHANGE, N2, 1) == 0, 0, 100 * SMA(MAX(CHANGE, 0), N2, 1) / SMA(ABS_CHANGE, N2, 1)), COLORCYAN, LINETHICK1;
RSI3: IFELSE(SMA(ABS_CHANGE, N3, 1) == 0, 0, 100 * SMA(MAX(CHANGE, 0), N3, 1) / SMA(ABS_CHANGE, N3, 1)), COLORMAGENTA, LINETHICK1;

TRIX+信号线

TRIX 与信号线组合示范

NAME = "TRIX+信号线";
PLACEMENT = SUB;
N=12;
M=9;
TR1 := EMA(CLOSE, N);
TR2 := EMA(TR1, N);
TR3 := EMA(TR2, N);
BASE := REF(TR3, 1);
TRIX_VALUE := IFELSE(BASE == 0, 0, 100 * (TR3 - BASE) / BASE);
TRIX: TRIX_VALUE, COLORYELLOW, LINETHICK1;
MATRIX: MA(TRIX_VALUE, M), COLORCYAN, LINETHICK1;

ROC+MA

ROC 与均线组合示范

NAME = "ROC+MA";
PLACEMENT = SUB;
N=12;
M=6;
BASE := REF(CLOSE, N);
ROC_VALUE := IFELSE(BASE == 0, 0, 100 * (CLOSE - BASE) / BASE);
ROC: ROC_VALUE, COLORYELLOW, LINETHICK1;
MAROC: MA(ROC_VALUE, M), COLORCYAN, LINETHICK1;

VWAP(交易日)

四价均值按成交量加权,夜盘与下一交易日日盘合并;零成交量保持前值,起点不完整时为空值,不含报警

PLACEMENT=MAIN;
// 四价均值估算 VWAP,按交易日重置,夜盘并入下一交易日日盘
PRICE_VALUE:=(OPEN+HIGH+LOW+CLOSE)/4;
VOL_SAFE:=IF(ISNULL(VOLUME),0,MAX(VOLUME,0));
WEIGHT:=IF(ISNULL(PRICE_VALUE),0,VOL_SAFE);
WEIGHTED_PRICE:=IF(WEIGHT>0,PRICE_VALUE*WEIGHT,0);
TOTAL_VOLUME:=SUM(WEIGHT,0);
TOTAL_PRICE:=SUM(WEIGHTED_PRICE,0);
DAY_VOLUME:=TOTAL_VOLUME-REF(TOTAL_VOLUME,DAYBARPOS);
DAY_PRICE:=TOTAL_PRICE-REF(TOTAL_PRICE,DAYBARPOS);
VWAP_EST:=VALUEWHEN(DAY_VOLUME>0,DAY_PRICE/DAY_VOLUME);
INTRADAY_BAR:=BARTYPE=1 OR BARTYPE=2 OR BARTYPE=8 OR BARTYPE=10;
VWAP_VALUE:=IF(INTRADAY_BAR,VWAP_EST,PRICE_VALUE);
VWAP:IF(VWAP_VALUE<>0,VWAP_VALUE,NULL),COLORYELLOW,LINETHICK2;

逐根属性切换

成交量按K线边框色显示,阳线和平盘较宽、阴线更细;持仓折线逐根切换线宽和线型,独立缩放且保留真实数值

PLACEMENT=SUB;
VOL:#VOL,IF(#CLOSE>=#OPEN,COLORUP,COLORDOWN),IF(#CLOSE>=#OPEN,STICK1,STICK4);
持仓量:#OI,COLORYELLOW,INDEPENDENTSCALE,IF(#CLOSE>=#OPEN,LINETHICK2,LINETHICK1),IF(#CLOSE>=#OPEN,SOLIDLINE,DOT);

神奇九转(完整组示例)

历史满9根后显示完整1~9;最右侧正在形成的序列即时显示,未满9根中断后隐藏,9用黄色突出

NAME="神奇九转";
PLACEMENT=MAIN;

//与各自前4根K线的收盘价比较,相等或缺失会中断计数
前收:=REF(CLOSE,4);
有效:=ISNULL(CLOSE)=0 AND ISNULL(前收)=0;
上涨:=IF(有效,CLOSE>前收,0);
下跌:=IF(有效,CLOSE<前收,0);
上计数:=BARSLAST(上涨=0);
下计数:=BARSLAST(下跌=0);

//历史只显示满9根的完整组
完整上涨:=BACKSET(上涨 AND 上计数=9,9);
完整下跌:=BACKSET(下跌 AND 下计数=9,9);

//最右侧未完成的序列即时显示,历史中断位置不补显
正在上涨:=BACKSET(ISLASTBAR AND 上涨 AND 上计数<9,9) AND BACKSET(上涨=0,9)=0;
正在下跌:=BACKSET(ISLASTBAR AND 下跌 AND 下计数<9,9) AND BACKSET(下跌=0,9)=0;
上涨显示:=完整上涨 OR 正在上涨;
下跌显示:=完整下跌 OR 正在下跌;
间距:=MAX((HIGH-LOW)*0.25,IF(ISNULL(MINPRICE),ABS(CLOSE)*0.0001,MINPRICE*2));

//上涨序列在K线上方,下跌序列在K线下方,9用黄色突出
DRAWNUMBER(上涨显示 AND 上计数>=1 AND 上计数<=8,HIGH+间距,上计数,0,COLORRED),FONTSIZE14,VALIGN2;
DRAWNUMBER(上涨显示 AND 上计数=9,HIGH+间距,9,0,COLORYELLOW),FONTSIZE18,VALIGN2;
DRAWNUMBER(下跌显示 AND 下计数>=1 AND 下计数<=8,LOW-间距,下计数,0,COLORGREEN),FONTSIZE14,VALIGN0;
DRAWNUMBER(下跌显示 AND 下计数=9,LOW-间距,9,0,COLORYELLOW),FONTSIZE18,VALIGN0;

期权助手 (示例)

在期权主图展示标的价与行权价的价差,看涨看跌自动适配

SYMBOL=UNDERLYING;
PLACEMENT=MAIN;
标的价格:IF(ISCALL OR ISPUT,IF(ISPUT,STRIKEPRICE-CLOSE,CLOSE-STRIKEPRICE),NULL),COLORYELLOW;

Squeeze 挤压动量 (示例)

布林带位于肯特纳通道内时标记收缩,四色柱展示线性回归动量;不预判释放方向,不含声音

NAME="Squeeze";
PLACEMENT=SUB;
// 参数:布林周期/倍率、肯特纳周期/倍率、动量周期
BB_N=20;
BB_M=2;
KC_N=20;
KC_M=1.5;
MOM_N=20;
前收:=REF(CLOSE,1);
真实波幅:=IF(ISNULL(前收),HIGH-LOW,MAX(HIGH-LOW,MAX(ABS(HIGH-前收),ABS(LOW-前收))));
布林中轨:=MA(CLOSE,BB_N);
布林宽度:=BB_M*STDP(CLOSE,BB_N);
肯特中轨:=MA(CLOSE,KC_N);
肯特宽度:=KC_M*MA(真实波幅,KC_N);
收缩:=布林中轨-布林宽度>肯特中轨-肯特宽度 AND 布林中轨+布林宽度<肯特中轨+肯特宽度;
基准:=((HHV(HIGH,MOM_N)+LLV(LOW,MOM_N))/2+MA(CLOSE,MOM_N))/2;
动量值:=LINEARREG(CLOSE-基准,MOM_N);
动量:动量值,NODRAW;
挤压状态:0,IF(收缩,COLORYELLOW,COLORGRAY),POINTDOT,LINETHICK3,NOTEXT;
// 正负柱分别切换颜色,增强为亮色,减弱为暗色
STICKLINE(动量值>=0,动量值,0,3,0),IF(动量值>REF(动量值,1),COLORRED,RGB(128,0,0));
STICKLINE(动量值<0,动量值,0,3,0),IF(动量值<REF(动量值,1),COLORGREEN,RGB(0,128,0));

WaveTrend (示例)

典型价格归一化后平滑的双线振荡器,显示超买超卖参考线和极值区交叉;不含背离检测

NAME="WaveTrend";
PLACEMENT=SUB;
通道周期=10;
平均周期=21;
信号周期=4;
上限=60;
下限=-60;
典型价:=(HIGH+LOW+CLOSE)/3;
中心:=EMA(典型价,通道周期);
偏差:=EMA(ABS(典型价-中心),通道周期);
归一化:=IF(偏差=0,0,(典型价-中心)/(0.015*偏差));
WT1:EMA(归一化,平均周期),COLORWHITE,LINETHICK2;
WT2:MA(WT1,信号周期),COLORYELLOW;
超买:上限,COLORGRAY,DOT,NOTEXT;
超卖:下限,COLORGRAY,DOT,NOTEXT;
零轴:0,COLORGRAY,DOT,NOTEXT;
DRAWTEXT(CROSS(WT1,WT2) AND WT1<下限,WT1,'上穿'),COLORRED,VALIGN0;
DRAWTEXT(CROSS(WT2,WT1) AND WT1>上限,WT1,'下穿'),COLORGREEN,VALIGN2;

Stoch RSI (示例)

Wilder RSI 再随机化为 0~100 双线,默认 14/14/3/3;平价及零振幅返回中性值 50

NAME="Stoch RSI";
PLACEMENT=SUB;
RSI_N=14;
STOCH_N=14;
K_N=3;
D_N=3;
变化:=CLOSE-REF(CLOSE,1);
平均涨:=WILDER(MAX(变化,0),RSI_N);
平均跌:=WILDER(MAX(-变化,0),RSI_N);
RSI值:=IF(ISNULL(平均涨) OR ISNULL(平均跌),NULL,IF(平均跌=0,IF(平均涨=0,50,100),100-100/(1+平均涨/平均跌)));
最高RSI:=HHV(RSI值,STOCH_N);
最低RSI:=LLV(RSI值,STOCH_N);
随机值:=IF(最高RSI=最低RSI,50,100*(RSI值-最低RSI)/(最高RSI-最低RSI));
K:MA(随机值,K_N),COLORWHITE,LINETHICK2;
D:MA(K,D_N),COLORYELLOW;
上限:80,COLORGRAY,DOT,NOTEXT;
下限:20,COLORGRAY,DOT,NOTEXT;

HMA 趋势 (示例)

Hull 均线按斜率方向变色,在方向跨越零轴时标记转强、转弱;不含其他 Hull 变体

NAME="HMA趋势";
PLACEMENT=MAIN;
N=55;
比较根数=2;
HULL:=HMA(CLOSE,N);
斜率:=HULL-REF(HULL,比较根数);
趋势线:HULL,IF(斜率>=0,COLORUP,COLORDOWN),LINETHICK2;
DRAWTEXT(CROSS(斜率,0),HULL,'转强'),COLORRED,VALIGN0;
DRAWTEXT(CROSS(0,斜率),HULL,'转弱'),COLORGREEN,VALIGN2;

Donchian 唐奇安突破 (示例)

以前 N 根且不含当前根的最高最低构造通道,标记收盘价突破;与文档原始 DC 的含当前窗口口径不同

NAME="唐奇安突破";
PLACEMENT=MAIN;
N=20;
上轨:HV(HIGH,N),COLORRED;
下轨:LV(LOW,N),COLORGREEN;
中轨:(上轨+下轨)/2,COLORYELLOW;
上破:=CLOSE>上轨 AND REF(CLOSE,1)<=上轨;
下破:=CLOSE<下轨 AND REF(CLOSE,1)>=下轨;
DRAWTEXT(上破,LOW,'上破'),COLORRED,VALIGN0;
DRAWTEXT(下破,HIGH,'下破'),COLORGREEN,VALIGN2;

Keltner 肯特纳通道 (示例)

EMA 中轨加减 Wilder ATR,默认中轨 20、ATR 10、倍率 2

NAME="肯特纳通道";
PLACEMENT=MAIN;
中轨周期=20;
波幅周期=10;
倍率=2;
前收:=REF(CLOSE,1);
真实波幅:=IF(ISNULL(前收),HIGH-LOW,MAX(HIGH-LOW,MAX(ABS(HIGH-前收),ABS(LOW-前收))));
波幅:=WILDER(真实波幅,波幅周期);
中轨:EMA(CLOSE,中轨周期),COLORYELLOW;
上轨:中轨+倍率*波幅,COLORRED;
下轨:中轨-倍率*波幅,COLORGREEN;

VWAP 标准差通道 (示例)

按交易日累计成交量加权均值和总体标准差,绘制 ±1、±2、±2.5 倍通道;夜盘并入下一交易日

NAME="VWAP通道";
PLACEMENT=MAIN;
一级倍率=1;
二级倍率=2;
三级倍率=2.5;
价格:=(OPEN+HIGH+LOW+CLOSE)/4;
日基准:=VALUEWHEN(DAYBARPOS=1,价格);
安全量:=IF(ISNULL(VOLUME),0,MAX(VOLUME,0));
权重:=IF(ISNULL(价格) OR ISNULL(日基准) OR ISNULL(DAYBARPOS),0,安全量);
偏移:=价格-日基准;
累计量:=SUM(权重,0);
累计一阶:=SUM(IF(权重>0,偏移*权重,0),0);
累计二阶:=SUM(IF(权重>0,偏移*偏移*权重,0),0);
日量:=累计量-REF(累计量,DAYBARPOS);
日一阶:=累计一阶-REF(累计一阶,DAYBARPOS);
日二阶:=累计二阶-REF(累计二阶,DAYBARPOS);
均值:=VALUEWHEN(日量>0,日基准+日一阶/日量);
标准差:=VALUEWHEN(日量>0,SQRT(MAX(日二阶/日量-POW(日一阶/日量,2),0)));
日内:=BARTYPE=1 OR BARTYPE=2 OR BARTYPE=8 OR BARTYPE=10;
VWAP:IF(日内,均值,价格),COLORWHITE,LINETHICK2;
上1:IF(日内,均值+一级倍率*标准差,NULL),COLORGREEN;
下1:IF(日内,均值-一级倍率*标准差,NULL),COLORGREEN;
上2:IF(日内,均值+二级倍率*标准差,NULL),RGB(170,128,0);
下2:IF(日内,均值-二级倍率*标准差,NULL),RGB(170,128,0);
上2_5:IF(日内,均值+三级倍率*标准差,NULL),RGB(160,80,80);
下2_5:IF(日内,均值-三级倍率*标准差,NULL),RGB(160,80,80);

市场结构基础 (示例)

以已确认摆动高低点标记 BOS、CHoCH;每个拐点只取首次收盘突破,标记在确认当根

NAME="市场结构";
PLACEMENT=MAIN;
左侧根数=3;
右侧根数=3;
高点:=PIVOTHIGH(HIGH,左侧根数,右侧根数);
低点:=PIVOTLOW(LOW,左侧根数,右侧根数);
确认高:=ISNULL(高点)=0;
确认低:=ISNULL(低点)=0;
最近高:=VALUEWHEN(确认高,高点);
最近低:=VALUEWHEN(确认低,低点);
高点ID:=VALUEWHEN(确认高,BARID-右侧根数);
低点ID:=VALUEWHEN(确认低,BARID-右侧根数);
上破条件:=CLOSE>最近高 AND HV(CLOSE,BARID-高点ID)<=最近高;
下破条件:=CLOSE<最近低 AND LV(CLOSE,BARID-低点ID)>=最近低;
上破:=IF(ISNULL(上破条件),0,上破条件);
下破:=IF(ISNULL(下破条件),0,下破条件);
方向:=VALUEWHEN(上破 OR 下破,IF(上破,1,-1));
前方向:=REF(方向,1);
上破类型:=IF(上破,IF(ISNULL(前方向),1,IF(前方向<0,2,1)),0);
下破类型:=IF(下破,IF(ISNULL(前方向),1,IF(前方向>0,2,1)),0);
结构方向:IF(ISNULL(方向),0,方向),NODRAW,PRECIS0;
压力:最近高,COLORRED,DOT;
支撑:最近低,COLORGREEN,DOT;
DRAWTEXT(上破类型=1,HIGH,'BOS上'),COLORRED,VALIGN2;
DRAWTEXT(下破类型=1,LOW,'BOS下'),COLORGREEN,VALIGN0;
DRAWTEXT(上破类型=2,HIGH,'CHoCH上'),COLORYELLOW,VALIGN2;
DRAWTEXT(下破类型=2,LOW,'CHoCH下'),COLORYELLOW,VALIGN0;

FVG+OB 基础 (示例)

三根 K 线缺口识别与紧邻反向 K 线 OB 的基础演示;仅当根标记,不含区域方框、延伸或回补管理

NAME="FVG+OB基础";
PLACEMENT=MAIN;
// 仅演示当前周期的三根结构;不绘制或管理持续区域
完整:=COUNT(ISNULL(OPEN)=0 AND ISNULL(HIGH)=0 AND ISNULL(LOW)=0 AND ISNULL(CLOSE)=0,3)=3;
多缺口:=IF(完整,LOW>REF(HIGH,2),0);
空缺口:=IF(完整,HIGH<REF(LOW,2),0);
多订单块:=多缺口 AND REF(CLOSE,2)<REF(OPEN,2) AND CLOSE>REF(HIGH,2);
空订单块:=空缺口 AND REF(CLOSE,2)>REF(OPEN,2) AND CLOSE<REF(LOW,2);
多FVG:多缺口,NODRAW,PRECIS0;
空FVG:空缺口,NODRAW,PRECIS0;
多OB:多订单块,NODRAW,PRECIS0;
空OB:空订单块,NODRAW,PRECIS0;
// 边界只画一个周期的短线,不向未来延伸
DRAWSL(多缺口,LOW,0,1,0,COLORRED);
DRAWSL(多缺口,REF(HIGH,2),0,1,0,COLORRED);
DRAWSL(空缺口,HIGH,0,1,0,COLORGREEN);
DRAWSL(空缺口,REF(LOW,2),0,1,0,COLORGREEN);
DRAWTEXT(多缺口,LOW,'FVG上'),COLORRED,VALIGN0;
DRAWTEXT(空缺口,HIGH,'FVG下'),COLORGREEN,VALIGN2;
DRAWTEXT(多订单块,REF(LOW,2),'OB上确认'),COLORYELLOW,VALIGN0;
DRAWTEXT(空订单块,REF(HIGH,2),'OB下确认'),COLORYELLOW,VALIGN2;

SMC聪明钱 (示例)

开放公式 SMC:双结构、BOS/CHoCH、EQ及OB/FVG条件均可修改;区域延伸至最新柱、实时击穿删除,计算5000根、结构对象400个

NAME="SMC聪明钱";
PLACEMENT=MAIN;

// OB / FVG 配色
OB多头色=RGB(76,141,255);
OB空头色=RGB(192,132,252);
FVG多头色=RGB(255,107,107);
FVG空头色=RGB(45,212,191);

MAXBARS=5000;       // 0=全部可用历史;真正限制计算输入
MAXDRAWINGS=400;    // 普通线/文字按事件整组限量;区域另由 KEEP 限量
结构收盘确认=0;    // 0=官方实时结构与OB;1=等收盘。FVG仍沿用原规则
内部周期=5;
摆动周期=50;
等价确认=3;
等价阈值=0.1;
ATR周期=14;         // EQ/FVG沿用原周期
OB波动周期=200;     // OB独立使用官方ATR200
// 各区域尾缀RESERVE(100)控制候选上限;显示数量独立设置。
显示内部结构=1;
显示摆动结构=1;
显示强弱高低点=1;
显示内部OB=1;
显示摆动OB=0;
显示等价高低点=1;
显示FVG=1;         // 显示FVG区域
显示FVG文字=0;     // 0隐藏,1显示FVG文字,不影响区域
内部OB数量=5;
摆动OB数量=5;
FVG保留上限=40;
FVG延伸=1;         // 额外延伸的K线根数,非负整数;形成时固定右端,不跟随最新柱
历史模式=1;        // 1 Historical;0 Present
内部汇合过滤=0;
显示摆动点=0;
FVG自动阈值=1;
OB波动过滤=0;      // 0 ATR200;1 累计TR/计算窗内bar_index
OB失效依据=0;      // 0 High/Low;1 Close
内部多头类型=0;    // 0 All;1 BOS;2 CHoCH
内部空头类型=0;
摆动多头类型=0;
摆动空头类型=0;
// 文字字号集中在此修改,支持 8~72。
大字号=12;    // BOS、CHoCH、强弱高低点
小字号=10;    // 摆动点、EQH、EQL、FVG
// LABELPOS(0/1/2):左端/中点/右端。使用左端,高点文字在线上方、低点在线下方。
// 不重绘K线;日/周/月高低点和溢价折价区保持关闭,未新增这些模块。
// EQ/FVG继续使用已收盘价格;结构和OB独立使用实时行情。
有效:=ISNULL(OPEN)=0 AND ISNULL(HIGH)=0 AND ISNULL(LOW)=0 AND ISNULL(CLOSE)=0 AND HIGH>=MAX(OPEN,CLOSE) AND LOW<=MIN(OPEN,CLOSE);
开价:=IF(ISLASTBAR OR 有效=0,NULL,OPEN);
高价:=IF(ISLASTBAR OR 有效=0,NULL,HIGH);
低价:=IF(ISLASTBAR OR 有效=0,NULL,LOW);
收价:=IF(ISLASTBAR OR 有效=0,NULL,CLOSE);
前收:=REF(收价,1);
真实波幅:=IF(ISNULL(前收),高价-低价,MAX(高价-低价,MAX(ABS(高价-前收),ABS(低价-前收))));
ATR值:=WILDER(真实波幅,ATR周期);
下穿价:=IF(OB失效依据=0,LOW,CLOSE);
上穿价:=IF(OB失效依据=0,HIGH,CLOSE);
//-----OB波动与解析价格:与EQ/FVG的ATR14独立-----//
OB高价:=IF(有效,HIGH,NULL);
OB低价:=IF(有效,LOW,NULL);
OB收价:=IF(有效,CLOSE,NULL);
OB前收:=REF(OB收价,1);
OB真波幅:=IF(ISNULL(OB前收),OB高价-OB低价,MAX(OB高价-OB低价,MAX(ABS(OB高价-OB前收),ABS(OB低价-OB前收))));
OB波幅:=IF(OB波动过滤=0,WILDER(OB真波幅,OB波动周期),IF(COUNT(1,0)>1,SUM(IF(ISNULL(OB前收),0,OB真波幅),0)/(COUNT(1,0)-1),NULL));
OB大波幅:=IF(ISNULL(OB波幅),0,OB高价-OB低价>=2*OB波幅);
OB解析高:=IF(OB大波幅,OB低价,OB高价);
OB解析低:=IF(OB大波幅,OB高价,OB低价);
//-----结构独立行情:不改变EQ/FVG的ATR14-----//
结构可算:=有效 AND (结构收盘确认=0 OR ISLASTBAR=0);
结构缺口:=有效=0 AND ISLASTBAR=0;
结构开价:=IF(结构可算,OPEN,NULL);
结构高价:=IF(结构可算,HIGH,NULL);
结构低价:=IF(结构可算,LOW,NULL);
结构收价:=IF(结构可算,CLOSE,NULL);
// 汇合过滤默认关闭;启用时保留官方原式,不把它改写为上下影线对称比较。
结构多合流:=结构高价-MAX(结构收价,结构开价)>MIN(结构收价,结构开价-结构低价);
结构空合流:=结构高价-MAX(结构收价,结构开价)<MIN(结构收价,结构开价-结构低价);
//-----摆动选点:只比较候选之后N根;腿方向初始0,高触发优先-----//
摆动高触发:=IF(结构可算 AND COUNT(结构可算,摆动周期+1)=摆动周期+1,REF(结构高价,摆动周期)>HHV(结构高价,摆动周期),0);
摆动低触发:=IF(结构可算 AND COUNT(结构可算,摆动周期+1)=摆动周期+1,REF(结构低价,摆动周期)<LLV(结构低价,摆动周期),0);
摆动腿原向:=VALUEWHEN(IF(结构缺口,NULL,摆动高触发 OR 摆动低触发),IF(摆动高触发,0,1));
摆动腿向:=IF(ISNULL(摆动腿原向),0,摆动腿原向);
摆动腿前向:=IF(ISNULL(REF(摆动腿向,1)),0,REF(摆动腿向,1));
摆动确认高:=IF(结构缺口,NULL,摆动腿前向=1 AND 摆动腿向=0);
摆动确认低:=IF(结构缺口,NULL,摆动腿前向=0 AND 摆动腿向=1);
摆动高点:=REF(结构高价,摆动周期);
摆动低点:=REF(结构低价,摆动周期);
摆动最近高:=VALUEWHEN(摆动确认高,摆动高点);
摆动最近低:=VALUEWHEN(摆动确认低,摆动低点);
摆动高ID:=VALUEWHEN(摆动确认高,BARID-摆动周期);
摆动低ID:=VALUEWHEN(摆动确认低,BARID-摆动周期);
//-----内部选点:只比较候选之后N根;腿方向初始0,高触发优先-----//
内部高触发:=IF(结构可算 AND COUNT(结构可算,内部周期+1)=内部周期+1,REF(结构高价,内部周期)>HHV(结构高价,内部周期),0);
内部低触发:=IF(结构可算 AND COUNT(结构可算,内部周期+1)=内部周期+1,REF(结构低价,内部周期)<LLV(结构低价,内部周期),0);
内部腿原向:=VALUEWHEN(IF(结构缺口,NULL,内部高触发 OR 内部低触发),IF(内部高触发,0,1));
内部腿向:=IF(ISNULL(内部腿原向),0,内部腿原向);
内部腿前向:=IF(ISNULL(REF(内部腿向,1)),0,REF(内部腿向,1));
内部确认高:=IF(结构缺口,NULL,内部腿前向=1 AND 内部腿向=0);
内部确认低:=IF(结构缺口,NULL,内部腿前向=0 AND 内部腿向=1);
内部高点:=REF(结构高价,内部周期);
内部低点:=REF(结构低价,内部周期);
内部最近高:=VALUEWHEN(内部确认高,内部高点);
内部最近低:=VALUEWHEN(内部确认低,内部低点);
内部高ID:=VALUEWHEN(内部确认高,BARID-内部周期);
内部低ID:=VALUEWHEN(内部确认低,BARID-内部周期);
//-----内部突破:候选计数只锁定首次有效穿越,新拐点重置锁定-----//
内部上候选:=IF(结构可算 AND ISNULL(内部最近高)=0,CROSS(结构收价,内部最近高) AND (ISNULL(摆动最近高)=0 AND 内部最近高<>摆动最近高 AND (内部汇合过滤=0 OR 结构多合流)),0);
内部下候选:=IF(结构可算 AND ISNULL(内部最近低)=0,CROSS(内部最近低,结构收价) AND (ISNULL(摆动最近低)=0 AND 内部最近低<>摆动最近低 AND (内部汇合过滤=0 OR 结构空合流)),0);
内部上计数:=COUNT(内部上候选,0);
内部下计数:=COUNT(内部下候选,0);
内部高基数:=VALUEWHEN(内部确认高,内部上计数);
内部低基数:=VALUEWHEN(内部确认低,内部下计数);
内部上破:=内部上候选 AND 内部上计数-IF(ISNULL(内部高基数),0,内部高基数)=1;
内部下破:=内部下候选 AND 内部下计数-IF(ISNULL(内部低基数),0,内部低基数)=1;
内部原向:=VALUEWHEN(IF(结构缺口,NULL,内部上破 OR 内部下破),IF(内部下破,-1,1));
内部方向:=IF(ISNULL(内部原向),0,内部原向);
内部前向:=IF(ISNULL(REF(内部方向,1)),0,REF(内部方向,1));
内部多BOS:=内部上破 AND 内部前向<>-1;
内部空BOS:=内部下破 AND 内部上破=0 AND 内部前向<>1;
内部多CHoCH:=内部上破 AND 内部前向=-1;
内部空CHoCH:=内部下破 AND (内部上破 OR 内部前向=1);
内部最后事件:=VALUEWHEN(内部上破 OR 内部下破,BARID);
画内部:=显示内部结构 AND IF(历史模式,1,BARID=CONST(内部最后事件));
//-----摆动突破:候选计数只锁定首次有效穿越,新拐点重置锁定-----//
摆动上候选:=IF(结构可算 AND ISNULL(摆动最近高)=0,CROSS(结构收价,摆动最近高),0);
摆动下候选:=IF(结构可算 AND ISNULL(摆动最近低)=0,CROSS(摆动最近低,结构收价),0);
摆动上计数:=COUNT(摆动上候选,0);
摆动下计数:=COUNT(摆动下候选,0);
摆动高基数:=VALUEWHEN(摆动确认高,摆动上计数);
摆动低基数:=VALUEWHEN(摆动确认低,摆动下计数);
摆动上破:=摆动上候选 AND 摆动上计数-IF(ISNULL(摆动高基数),0,摆动高基数)=1;
摆动下破:=摆动下候选 AND 摆动下计数-IF(ISNULL(摆动低基数),0,摆动低基数)=1;
摆动原向:=VALUEWHEN(IF(结构缺口,NULL,摆动上破 OR 摆动下破),IF(摆动下破,-1,1));
摆动方向:=IF(ISNULL(摆动原向),0,摆动原向);
摆动前向:=IF(ISNULL(REF(摆动方向,1)),0,REF(摆动方向,1));
摆动多BOS:=摆动上破 AND 摆动前向<>-1;
摆动空BOS:=摆动下破 AND 摆动上破=0 AND 摆动前向<>1;
摆动多CHoCH:=摆动上破 AND 摆动前向=-1;
摆动空CHoCH:=摆动下破 AND (摆动上破 OR 摆动前向=1);
摆动最后事件:=VALUEWHEN(摆动上破 OR 摆动下破,BARID);
画摆动:=显示摆动结构 AND IF(历史模式,1,BARID=CONST(摆动最后事件));
DRAWSEG(画内部 AND 内部多BOS AND (内部多头类型=0 OR 内部多头类型=1),内部高ID,内部最近高,BARID,内部最近高,COLORRED),LABEL('BOS'),LABELPOS(0),ALIGN0,FONTSIZE(大字号),VALIGN2,NOAUTOSCALE;
DRAWSEG(画内部 AND 内部多CHoCH AND (内部多头类型=0 OR 内部多头类型=2),内部高ID,内部最近高,BARID,内部最近高,COLORYELLOW),LABEL('CHoCH'),LABELPOS(0),ALIGN0,FONTSIZE(大字号),VALIGN2,NOAUTOSCALE;
DRAWSEG(画内部 AND 内部空BOS AND (内部空头类型=0 OR 内部空头类型=1),内部低ID,内部最近低,BARID,内部最近低,COLORGREEN),LABEL('BOS'),LABELPOS(0),ALIGN0,FONTSIZE(大字号),VALIGN0,NOAUTOSCALE;
DRAWSEG(画内部 AND 内部空CHoCH AND (内部空头类型=0 OR 内部空头类型=2),内部低ID,内部最近低,BARID,内部最近低,COLORYELLOW),LABEL('CHoCH'),LABELPOS(0),ALIGN0,FONTSIZE(大字号),VALIGN0,NOAUTOSCALE;
// 内部订单块:突破拐点至突破前一根,解析极值同价取最早,不限制K线方向。
内部多左:=RANGELOWID(OB解析低,IF(显示内部OB AND 内部上破,内部高ID,NULL),BARID-1,1);
内部空左:=RANGEHIGHID(OB解析高,IF(显示内部OB AND 内部下破,内部低ID,NULL),BARID-1,1);
内部多顶:=REF(OB解析高,BARID-内部多左);
内部多底:=REF(OB解析低,BARID-内部多左);
内部空顶:=REF(OB解析高,BARID-内部空左);
内部空底:=REF(OB解析低,BARID-内部空左);
内部多OB:=显示内部OB AND 内部上破 AND ISNULL(内部多左)=0;
内部空OB:=显示内部OB AND 内部下破 AND ISNULL(内部空左)=0;
DRAWZONE(IF(有效,内部多OB OR 内部空OB,NULL),IF(内部多OB,内部多左,内部空左),IF(内部多OB,内部多顶,内部空顶),LASTBARID,IF(内部多OB,内部多底,内部空底),下穿价,上穿价,IF(内部多OB,1,2),内部OB数量,OB多头色),RESERVE(100),CREATEFIRST,RAWBOUNDS,IF(内部多OB,OB多头色,OB空头色),ALPHA(80),NOAUTOSCALE;
DRAWSEG(画摆动 AND 摆动多BOS AND (摆动多头类型=0 OR 摆动多头类型=1),摆动高ID,摆动最近高,BARID,摆动最近高,COLORRED),LABEL('BOS'),LABELPOS(0),ALIGN0,FONTSIZE(大字号),VALIGN2,NOAUTOSCALE;
DRAWSEG(画摆动 AND 摆动多CHoCH AND (摆动多头类型=0 OR 摆动多头类型=2),摆动高ID,摆动最近高,BARID,摆动最近高,COLORYELLOW),LABEL('CHoCH'),LABELPOS(0),ALIGN0,FONTSIZE(大字号),VALIGN2,NOAUTOSCALE;
DRAWSEG(画摆动 AND 摆动空BOS AND (摆动空头类型=0 OR 摆动空头类型=1),摆动低ID,摆动最近低,BARID,摆动最近低,COLORGREEN),LABEL('BOS'),LABELPOS(0),ALIGN0,FONTSIZE(大字号),VALIGN0,NOAUTOSCALE;
DRAWSEG(画摆动 AND 摆动空CHoCH AND (摆动空头类型=0 OR 摆动空头类型=2),摆动低ID,摆动最近低,BARID,摆动最近低,COLORYELLOW),LABEL('CHoCH'),LABELPOS(0),ALIGN0,FONTSIZE(大字号),VALIGN0,NOAUTOSCALE;
// 摆动订单块:突破拐点至突破前一根,解析极值同价取最早,不限制K线方向。
摆动多左:=RANGELOWID(OB解析低,IF(显示摆动OB AND 摆动上破,摆动高ID,NULL),BARID-1,1);
摆动空左:=RANGEHIGHID(OB解析高,IF(显示摆动OB AND 摆动下破,摆动低ID,NULL),BARID-1,1);
摆动多顶:=REF(OB解析高,BARID-摆动多左);
摆动多底:=REF(OB解析低,BARID-摆动多左);
摆动空顶:=REF(OB解析高,BARID-摆动空左);
摆动空底:=REF(OB解析低,BARID-摆动空左);
摆动多OB:=显示摆动OB AND 摆动上破 AND ISNULL(摆动多左)=0;
摆动空OB:=显示摆动OB AND 摆动下破 AND ISNULL(摆动空左)=0;
DRAWZONE(IF(有效,摆动多OB OR 摆动空OB,NULL),IF(摆动多OB,摆动多左,摆动空左),IF(摆动多OB,摆动多顶,摆动空顶),LASTBARID,IF(摆动多OB,摆动多底,摆动空底),下穿价,上穿价,IF(摆动多OB,1,2),摆动OB数量,OB多头色),RESERVE(100),CREATEFIRST,RAWBOUNDS,IF(摆动多OB,OB多头色,OB空头色),ALPHA(80),NOAUTOSCALE;
//-----强弱高低点:按官方顺序先追踪/绘制,再应用当前根的新拐点与方向-----//
DRAWSEG(显示摆动点 AND 摆动确认高,摆动高ID,摆动高点,摆动高ID,摆动高点,COLORRED),LABEL('H'),FONTSIZE(小字号),VALIGN2,NOAUTOSCALE;
DRAWSEG(显示摆动点 AND 摆动确认低,摆动低ID,摆动低点,摆动低ID,摆动低点,COLORGREEN),LABEL('L'),FONTSIZE(小字号),VALIGN0,NOAUTOSCALE;
摆动高确认ID:=VALUEWHEN(摆动确认高,BARID);
摆动低确认ID:=VALUEWHEN(摆动确认低,BARID);
追高重置ID:=REF(摆动高确认ID,1);
追低重置ID:=REF(摆动低确认ID,1);
追高重置价:=REF(摆动最近高,1);
追低重置价:=REF(摆动最近低,1);
追踪高输入:=IF(有效,HIGH,NULL);
追踪低输入:=IF(有效,LOW,NULL);
重置后最高:=HHV(追踪高输入,BARID-追高重置ID);
重置后最低:=LLV(追踪低输入,BARID-追低重置ID);
追踪高价:=IF(有效 AND ISNULL(追高重置ID)=0,MAX(追高重置价,重置后最高),NULL);
追踪低价:=IF(有效 AND ISNULL(追低重置ID)=0,MIN(追低重置价,重置后最低),NULL);
追踪高ID:=IF(ISNULL(追踪高价),NULL,IF(重置后最高>=追高重置价,VALUEWHEN(有效 AND HIGH=重置后最高,BARID),REF(摆动高ID,1)));
追踪低ID:=IF(ISNULL(追踪低价),NULL,IF(重置后最低<=追低重置价,VALUEWHEN(有效 AND LOW=重置后最低,BARID),REF(摆动低ID,1)));
追踪前向:=IF(ISNULL(REF(摆动方向,1)),0,REF(摆动方向,1));
DRAWSEG(ISLASTBAR AND 显示强弱高低点 AND 追踪前向<>-1,追踪高ID,追踪高价,LASTBARID,追踪高价,COLORRED),LABEL('弱高'),FONTSIZE(大字号),VALIGN2,NOAUTOSCALE;
DRAWSEG(ISLASTBAR AND 显示强弱高低点 AND 追踪前向=-1,追踪高ID,追踪高价,LASTBARID,追踪高价,COLORRED),LABEL('强高'),FONTSIZE(大字号),VALIGN2,NOAUTOSCALE;
DRAWSEG(ISLASTBAR AND 显示强弱高低点 AND 追踪前向<>1,追踪低ID,追踪低价,LASTBARID,追踪低价,COLORGREEN),LABEL('弱低'),FONTSIZE(大字号),VALIGN0,NOAUTOSCALE;
DRAWSEG(ISLASTBAR AND 显示强弱高低点 AND 追踪前向=1,追踪低ID,追踪低价,LASTBARID,追踪低价,COLORGREEN),LABEL('强低'),FONTSIZE(大字号),VALIGN0,NOAUTOSCALE;
//-----EQH/EQL:确认周期独立于内部/摆动周期-----//
等高点:=PIVOTHIGH(高价,等价确认,等价确认);
等低点:=PIVOTLOW(低价,等价确认,等价确认);
等高确认:=IF(ISLASTBAR,0,IF(有效,ISNULL(等高点)=0 AND 等高点>REF(HHV(高价,等价确认),等价确认+1),NULL));
等低确认:=IF(ISLASTBAR,0,IF(有效,ISNULL(等低点)=0 AND 等低点<REF(LLV(低价,等价确认),等价确认+1),NULL));
上个高:=VALUEWHEN(等高确认,等高点,1);
上个低:=VALUEWHEN(等低确认,等低点,1);
上高ID:=VALUEWHEN(等高确认,BARID-等价确认,1);
上低ID:=VALUEWHEN(等低确认,BARID-等价确认,1);
容差:=MAX(IF(ISNULL(MINPRICE),0,MAX(MINPRICE,0)*2),IF(ISNULL(ATR值),0,ATR值*等价阈值));
EQH:=IF(等高确认 AND ISNULL(上个高)=0,ABS(等高点-上个高)<=容差,0);
EQL:=IF(等低确认 AND ISNULL(上个低)=0,ABS(等低点-上个低)<=容差,0);
最近EQH:=VALUEWHEN(EQH,BARID);
最近EQL:=VALUEWHEN(EQL,BARID);
DRAWSEG(显示等价高低点 AND EQH AND IF(历史模式,1,BARID=CONST(最近EQH)),上高ID,等高点,BARID-等价确认,等高点,COLORCYAN),LABEL('EQH'),FONTSIZE(小字号),VALIGN2,NOAUTOSCALE;
DRAWSEG(显示等价高低点 AND EQL AND IF(历史模式,1,BARID=CONST(最近EQL)),上低ID,等低点,BARID-等价确认,等低点,COLORCYAN),LABEL('EQL'),FONTSIZE(小字号),VALIGN0,NOAUTOSCALE;
//-----FVG:形成等收盘,右端在形成时固定;实时高低价击穿即删-----//
缺口倍率:=MAX(0.1,0.2-IF(ABS(收价)>0,ATR值/ABS(收价)*50,0));
缺口门槛:=IF(FVG自动阈值,IF(ISNULL(ATR值),IF(MINPRICE>0,3*MINPRICE,0),缺口倍率*ATR值),0);
三根完整:=COUNT(ISNULL(开价)=0,3)=3;
多FVG:=IF(ISLASTBAR,0,IF(有效,显示FVG AND 三根完整 AND 低价>REF(高价,2) AND 低价-REF(高价,2)>=缺口门槛,0));
空FVG:=IF(ISLASTBAR,0,IF(有效,显示FVG AND 三根完整 AND 高价<REF(低价,2) AND REF(低价,2)-高价>=缺口门槛,0));
DRAWZONE(IF(ISLASTBAR,0,IF(有效,多FVG OR 空FVG,NULL)),BARID-0.5,IF(多FVG,低价,REF(低价,2)),BARID+FVG延伸,IF(多FVG,REF(高价,2),高价),LOW,HIGH,IF(多FVG,1,2),FVG保留上限,FVG多头色),IF(多FVG,FVG多头色,FVG空头色),ALPHA(60),REPLACEOVERLAP,LABEL('FVG'),LABELPOS(1),ALIGN0,VALIGN1,FONTSIZE(小字号),IF(显示FVG文字,TEXT,NOTEXT),NOAUTOSCALE;