通达信〖成交量分布〗构建一套动态筹码核心支撑阻力图源码
尽管通达信的公式系统存在局限——无法像 TradingView 那样借助循环与复杂数组在主图侧边自由绘制高精度的像素级横向直方图,普通公式也难以直接复现系统自带的筹码分布视觉样式——但我们仍可另辟蹊径。
通过调用通达信内置的画线函数,我们能够在主图上构建一套动态的“筹码/成交量分布核心支撑阻力图”。这套指标能够实时输出以下关键信息:
- POC(筹码控制点 / 最密集价格)
- VAH(价值区高点,对应70%筹码上限)
- VAL(价值区低点,对应70%筹码下限)
- 90%筹码集中度(用于判断当前筹码是单峰密集还是分散)
{ VOLUME PROFILE - 终极修正版V6.7.28(修复一字板 / 无振幅数据丢失BUG) }
{ 外部参数:N N倍数(缺省: 3,范围: 1 - 20) }
N:= 2;
{ === 1. 数据周期锁定 === }
衔印:= PERIOD = 0 && ZSTJJ != 0;
有效周期:= USEDDATANUM; { 修改建议: 此值与屏显K线数保持一致 }
{ === 2. 坐标轴绝对锁定 === }
历史最高:= CONST(REFDATE(HHV(H, 有效周期), DATE));
历史最低:= CONST(REFDATE(LLV(L, 有效周期), DATE));
网格宽度:= (历史最高 - 历史最低) / 29;
{ === 3. 成交量基础换算 === }
市场换算:= IF(SETCODE == 0 || SETCODE == 1 || SETCODE == 2 || SETCODE = 44, 100, 1);
有效量手:= VOL / 市场换算;
分时一字:= 衔印 || (H = L);
{ === 4. 核心算法:28网格成交量分配(已修复一字板BUG) === }
V1:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高) - MAX(L, 历史最高 - 网格宽度)) / (H - L)), 有效周期);
V2:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 2 && C < 历史最高 - 网格宽度, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度) - MAX(L, 历史最高 - 网格宽度 * 2)) / (H - L)), 有效周期);
V3:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 3 && C < 历史最高 - 网格宽度 * 2, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 2) - MAX(L, 历史最高 - 网格宽度 * 3)) / (H - L)), 有效周期);
V4:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 4 && C < 历史最高 - 网格宽度 * 3, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 3) - MAX(L, 历史最高 - 网格宽度 * 4)) / (H - L)), 有效周期);
V5:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 5 && C < 历史最高 - 网格宽度 * 4, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 4) - MAX(L, 历史最高 - 网格宽度 * 5)) / (H - L)), 有效周期);
V6:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 6 && C < 历史最高 - 网格宽度 * 5, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 5) - MAX(L, 历史最高 - 网格宽度 * 6)) / (H - L)), 有效周期);
V7:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 7 && C < 历史最高 - 网格宽度 * 6, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 6) - MAX(L, 历史最高 - 网格宽度 * 7)) / (H - L)), 有效周期);
V8:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 8 && C < 历史最高 - 网格宽度 * 7, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 7) - MAX(L, 历史最高 - 网格宽度 * 8)) / (H - L)), 有效周期);
V9:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 9 && C < 历史最高 - 网格宽度 * 8, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 8) - MAX(L, 历史最高 - 网格宽度 * 9)) / (H - L)), 有效周期);
V10:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 10 && C < 历史最高 - 网格宽度 * 9, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 9) - MAX(L, 历史最高 - 网格宽度 * 10)) / (H - L)), 有效周期);
V11:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 11 && C < 历史最高 - 网格宽度 * 10, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 10) - MAX(L, 历史最高 - 网格宽度 * 11)) / (H - L)), 有效周期);
V12:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 12 && C < 历史最高 - 网格宽度 * 11, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 11) - MAX(L, 历史最高 - 网格宽度 * 12)) / (H - L)), 有效周期);
V13:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 13 && C < 历史最高 - 网格宽度 * 12, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 12) - MAX(L, 历史最高 - 网格宽度 * 13)) / (H - L)), 有效周期);
V14:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 14 && C < 历史最高 - 网格宽度 * 13, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 13) - MAX(L, 历史最高 - 网格宽度 * 14)) / (H - L)), 有效周期);
V15:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 15 && C < 历史最高 - 网格宽度 * 14, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 14) - MAX(L, 历史最高 - 网格宽度 * 15)) / (H - L)), 有效周期);
V16:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 16 && C < 历史最高 - 网格宽度 * 15, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 15) - MAX(L, 历史最高 - 网格宽度 * 16)) / (H - L)), 有效周期);
V17:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 17 && C < 历史最高 - 网格宽度 * 16, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 16) - MAX(L, 历史最高 - 网格宽度 * 17)) / (H - L)), 有效周期);
V18:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 18 && C < 历史最高 - 网格宽度 * 17, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 17) - MAX(L, 历史最高 - 网格宽度 * 18)) / (H - L)), 有效周期);
V19:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 19 && C < 历史最高 - 网格宽度 * 18, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 18) - MAX(L, 历史最高 - 网格宽度 * 19)) / (H - L)), 有效周期);
V20:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 20 && C < 历史最高 - 网格宽度 * 19, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 19) - MAX(L, 历史最高 - 网格宽度 * 20)) / (H - L)), 有效周期);
V21:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 21 && C < 历史最高 - 网格宽度 * 20, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 20) - MAX(L, 历史最高 - 网格宽度 * 21)) / (H - L)), 有效周期);
V22:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 22 && C < 历史最高 - 网格宽度 * 21, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 21) - MAX(L, 历史最高 - 网格宽度 * 22)) / (H - L)), 有效周期);
V23:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 23 && C < 历史最高 - 网格宽度 * 22, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 22) - MAX(L, 历史最高 - 网格宽度 * 23)) / (H - L)), 有效周期);
V24:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 24 && C < 历史最高 - 网格宽度 * 23, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 23) - MAX(L, 历史最高 - 网格宽度 * 24)) / (H - L)), 有效周期);
V25:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 25 && C < 历史最高 - 网格宽度 * 24, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 24) - MAX(L, 历史最高 - 网格宽度 * 25)) / (H - L)), 有效周期);
V26:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 26 && C < 历史最高 - 网格宽度 * 25, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 25) - MAX(L, 历史最高 - 网格宽度 * 26)) / (H - L)), 有效周期);
V27:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 27 && C < 历史最高 - 网格宽度 * 26, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 26) - MAX(L, 历史最高 - 网格宽度 * 27)) / (H - L)), 有效周期);
V28:= SUM(IF(分时一字, IF(C >= 历史最高 - 网格宽度 * 28 && C < 历史最高 - 网格宽度 * 27, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 27) - MAX(L, 历史最高 - 网格宽度 * 28)) / (H - L)), 有效周期);
V29:= SUM(IF(分时一字, IF(C < 历史最高 - 网格宽度 * 28, 有效量手, 0), 有效量手 * MAX(0, MIN(H, 历史最高 - 网格宽度 * 28) - MAX(L, 历史最低)) / (H - L)), 有效周期);
{ === 5. CONST 强制锁定为常量 === }
G1:= CONST(V1); G2:= CONST(V2); G3:= CONST(V3); G4:= CONST(V4); G5:= CONST(V5);
G6:= CONST(V6); G7:= CONST(V7); G8:= CONST(V8); G9:= CONST(V9); G10:= CONST(V10);
G11:= CONST(V11); G12:= CONST(V12); G13:= CONST(V13); G14:= CONST(V14); G15:= CONST(V15);
G16:= CONST(V16); G17:= CONST(V17); G18:= CONST(V18); G19:= CONST(V19); G20:= CONST(V20);
G21:= CONST(V21); G22:= CONST(V22); G23:= CONST(V23); G24:= CONST(V24); G25:= CONST(V25);
G26:= CONST(V26); G27:= CONST(V27); G28:= CONST(V28); G29:= CONST(V29);
{ === 6. 总成交量与累计占比 === }
总成交量:= G1 + G2 + G3 + G4 + G5 + G6 + G7 + G8 + G9 + G10 + G11 + G12 + G13 + G14 + G15 + G16 + G17 + G18 + G19 + G20 + G21 + G22 + G23 + G24 + G25 + G26 + G27 + G28 + G29;
累计1:= G1 / 总成交量; 累计2:= 累计1 + G2 / 总成交量; 累计3:= 累计2 + G3 / 总成交量; 累计4:= 累计3 + G4 / 总成交量; 累计5:= 累计4 + G5 / 总成交量;
累计6:= 累计5 + G6 / 总成交量; 累计7:= 累计6 + G7 / 总成交量; 累计8:= 累计7 + G8 / 总成交量; 累计9:= 累计8 + G9 / 总成交量; 累计10:= 累计9 + G10 / 总成交量;
累计11:= 累计10 + G11 / 总成交量; 累计12:= 累计11 + G12 / 总成交量; 累计13:= 累计12 + G13 / 总成交量; 累计14:= 累计13 + G14 / 总成交量; 累计15:= 累计14 + G15 / 总成交量;
累计16:= 累计15 + G16 / 总成交量; 累计17:= 累计16 + G17 / 总成交量; 累计18:= 累计17 + G18 / 总成交量; 累计19:= 累计18 + G19 / 总成交量; 累计20:= 累计19 + G20 / 总成交量;
累计21:= 累计20 + G21 / 总成交量; 累计22:= 累计21 + G22 / 总成交量; 累计23:= 累计22 + G23 / 总成交量; 累计24:= 累计23 + G24 / 总成交量; 累计25:= 累计24 + G25 / 总成交量;
累计26:= 累计25 + G26 / 总成交量; 累计27:= 累计26 + G27 / 总成交量; 累计28:= 累计27 + G28 / 总成交量; 累计29:= 1;
{ === 7. POC(控制价位)计算 === }
峰值成交量:= MAX(G1, MAX(G2, MAX(G3, MAX(G4, MAX(G5, MAX(G6, MAX(G7, MAX(G8, MAX(G9, MAX(G10,
MAX(G11, MAX(G12, MAX(G13, MAX(G14, MAX(G15, MAX(G16, MAX(G17, MAX(G18, MAX(G19, MAX(G20,
MAX(G21, MAX(G22, MAX(G23, MAX(G24, MAX(G25, MAX(G26, MAX(G27, MAX(G28, G29))))))))))))))))))))))))))));
POC序号:= IF(G1 = 峰值成交量, 1, IF(G2 = 峰值成交量, 2, IF(G3 = 峰值成交量, 3, IF(G4 = 峰值成交量, 4, IF(G5 = 峰值成交量, 5,
IF(G6 = 峰值成交量, 6, IF(G7 = 峰值成交量, 7, IF(G8 = 峰值成交量, 8, IF(G9 = 峰值成交量, 9, IF(G10 = 峰值成交量, 10,
IF(G11 = 峰值成交量, 11, IF(G12 = 峰值成交量, 12, IF(G13 = 峰值成交量, 13, IF(G14 = 峰值成交量, 14, IF(G15 = 峰值成交量, 15,
IF(G16 = 峰值成交量, 16, IF(G17 = 峰值成交量, 17, IF(G18 = 峰值成交量, 18, IF(G19 = 峰值成交量, 19, IF(G20 = 峰值成交量, 20,
IF(G21 = 峰值成交量, 21, IF(G22 = 峰值成交量, 22, IF(G23 = 峰值成交量, 23, IF(G24 = 峰值成交量, 24, IF(G25 = 峰值成交量, 25,
IF(G26 = 峰值成交量, 26, IF(G27 = 峰值成交量, 27, IF(G28 = 峰值成交量, 28, 29))))))))))))))))))))))))))));
POC: 历史最高 - 网格宽度 * (POC序号 - 0.5), COLORRED, LINETHICK2;
{ === 8. 查找 VAH(15 % 累计)、VAL(85 % 累计)—— 全部使用 IF 嵌套 === }
VAH序号:= IF(累计1 >= 0.15, 1, IF(累计2 >= 0.15, 2, IF(累计3 >= 0.15, 3, IF(累计4 >= 0.15, 4, IF(累计5 >= 0.15, 5,
IF(累计6 >= 0.15, 6, IF(累计7 >= 0.15, 7, IF(累计8 >= 0.15, 8, IF(累计9 >= 0.15, 9, IF(累计10 >= 0.15, 10,
IF(累计11 >= 0.15, 11, IF(累计12 >= 0.15, 12, IF(累计13 >= 0.15, 13, IF(累计14 >= 0.15, 14, IF(累计15 >= 0.15, 15,
IF(累计16 >= 0.15, 16, IF(累计17 >= 0.15, 17, IF(累计18 >= 0.15, 18, IF(累计19 >= 0.15, 19, IF(累计20 >= 0.15, 20,
IF(累计21 >= 0.15, 21, IF(累计22 >= 0.15, 22, IF(累计23 >= 0.15, 23, IF(累计24 >= 0.15, 24, IF(累计25 >= 0.15, 25,
IF(累计26 >= 0.15, 26, IF(累计27 >= 0.15, 27, IF(累计28 >= 0.15, 28, 29))))))))))))))))))))))))))));
VAL序号:= IF(累计1 >= 0.85, 1, IF(累计2 >= 0.85, 2, IF(累计3 >= 0.85, 3, IF(累计4 >= 0.85, 4, IF(累计5 >= 0.85, 5,
IF(累计6 >= 0.85, 6, IF(累计7 >= 0.85, 7, IF(累计8 >= 0.85, 8, IF(累计9 >= 0.85, 9, IF(累计10 >= 0.85, 10,
IF(累计11 >= 0.85, 11, IF(累计12 >= 0.85, 12, IF(累计13 >= 0.85, 13, IF(累计14 >= 0.85, 14, IF(累计15 >= 0.85, 15,
IF(累计16 >= 0.85, 16, IF(累计17 >= 0.85, 17, IF(累计18 >= 0.85, 18, IF(累计19 >= 0.85, 19, IF(累计20 >= 0.85, 20,
IF(累计21 >= 0.85, 21, IF(累计22 >= 0.85, 22, IF(累计23 >= 0.85, 23, IF(累计24 >= 0.85, 24, IF(累计25 >= 0.85, 25,
IF(累计26 >= 0.85, 26, IF(累计27 >= 0.85, 27, IF(累计28 >= 0.85, 28, 29))))))))))))))))))))))))))));
P90H序号:= IF(累计1 >= 0.05, 1, IF(累计2 >= 0.05, 2, IF(累计3 >= 0.05, 3, IF(累计4 >= 0.05, 4, IF(累计5 >= 0.05, 5,
IF(累计6 >= 0.05, 6, IF(累计7 >= 0.05, 7, IF(累计8 >= 0.05, 8, IF(累计9 >= 0.05, 9, IF(累计10 >= 0.05, 10,
IF(累计11 >= 0.05, 11, IF(累计12 >= 0.05, 12, IF(累计13 >= 0.05, 13, IF(累计14 >= 0.05, 14, IF(累计15 >= 0.05, 15,
IF(累计16 >= 0.05, 16, IF(累计17 >= 0.05, 17, IF(累计18 >= 0.05, 18, IF(累计19 >= 0.05, 19, IF(累计20 >= 0.05, 20,
IF(累计21 >= 0.05, 21, IF(累计22 >= 0.05, 22, IF(累计23 >= 0.05, 23, IF(累计24 >= 0.05, 24, IF(累计25 >= 0.05, 25,
IF(累计26 >= 0.05, 26, IF(累计27 >= 0.05, 27, IF(累计28 >= 0.05, 28, 29))))))))))))))))))))))))))));
P90L序号:= IF(累计1 >= 0.95, 1, IF(累计2 >= 0.95, 2, IF(累计3 >= 0.95, 3, IF(累计4 >= 0.95, 4, IF(累计5 >= 0.95, 5,
IF(累计6 >= 0.95, 6, IF(累计7 >= 0.95, 7, IF(累计8 >= 0.95, 8, IF(累计9 >= 0.95, 9, IF(累计10 >= 0.95, 10,
IF(累计11 >= 0.95, 11, IF(累计12 >= 0.95, 12, IF(累计13 >= 0.95, 13, IF(累计14 >= 0.95, 14, IF(累计15 >= 0.95, 15,
IF(累计16 >= 0.95, 16, IF(累计17 >= 0.95, 17, IF(累计18 >= 0.95, 18, IF(累计19 >= 0.95, 19, IF(累计20 >= 0.95, 20,
IF(累计21 >= 0.95, 21, IF(累计22 >= 0.95, 22, IF(累计23 >= 0.95, 23, IF(累计24 >= 0.95, 24, IF(累计25 >= 0.95, 25,
IF(累计26 >= 0.95, 26, IF(累计27 >= 0.95, 27, IF(累计28 >= 0.95, 28, 29))))))))))))))))))))))))))));
{ === 9. 获取 VAH 前值及插值计算(REF 使用常量序号)=== }
VAH前值:= IF(VAH序号 = 1, 0,
IF(VAH序号 = 2, 累计1, IF(VAH序号 = 3, 累计2, IF(VAH序号 = 4, 累计3, IF(VAH序号 = 5, 累计4,
IF(VAH序号 = 6, 累计5, IF(VAH序号 = 7, 累计6, IF(VAH序号 = 8, 累计7, IF(VAH序号 = 9, 累计8, IF(VAH序号 = 10, 累计9,
IF(VAH序号 = 11, 累计10, IF(VAH序号 = 12, 累计11, IF(VAH序号 = 13, 累计12, IF(VAH序号 = 14, 累计13, IF(VAH序号 = 15, 累计14,
IF(VAH序号 = 16, 累计15, IF(VAH序号 = 17, 累计16, IF(VAH序号 = 18, 累计17, IF(VAH序号 = 19, 累计18, IF(VAH序号 = 20, 累计19,
IF(VAH序号 = 21, 累计20, IF(VAH序号 = 22, 累计21, IF(VAH序号 = 23, 累计22, IF(VAH序号 = 24, 累计23, IF(VAH序号 = 25, 累计24,
IF(VAH序号 = 26, 累计25, IF(VAH序号 = 27, 累计26, IF(VAH序号 = 28, 累计27, 累计28))))))))))))))))))))))))))));
VAH现值:= IF(VAH序号 = 1, 累计1, IF(VAH序号 = 2, 累计2, IF(VAH序号 = 3, 累计3, IF(VAH序号 = 4, 累计4, IF(VAH序号 = 5, 累计5,
IF(VAH序号 = 6, 累计6, IF(VAH序号 = 7, 累计7, IF(VAH序号 = 8, 累计8, IF(VAH序号 = 9, 累计9, IF(VAH序号 = 10, 累计10,
IF(VAH序号 = 11, 累计11, IF(VAH序号 = 12, 累计12, IF(VAH序号 = 13, 累计13, IF(VAH序号 = 14, 累计14, IF(VAH序号 = 15, 累计15,
IF(VAH序号 = 16, 累计16, IF(VAH序号 = 17, 累计17, IF(VAH序号 = 18, 累计18, IF(VAH序号 = 19, 累计19, IF(VAH序号 = 20, 累计20,
IF(VAH序号 = 21, 累计21, IF(VAH序号 = 22, 累计22, IF(VAH序号 = 23, 累计23, IF(VAH序号 = 24, 累计24, IF(VAH序号 = 25, 累计25,
IF(VAH序号 = 26, 累计26, IF(VAH序号 = 27, 累计27, IF(VAH序号 = 28, 累计28, 累计29))))))))))))))))))))))))))));
VAH: 历史最高 - 网格宽度 * ((VAH序号 - 1) + (0.15 - VAH前值) / MAX(VAH现值 - VAH前值, 0.0001)), COLORYELLOW, DOTLINE;
{ === 10. 获取 VAL 前值及插值计算 === }
VAL前值:= IF(VAL序号 = 1, 0,
IF(VAL序号 = 2, 累计1, IF(VAL序号 = 3, 累计2, IF(VAL序号 = 4, 累计3, IF(VAL序号 = 5, 累计4,
IF(VAL序号 = 6, 累计5, IF(VAL序号 = 7, 累计6, IF(VAL序号 = 8, 累计7, IF(VAL序号 = 9, 累计8, IF(VAL序号 = 10, 累计9,
IF(VAL序号 = 11, 累计10, IF(VAL序号 = 12, 累计11, IF(VAL序号 = 13, 累计12, IF(VAL序号 = 14, 累计13, IF(VAL序号 = 15, 累计14,
IF(VAL序号 = 16, 累计15, IF(VAL序号 = 17, 累计16, IF(VAL序号 = 18, 累计17, IF(VAL序号 = 19, 累计18, IF(VAL序号 = 20, 累计19,
IF(VAL序号 = 21, 累计20, IF(VAL序号 = 22, 累计21, IF(VAL序号 = 23, 累计22, IF(VAL序号 = 24, 累计23, IF(VAL序号 = 25, 累计24,
IF(VAL序号 = 26, 累计25, IF(VAL序号 = 27, 累计26, IF(VAL序号 = 28, 累计27, 累计28))))))))))))))))))))))))))));
VAL现值:= IF(VAL序号 = 1, 累计1, IF(VAL序号 = 2, 累计2, IF(VAL序号 = 3, 累计3, IF(VAL序号 = 4, 累计4, IF(VAL序号 = 5, 累计5,
IF(VAL序号 = 6, 累计6, IF(VAL序号 = 7, 累计7, IF(VAL序号 = 8, 累计8, IF(VAL序号 = 9, 累计9, IF(VAL序号 = 10, 累计10,
IF(VAL序号 = 11, 累计11, IF(VAL序号 = 12, 累计12, IF(VAL序号 = 13, 累计13, IF(VAL序号 = 14, 累计14, IF(VAL序号 = 15, 累计15,
IF(VAL序号 = 16, 累计16, IF(VAL序号 = 17, 累计17, IF(VAL序号 = 18, 累计18, IF(VAL序号 = 19, 累计19, IF(VAL序号 = 20, 累计20,
IF(VAL序号 = 21, 累计21, IF(VAL序号 = 22, 累计22, IF(VAL序号 = 23, 累计23, IF(VAL序号 = 24, 累计24, IF(VAL序号 = 25, 累计25,
IF(VAL序号 = 26, 累计26, IF(VAL序号 = 27, 累计27, IF(VAL序号 = 28, 累计28, 累计29))))))))))))))))))))))))))));
VAL: 历史最高 - 网格宽度 * ((VAL序号 - 1) + (0.85 - VAL前值) / MAX(VAL现值 - VAL前值, 0.0001)), COLORYELLOW, DOTLINE;
{ === 11. 获取 P90H 前值及插值计算 === }
P90H前值:= IF(P90H序号 = 1, 0,
IF(P90H序号 = 2, 累计1, IF(P90H序号 = 3, 累计2, IF(P90H序号 = 4, 累计3, IF(P90H序号 = 5, 累计4,
IF(P90H序号 = 6, 累计5, IF(P90H序号 = 7, 累计6, IF(P90H序号 = 8, 累计7, IF(P90H序号 = 9, 累计8, IF(P90H序号 = 10, 累计9,
IF(P90H序号 = 11, 累计10, IF(P90H序号 = 12, 累计11, IF(P90H序号 = 13, 累计12, IF(P90H序号 = 14, 累计13, IF(P90H序号 = 15, 累计14,
IF(P90H序号 = 16, 累计15, IF(P90H序号 = 17, 累计16, IF(P90H序号 = 18, 累计17, IF(P90H序号 = 19, 累计18, IF(P90H序号 = 20, 累计19,
IF(P90H序号 = 21, 累计20, IF(P90H序号 = 22, 累计21, IF(P90H序号 = 23, 累计22, IF(P90H序号 = 24, 累计23, IF(P90H序号 = 25, 累计24,
IF(P90H序号 = 26, 累计25, IF(P90H序号 = 27, 累计26, IF(P90H序号 = 28, 累计27, 累计28))))))))))))))))))))))))))));
P90H现值:= IF(P90H序号 = 1, 累计1, IF(P90H序号 = 2, 累计2, IF(P90H序号 = 3, 累计3, IF(P90H序号 = 4, 累计4, IF(P90H序号 = 5, 累计5,
IF(P90H序号 = 6, 累计6, IF(P90H序号 = 7, 累计7, IF(P90H序号 = 8, 累计8, IF(P90H序号 = 9, 累计9, IF(P90H序号 = 10, 累计10,
IF(P90H序号 = 11, 累计11, IF(P90H序号 = 12, 累计12, IF(P90H序号 = 13, 累计13, IF(P90H序号 = 14, 累计14, IF(P90H序号 = 15, 累计15,
IF(P90H序号 = 16, 累计16, IF(P90H序号 = 17, 累计17, IF(P90H序号 = 18, 累计18, IF(P90H序号 = 19, 累计19, IF(P90H序号 = 20, 累计20,
IF(P90H序号 = 21, 累计21, IF(P90H序号 = 22, 累计22, IF(P90H序号 = 23, 累计23, IF(P90H序号 = 24, 累计24, IF(P90H序号 = 25, 累计25,
IF(P90H序号 = 26, 累计26, IF(P90H序号 = 27, 累计27, IF(P90H序号 = 28, 累计28, 累计29))))))))))))))))))))))))))));
P90H: 历史最高 - 网格宽度 * ((P90H序号 - 1) + (0.05 - P90H前值) / MAX(P90H现值 - P90H前值, 0.0001)), COLORGREEN, DOTLINE;
{ === 12. 获取 P90L 前值及插值计算 === }
P90L前值:= IF(P90L序号 = 1, 0,
IF(P90L序号 = 2, 累计1, IF(P90L序号 = 3, 累计2, IF(P90L序号 = 4, 累计3, IF(P90L序号 = 5, 累计4,
IF(P90L序号 = 6, 累计5, IF(P90L序号 = 7, 累计6, IF(P90L序号 = 8, 累计7, IF(P90L序号 = 9, 累计8, IF(P90L序号 = 10, 累计9,
IF(P90L序号 = 11, 累计10, IF(P90L序号 = 12, 累计11, IF(P90L序号 = 13, 累计12, IF(P90L序号 = 14, 累计13, IF(P90L序号 = 15, 累计14,
IF(P90L序号 = 16, 累计15, IF(P90L序号 = 17, 累计16, IF(P90L序号 = 18, 累计17, IF(P90L序号 = 19, 累计18, IF(P90L序号 = 20, 累计19,
IF(P90L序号 = 21, 累计20, IF(P90L序号 = 22, 累计21, IF(P90L序号 = 23, 累计22, IF(P90L序号 = 24, 累计23, IF(P90L序号 = 25, 累计24,
IF(P90L序号 = 26, 累计25, IF(P90L序号 = 27, 累计26, IF(P90L序号 = 28, 累计27, 累计28))))))))))))))))))))))))))));
P90L现值:= IF(P90L序号 = 1, 累计1, IF(P90L序号 = 2, 累计2, IF(P90L序号 = 3, 累计3, IF(P90L序号 = 4, 累计4, IF(P90L序号 = 5, 累计5,
IF(P90L序号 = 6, 累计6, IF(P90L序号 = 7, 累计7, IF(P90L序号 = 8, 累计8, IF(P90L序号 = 9, 累计9, IF(P90L序号 = 10, 累计10,
IF(P90L序号 = 11, 累计11, IF(P90L序号 = 12, 累计12, IF(P90L序号 = 13, 累计13, IF(P90L序号 = 14, 累计14, IF(P90L序号 = 15, 累计15,
IF(P90L序号 = 16, 累计16, IF(P90L序号 = 17, 累计17, IF(P90L序号 = 18, 累计18, IF(P90L序号 = 19, 累计19, IF(P90L序号 = 20, 累计20,
IF(P90L序号 = 21, 累计21, IF(P90L序号 = 22, 累计22, IF(P90L序号 = 23, 累计23, IF(P90L序号 = 24, 累计24, IF(P90L序号 = 25, 累计25,
IF(P90L序号 = 26, 累计26, IF(P90L序号 = 27, 累计27, IF(P90L序号 = 28, 累计28, 累计29))))))))))))))))))))))))))));
P90L: 历史最高 - 网格宽度 * ((P90L序号 - 1) + (0.95 - P90L前值) / MAX(P90L现值 - P90L前值, 0.0001)), COLORGREEN, DOTLINE;
{ === 13. 集中度计算 === }
集中度90: CONST((P90H - P90L) / (P90H + P90L) * 100), COLORCYAN, NODRAW;
{ === 14. 成交量分布直方图(全29格绘制,带N系数N)=== }
{ 绘图选择1:线段(默认) }
NOTEXTL1: PLOYLINE(CEILING(有效周期 * G1 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 0.5), COLORGRAY;
NOTEXTL2: PLOYLINE(CEILING(有效周期 * G2 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 1.5), COLORGRAY;
NOTEXTL3: PLOYLINE(CEILING(有效周期 * G3 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 2.5), COLORGRAY;
NOTEXTL4: PLOYLINE(CEILING(有效周期 * G4 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 3.5), COLORGRAY;
NOTEXTL5: PLOYLINE(CEILING(有效周期 * G5 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 4.5), COLORGRAY;
NOTEXTL6: PLOYLINE(CEILING(有效周期 * G6 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 5.5), COLORGRAY;
NOTEXTL7: PLOYLINE(CEILING(有效周期 * G7 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 6.5), COLORGRAY;
NOTEXTL8: PLOYLINE(CEILING(有效周期 * G8 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 7.5), COLORGRAY;
NOTEXTL9: PLOYLINE(CEILING(有效周期 * G9 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 8.5), COLORGRAY;
NOTEXTL10: PLOYLINE(CEILING(有效周期 * G10 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 9.5), COLORGRAY;
NOTEXTL11: PLOYLINE(CEILING(有效周期 * G11 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 10.5), COLORGRAY;
NOTEXTL12: PLOYLINE(CEILING(有效周期 * G12 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 11.5), COLORGRAY;
NOTEXTL13: PLOYLINE(CEILING(有效周期 * G13 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 12.5), COLORGRAY;
NOTEXTL14: PLOYLINE(CEILING(有效周期 * G14 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 13.5), COLORGRAY;
NOTEXTL15: PLOYLINE(CEILING(有效周期 * G15 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 14.5), COLORGRAY;
NOTEXTL16: PLOYLINE(CEILING(有效周期 * G16 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 15.5), COLORGRAY;
NOTEXTL17: PLOYLINE(CEILING(有效周期 * G17 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 16.5), COLORGRAY;
NOTEXTL18: PLOYLINE(CEILING(有效周期 * G18 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 17.5), COLORGRAY;
NOTEXTL19: PLOYLINE(CEILING(有效周期 * G19 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 18.5), COLORGRAY;
NOTEXTL20: PLOYLINE(CEILING(有效周期 * G20 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 19.5), COLORGRAY;
NOTEXTL21: PLOYLINE(CEILING(有效周期 * G21 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 20.5), COLORGRAY;
NOTEXTL22: PLOYLINE(CEILING(有效周期 * G22 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 21.5), COLORGRAY;
NOTEXTL23: PLOYLINE(CEILING(有效周期 * G23 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 22.5), COLORGRAY;
NOTEXTL24: PLOYLINE(CEILING(有效周期 * G24 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 23.5), COLORGRAY;
NOTEXTL25: PLOYLINE(CEILING(有效周期 * G25 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 24.5), COLORGRAY;
NOTEXTL26: PLOYLINE(CEILING(有效周期 * G26 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 25.5), COLORGRAY;
NOTEXTL27: PLOYLINE(CEILING(有效周期 * G27 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 26.5), COLORGRAY;
NOTEXTL28: PLOYLINE(CEILING(有效周期 * G28 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 27.5), COLORGRAY;
NOTEXTL29: PLOYLINE(CEILING(有效周期 * G29 / 总成交量) * N >= CURRBARSCOUNT, 历史最低 + 网格宽度 * 0.5), COLORGRAY;
{ 绘图选择2:柱状图 }
{
STICKLINE(CEILING(有效周期 * G1 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 0.5, 历史最高 - 网格宽度 * 0.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G2 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 1.5, 历史最高 - 网格宽度 * 1.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G3 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 2.5, 历史最高 - 网格宽度 * 2.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G4 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 3.5, 历史最高 - 网格宽度 * 3.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G5 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 4.5, 历史最高 - 网格宽度 * 4.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G6 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 5.5, 历史最高 - 网格宽度 * 5.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G7 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 6.5, 历史最高 - 网格宽度 * 6.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G8 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 7.5, 历史最高 - 网格宽度 * 7.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G9 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 8.5, 历史最高 - 网格宽度 * 8.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G10 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 9.5, 历史最高 - 网格宽度 * 9.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G11 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 10.5, 历史最高 - 网格宽度 * 10.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G12 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 11.5, 历史最高 - 网格宽度 * 11.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G13 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 12.5, 历史最高 - 网格宽度 * 12.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G14 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 13.5, 历史最高 - 网格宽度 * 13.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G15 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 14.5, 历史最高 - 网格宽度 * 14.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G16 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 15.5, 历史最高 - 网格宽度 * 15.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G17 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 16.5, 历史最高 - 网格宽度 * 16.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G18 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 17.5, 历史最高 - 网格宽度 * 17.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G19 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 18.5, 历史最高 - 网格宽度 * 18.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G20 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 19.5, 历史最高 - 网格宽度 * 19.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G21 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 20.5, 历史最高 - 网格宽度 * 20.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G22 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 21.5, 历史最高 - 网格宽度 * 21.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G23 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 22.5, 历史最高 - 网格宽度 * 22.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G24 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 23.5, 历史最高 - 网格宽度 * 23.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G25 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 24.5, 历史最高 - 网格宽度 * 24.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G26 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 25.5, 历史最高 - 网格宽度 * 25.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G27 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 26.5, 历史最高 - 网格宽度 * 26.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G28 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 27.5, 历史最高 - 网格宽度 * 27.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
STICKLINE(CEILING(有效周期 * G29 / 总成交量) * N >= CURRBARSCOUNT, 历史最高 - 网格宽度 * 28.5, 历史最高 - 网格宽度 * 28.5 - 网格宽度 * 0.6, 3, 0), COLORGRAY;
}
{ === 15. 状态面板数据显示 === } {
DRAWTEXT_FIX(ISLASTBAR, 0.01, 0.02, 0, STRCAT('90% 筹码集中度: ', STRCAT(CON2STR(集中度90, 2), '%'))), COLORCYAN;
DRAWTEXT_FIX(ISLASTBAR, 0.01, 0.06, 0, STRCAT('VAH (70%价值上限): ', CON2STR(VAH, 2))), COLORYELLOW;
DRAWTEXT_FIX(ISLASTBAR, 0.01, 0.10, 0, STRCAT('VAL (70%价值下限): ', CON2STR(VAL, 2))), COLORYELLOW;
DRAWTEXT_FIX(ISLASTBAR, 0.01, 0.14, 0, STRCAT('POC (控制价): ', CON2STR(POC, 2))), COLORRED;
DRAWTEXT_FIX(ISLASTBAR, 0.01, 0.18, 0, STRCAT('90%上限: ', CON2STR(P90H, 2))), COLORGREEN;
DRAWTEXT_FIX(ISLASTBAR, 0.01, 0.22, 0, STRCAT('90%下限: ', CON2STR(P90L, 2))), COLORGREEN;
};
{ === 16. 重新绘制 K 线 === }
TESTSKIP(衔印 = 0);
NOTEXT收盘: C, COLORC0C0C0, LINETHICK2;

未来函数检测结果如下:
该公式没有未来函数
定制指标公式、软件请联系QQ或微信同号:88652583
- QQ:88652583
- 邮箱:88652583@qq.com
- 工作时间:7:30-21:00
- 微信:88652583或扫描如下二维码
sitemap站点地图