金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 777|回复: 1

用AI写的PEL语言的缠论指标第一条就有问题,求助

[复制链接]

1

主题

3

帖子

3

积分

Rank: 1

等级: 新手上路

注册:
2025-1-30
曾用名:
发表于 2025-1-30 21:13 | 显示全部楼层 |阅读模式
//@Name=ChanLun_Ultimate
//@Title=缠论终极版
INPUT:
    KXNum(NumericSimple, 200, 50, 5000, 50, "分析K线数量"),
    MinFormPeriod(NumericSimple, 3, 1, 20, 1, "分型最小形成周期"),
    ShowBiZZ(BooleanSimple, True, 0, 1, 1, "显示笔中枢");

VARIABLE:
    // K线处理
    MergedHigh[5000](0),
    MergedLow[5000](0),
    UpDownFlag(0),

    // 分型系统
    TopList[5000](0),
    BottomList[5000](0),
    ValidTop[5000](0),
    ValidBottom[5000](0),
    TopFormPeriod[5000](0),
    BottomFormPeriod[5000](0),
    TopStartBar(-1),
    BottomStartBar(-1),

    // 笔系统
    BiHigh[1000](0),
    BiLow[1000](0),
    BiStartBar[1000](0),
    BiEndBar[1000](0),
    BiCount(0),
    LastTop(0),
    LastBottom(0),

    // 中枢系统
    ZZTop[200](0),
    ZZBot[200](0),
    ZZStartBar[200](0),
    ZZEndBar[200](0),
    ZZCount(0),
    BiZZTop[500](0),
    BiZZBot[500](0),
    BiZZStartBar[500](0),
    BiZZEndBar[500](0),
    BiZZCount(0);

//======================================================================
// 初始化首根K线
//======================================================================
MergedHigh[0] = HIGH[0];
MergedLow[0] = LOW[0];

//======================================================================
// K线包含处理(Bar索引从1开始)
//======================================================================
FOR i = 1 TO KXNum-1 BEGIN
    // 方向判断(严格比较收盘价)
    IF CLOSE[i] > CLOSE[i-1] THEN UpDownFlag = 1;
    IF CLOSE[i] < CLOSE[i-1] THEN UpDownFlag = -1;

    // 处理包含关系
    IF (HIGH[i] <= MergedHigh[i-1] AND LOW[i] >= MergedLow[i-1]) OR
       (HIGH[i] >= MergedHigh[i-1] AND LOW[i] <= MergedLow[i-1]) THEN
    BEGIN
        MergedHigh[i] = IIF(UpDownFlag == 1,
                          MAX(HIGH[i], MergedHigh[i-1]),
                          MIN(HIGH[i], MergedHigh[i-1]));
        MergedLow[i] = IIF(UpDownFlag == 1,
                         MAX(LOW[i], MergedLow[i-1]),
                         MIN(LOW[i], MergedLow[i-1]));
    END
    ELSE BEGIN
        MergedHigh[i] = HIGH[i];
        MergedLow[i] = LOW[i];
    END;
END;

//======================================================================
// 分型识别(Bar索引从2开始)
//======================================================================
FOR i = 2 TO KXNum-1 BEGIN
    // 顶分型(中间K线最高)
    IF MergedHigh[i-1] > MergedHigh[i] AND
       MergedHigh[i-1] > MergedHigh[i-2] THEN
    BEGIN
        IF TopStartBar == -1 THEN TopStartBar = i-2;
        IF MergedLow[i-1] > MergedLow[i-2] THEN BEGIN
            TopList[i-1] = 1;
            TopFormPeriod[i-1] = (i-1) - TopStartBar + 1;
            TopStartBar = -1;
        END;
    END ELSE TopStartBar = -1;

    // 底分型(中间K线最低)
    IF MergedLow[i-1] < MergedLow[i] AND
       MergedLow[i-1] < MergedLow[i-2] THEN
    BEGIN
        IF BottomStartBar == -1 THEN BottomStartBar = i-2;
        IF MergedHigh[i-1] < MergedHigh[i-2] THEN BEGIN
            BottomList[i-1] = 1;
            BottomFormPeriod[i-1] = (i-1) - BottomStartBar + 1;
            BottomStartBar = -1;
        END;
    END ELSE BottomStartBar = -1;
END;

//======================================================================
// 有效分型过滤
//======================================================================
FOR i = 1 TO KXNum-1 BEGIN
    // 顶分型过滤
    IF TopList[i] == 1 THEN BEGIN
        ValidTop[i] = IIF((MergedHigh[i] > REF(MergedHigh, 1)) AND
                         (TopFormPeriod[i] >= MinFormPeriod), 1, 0);
        IF ValidTop[i] == 1 THEN
            DRAWTEXT(Barpos[i], MergedHigh[i]*1.002,
                    STR('顶(', TopFormPeriod[i], ')'), COLORRED, 12);
    END;

    // 底分型过滤
    IF BottomList[i] == 1 THEN BEGIN
        ValidBottom[i] = IIF((MergedLow[i] < REF(MergedLow, 1)) AND
                            (BottomFormPeriod[i] >= MinFormPeriod), 1, 0);
        IF ValidBottom[i] == 1 THEN
            DRAWTEXT(Barpos[i], MergedLow[i]*0.998,
                    STR('底(', BottomFormPeriod[i], ')'), COLORGREEN, 12);
    END;
END;

//======================================================================
// 笔识别与绘制
//======================================================================
FOR i = 1 TO KXNum-1 BEGIN
    // 上涨笔(底->顶)
    IF ValidTop[i] == 1 AND LastBottom > 0 THEN BEGIN
        IF BiCount < 999 THEN BEGIN
            BiHigh[BiCount] = MergedHigh[i];
            BiLow[BiCount] = MergedLow[LastBottom];
            BiStartBar[BiCount] = LastBottom;
            BiEndBar[BiCount] = i;
            DRAWLINE(Barpos[LastBottom], MergedLow[LastBottom],
                    Barpos[i], MergedHigh[i], COLORRED, 1, 1);
            BiCount = BiCount + 1;
        END;
        LastTop = i;
    END;

    // 下跌笔(顶->底)
    IF ValidBottom[i] == 1 AND LastTop > 0 THEN BEGIN
        IF BiCount < 999 THEN BEGIN
            BiHigh[BiCount] = MergedHigh[LastTop];
            BiLow[BiCount] = MergedLow[i];
            BiStartBar[BiCount] = LastTop;
            BiEndBar[BiCount] = i;
            DRAWLINE(Barpos[LastTop], MergedHigh[LastTop],
                    Barpos[i], MergedLow[i], COLORGREEN, 1, 1);


回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2025-1-31 10:38 | 显示全部楼层
这不是PEL的语法结构,自然无法再PEL中编译执行。PEL属于内置的量化脚本语言。大语言模型主要还是针对c、py等开发语言的生成。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-7-17 19:02 , Processed in 0.155946 second(s), 28 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表