请高手指点错在哪里,如何修改。
下面的通达信公式代码报错信息为“错误句 :
详细信息 : 单词最大字符数不得超过 16 个
错误起始位置 : 0 ; 长度: 0”,请高手帮忙指点如何改正。
代码如下:
{通达信K线包含关系指标公式(优化版)}
 
{判断两根K线是否存在包含关系}
// 返回值:1表示非包含且向上,-1表示非包含且向下,0表示包含
FUNCTION ISCONTAIN(H1, L1, H2, L2) {
IF (H1 >= H2 AND L1 >= L2) {
RETURN 1;
} ELSE IF (L1 <= L2 AND H1 <= H2) {
RETURN -1;
} ELSE {
RETURN 0;
}
}
 
{确定合并方向}
// 返回值:1表示向上合并,-1表示向下合并
FUNCTION MERGEDIRECTION(H1, L1, H2, L2) {
IF (H1 >= H2 AND L1 >= L2) {
RETURN 1;
} ELSE IF (L1 <= L2 AND H1 <= H2) {
RETURN -1;
} ELSE {
RETURN 0;
}
}
 
{合并K线}
// 返回值:合并后的高点和低点
FUNCTION MERGEKLINE(H1, L1, H2, L2, DIRECTION) {
IF (DIRECTION = 1) {
HIGH_MERGED = MAX(H1, H2);
LOW_MERGED = MAX(L1, L2);
} ELSE {
HIGH_MERGED = MIN(H1, H2);
LOW_MERGED = MIN(L1, L2);
}
RETURN (HIGH_MERGED, LOW_MERGED);
}
 
{主逻辑}
N = BARSCOUNT(CLOSE);
X_HIGH = HIGH;
X_LOW = LOW;
FOR I = 2 TO N {
CONTAIN_FLAG = ISCONTAIN(X_HIGH[I], X_LOW[I], X_HIGH[I - 1], X_LOW[I - 1]);
IF (CONTAIN_FLAG = 0) {
DIRECTION = MERGEDIRECTION(X_HIGH[I - 1], X_LOW[I - 1], X_HIGH[I - 2], X_LOW[I - 2]);
(X_HIGH[I], X_LOW[I]) = MERGEKLINE(X_HIGH[I], X_LOW[I], X_HIGH[I - 1], X_LOW[I - 1], DIRECTION);
}
}
 
{判断合并后的K线方向}
DIRECTION = IF(X_HIGH >= REF(X_HIGH, 1) AND X_LOW >= REF(X_LOW, 1), 1, IF(X_LOW <= REF(X_LOW, 1) AND X_HIGH <= REF(X_HIGH, 1), -1, 0));
{判断是否存在包含关系}
CONTAIN_RELATION = CONTAIN_FLAG = 0;
{判断是否为合并K线}
MERGED_KLINE = CONTAIN_RELATION AND (X_HIGH < REF(HIGH, 1) AND X_LOW > REF(LOW, 1) OR (X_HIGH > REF(HIGH, 1) AND X_LOW < REF(LOW, 1))) != 1;
 
{绘制K线}
STICKLINE(DIRECTION + 1 AND (X_HIGH < REF(HIGH, 1) AND X_LOW > REF(LOW, 1) OR (X_HIGH > REF(HIGH, 1) AND X_LOW < REF(LOW, 1))) != 1, X_HIGH, X_LOW, 1.8, 0), COLORMAGENTA;
STICKLINE(DIRECTION - 1 AND (X_HIGH < REF(HIGH, 1) AND X_LOW > REF(LOW, 1) OR (X_HIGH > REF(HIGH, 1) AND X_LOW < REF(LOW, 1))) != 1, X_HIGH, X_LOW, 1.8, 0), COLORBLUE;
STICKLINE(MERGED_KLINE = 1, X_HIGH, X_LOW, 0.08, 0), COLORWHITE;
2025-02-15
浏览1031
登录后评论
9
分享