TBQ简语言策略编辑编译后提示
请确认\'CLUSTER LOW\"是一个变量名或者它没有和其他名称重复!
请确认\'CLUSTER MEDIUM\'是一个变量名或者它没有和其他名称重复!
请确认\'CLUSTER HIGH\'是一个变量名或者它没有和其他名称重复!
部分代码如下
//---A1-1步骤,计算ATR
// 计算 TR(真实波幅)
TR := MAX(MAX(HIGH - LOW, ABS(HIGH - REF(CLOSE,1))), ABS(LOW - REF(CLOSE,1)));
// 计算 ATR(平均真实波幅)
ATR := SMA(TR, 14, 1); // 14表示ATR的周期,可以根据需要调整
//---A1-2步骤:初始化聚类中心
// 初始化三个聚类中心,假设基于ATR的不同波动性
// 低波动性聚类中心
CLUSTER_LOW := 1.0;
// 中等波动性聚类中心
CLUSTER_MEDIUM := 2.5;
// 高波动性聚类中心
CLUSTER_HIGH := 5.0;
//---A1-3步骤:竞争学习和更新聚类中心
// 输入当前 ATR 值
ATR_VALUE := ATR; // 当前 ATR
// 计算 ATR 值与每个聚类中心的距离
DIST_LOW := ABS(ATR_VALUE - CLUSTER_LOW);
DIST_MEDIUM := ABS(ATR_VALUE - CLUSTER_MEDIUM);
DIST_HIGH := ABS(ATR_VALUE - CLUSTER_HIGH);
// RPCL 学习率
LEARNING_RATE := 0.05; // 吸引力学习率
REPULSION_RATE := 0.02; // 排斥力学习率
// 竞争学习:选择最近的聚类中心并更新
IF DIST_LOW < DIST_MEDIUM AND DIST_LOW < DIST_HIGH THEN
BEGIN
// 更新低波动性聚类中心;2024年10月08日23:59分修改至此。
CLUSTER_LOW := CLUSTER_LOW + LEARNING_RATE * (ATR_VALUE - CLUSTER_LOW);
// 排斥其他聚类中心
CLUSTER_MEDIUM := CLUSTER_MEDIUM - REPULSION_RATE * (ATR_VALUE - CLUSTER_MEDIUM);
CLUSTER_HIGH := CLUSTER_HIGH - REPULSION_RATE * (ATR_VALUE - CLUSTER_HIGH);
END
进一步尝试:
测试1:CLUSTER_LOW := 1.0;、CLUSTER_LOW := CLUSTER_LOW + LEARNING_RATE * (ATR_VALUE - CLUSTER_LOW);算不算重复定义?也试过中间变量AAA来赋值;试过改变变量名称CLUSTER_LOW改为BDL等等;也试过全局变量VARIABLE;都不能解决问题。
问题1:以下变量初始化/赋新值,是否在TBQ简语言中支持?
CLUSTER_LOW := 1.0;
是 初始化 操作,将 CLUSTER_LOW
赋值为 1.0。此时,CLUSTER_LOW
被定义并获得初始值。CLUSTER_LOW := CLUSTER_LOW + LEARNING_RATE * (ATR_VALUE - CLUSTER_LOW);
是 更新 操作,基于 CLUSTER_LOW
的当前值进行计算,并将结果重新赋值给 CLUSTER_LOW
。这不是重新定义变量,而是更新其值。