
等级: 新手上路
- 注册:
- 2025-7-19
- 曾用名:
|
// 60分钟MACD计算
data1_diff := data1_ema12 - data1_ema26, NODRAW;
data1_rdiff := if(大周期为4时 = 0, "macd_kdj数据调用.rdiff#MIN60"(n, p1, p2, s, p, m), "macd_kdj数据调用.rdiff#MULTIHOUR"(n, p1, p2, s, p, m)), NODRAW;
// ==================== 4小时MACD计算(内部计算,不使用外部调用) ====================
// 定义变量
VARIABLE:EMA12_4H=0, EMA26_4H=0, FirstBar=1, Prev_h4_diff=0;
// 获取4小时周期的收盘价
C_4H := CALLSTOCK('', VTCLOSE, 4, 0);
// 初始化或计算EMA
IF FirstBar = 1 THEN
BEGIN
EMA12_4H := C_4H;
EMA26_4H := C_4H;
FirstBar := 0;
END
ELSE
BEGIN
// 计算EMA12
k12_4H := 2 / (S + 1);
EMA12_4H := C_4H * k12_4H + EMA12_4H * (1 - k12_4H);
// 计算EMA26
k26_4H := 2 / (P + 1);
EMA26_4H := C_4H * k26_4H + EMA26_4H * (1 - k26_4H);
END;
// 计算DIFF值
h4_diff := EMA12_4H - EMA26_4H;
// 保存前值(避免在IF中使用REF)
IF BARPOS > 1 THEN
h4_rdiff := Prev_h4_diff;
ELSE
h4_rdiff := h4_diff;
// 更新前值
Prev_h4_diff := h4_diff;
我上面一个公式是在15分图表看60分实时DIFF数据的公式片段,是正确的,下面是想在15分看4小时DIFF数据,错在哪里怎么写?
|
|