// 简称: GB5FZYJ
// 名称: 顾比5分钟预警
// 类别: 公式应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Vars
// ===== 5分钟周期变量 =====
Series<Numeric> LC;
Series<Numeric> RSI;
Series<Numeric> E3;
Series<Numeric> E5;
Series<Numeric> E8;
Series<Numeric> E10;
Series<Numeric> E12;
Series<Numeric> E15;
Series<Numeric> E30;
Series<Numeric> E35;
Series<Numeric> E40;
Series<Numeric> E45;
Series<Numeric> E50;
Series<Numeric> E60;
Series<Numeric> H11;
Series<Numeric> L1;
Series<Numeric> H22;
Series<Numeric> L2;
Series<Numeric> L1_Pre;
Series<Numeric> H22_Pre;
// ===== 日线变量 =====
Series<Numeric> Day_RSI;
Series<Numeric> Day_LC;
Series<Numeric> Day_H11;
Series<Numeric> Day_L1;
Series<Numeric> Day_H22;
Series<Numeric> Day_L2;
Series<Numeric> Day_L2_Pre; // ✅ 新增
Series<Numeric> Day_H22_Pre; // ✅ 新增
// ===== 小时变量 =====
Series<Numeric> Hour_H11;
Series<Numeric> Hour_L1;
Series<Numeric> Hour_H22;
Series<Numeric> Hour_L2;
Series<Numeric> Hour_L1_Pre; // ✅ 新增
Series<Numeric> Hour_H22_Pre; // ✅ 新增
// ===== 条件变量 =====
Bool DayLong;
Bool DayShort;
Bool HourLong;
Bool HourShort;
Events
onBar(ArrayRef<Integer> indexs)
{
// ============================================================
// 1. 先计算 5分钟 (Data0) 的数据
// ============================================================
LC :=Ref(Close, 1);
RSI := SMA(Max(Close - LC, 0), 14, 1) / SMA(Abs(Close - LC), 14, 1) * 100;
E3 := EMA(Close, 3);
E5 := EMA(Close, 5);
E8 := EMA(Close, 8);
E10 := EMA(Close, 10);
E12 := EMA(Close, 12);
E15 := EMA(Close, 15);
H11 := Max(Max(Max(Max(Max(E3, E5), E8), E10), E12), E15);
L1 := Min(Min(Min(Min(Min(E3, E5), E8), E10), E12), E15);
E30 := EMA(Close, 30);
E35 := EMA(Close, 35);
E40 := EMA(Close, 40);
E45 := EMA(Close, 45);
E50 := EMA(Close, 50);
E60 := EMA(Close, 60);
H22 := Max(Max(Max(Max(Max(E30, E35), E40), E45), E50), E60);
L2 := Min(Min(Min(Min(Min(E30, E35), E40), E45), E50), E60);
// 保存上一根K线的值,用于判断交叉
L1_Pre := Ref(L1, 1);
H22_Pre := Ref(H22, 1);
// ============================================================
// 2. 计算 日线 (Data2) 的数据 (跨周期引用)
// ============================================================
Day_LC := Ref(Data2.Close, 1); // ✅ 修正:用 Ref() 代替 [1]
Day_RSI := SMA(Max(Data2.Close - Day_LC, 0), 14, 1) / SMA(Abs(Data2.Close - Day_LC), 14, 1) * 100;
// 日线 EMA
Day_H11 := Max(Max(Max(Max(Max(EMA(Data2.Close, 3), EMA(Data2.Close, 5)), EMA(Data2.Close, 8)), EMA(Data2.Close, 10)), EMA(Data2.Close, 12)), EMA(Data2.Close, 15));
Day_L1 := Min(Min(Min(Min(Min(EMA(Data2.Close, 3), EMA(Data2.Close, 5)), EMA(Data2.Close, 8)), EMA(Data2.Close, 10)), EMA(Data2.Close, 12)), EMA(Data2.Close, 15));
Day_H22 := Max(Max(Max(Max(Max(EMA(Data2.Close, 30), EMA(Data2.Close, 35)), EMA(Data2.Close, 40)), EMA(Data2.Close, 45)), EMA(Data2.Close, 50)), EMA(Data2.Close, 60));
Day_L2 := Min(Min(Min(Min(Min(EMA(Data2.Close, 30), EMA(Data2.Close, 35)), EMA(Data2.Close, 40)), EMA(Data2.Close, 45)), EMA(Data2.Close, 50)), EMA(Data2.Close, 60));
// 日线交叉判断
Day_L2_Pre := Ref(Day_L2, 1);
Day_H22_Pre := Ref(Day_H22, 1);
// ============================================================
// 3. 计算 1小时 (Data1) 的数据 (跨周期引用)
// ============================================================
Hour_H11 := Max(Max(Max(Max(Max(EMA(Data1.Close, 3), EMA(Data1.Close, 5)), EMA(Data1.Close, 8)), EMA(Data1.Close, 10)), EMA(Data1.Close, 12)), EMA(Data1.Close, 15));
Hour_L1 := Min(Min(Min(Min(Min(EMA(Data1.Close, 3), EMA(Data1.Close, 5)), EMA(Data1.Close, 8)), EMA(Data1.Close, 10)), EMA(Data1.Close, 12)), EMA(Data1.Close, 15));
Hour_H22 := Max(Max(Max(Max(Max(EMA(Data1.Close, 30), EMA(Data1.Close, 35)), EMA(Data1.Close, 40)), EMA(Data1.Close, 45)), EMA(Data1.Close, 50)), EMA(Data1.Close, 60));
Hour_L2 := Min(Min(Min(Min(Min(EMA(Data1.Close, 30), EMA(Data1.Close, 35)), EMA(Data1.Close, 40)), EMA(Data1.Close, 45)), EMA(Data1.Close, 50)), EMA(Data1.Close, 60));
// 小时交叉判断
Hour_L1_Pre := Ref(Hour_L1, 1);
Hour_H22_Pre := Ref(Hour_H22, 1);
// ============================================================
// 4. 判断多空条件
// ============================================================
DayLong := RSI < 50 AND Close < Day_L2;
DayShort := RSI > 50 AND Close > Day_H22;
HourLong := RSI < 50 AND Close < Hour_L2;
HourShort := RSI > 50 AND Close > Hour_H22;
// ============================================================
// 5. 开仓预警输出 (Alert)
// ============================================================
// 开多预警:日线多 + 小时多 + L1上穿H22
If (DayLong AND HourLong AND CrossOver(L1, H22)) Then
Begin
Alert("【开多预警】日线+小时共振,L1上穿H22!");
End; // ✅ 修正:加分号
// 开空预警:日线空 + 小时空 + H11下穿L2
If (DayShort AND HourShort AND CrossUnder(H11, L2)) Then
Begin
Alert("【开空预警】日线+小时共振,H11下穿L2!");
End
}
编译公式,显示LC :=Ref(Close, 1);缺少分号。试过多种办法,无解。请赐教,谢谢!
这段代码是AI写的吗?不符合TB的语法啊