金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 519|回复: 19

求老师帮我写一段代码

[复制链接]

1

主题

10

帖子

10

积分

Rank: 1

等级: 新手上路

注册:
2025-2-14
曾用名:
发表于 2025-2-14 11:30 | 显示全部楼层 |阅读模式


目的是实现:
当日收盘价高于上一根日K线的最高价时,K线为红色,
直到日收盘价低过上一根日K线的最低价时,K线为绿色:


备注:在五分钟的基础上显示时,盘中突破和跌破时,颜色立即显示。
如果盘中假突破和假跌破,则恢复原始状态颜色。
(比如,上日最高价是100,盘中价格高过100时K线画红色,盘中价格从100上方回落到100下方:则判断为假突破,返回原绿色,反之下跌也如此)

回复

使用道具 举报

38

主题

9415

帖子

9425

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-2-14 11:58 | 显示全部楼层
STICKLINE(CLOSE>ref(high,1),CLOSE,OPEN,15,1,colorred);
STICKLINE(CLOSE<ref(low,1),CLOSE,OPEN,15,1,colorgreen);
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

10

帖子

10

积分

Rank: 1

等级: 新手上路

注册:
2025-2-14
曾用名:
 楼主| 发表于 2025-2-14 13:31 | 显示全部楼层
老师没明白我的意思,是突破高点后,只要没有跌破前低,一直保持颜色
回复

使用道具 举报

38

主题

9415

帖子

9425

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-2-14 13:33 | 显示全部楼层

STICKLINE(CLOSE>ref(high,1),CLOSE,OPEN,15,1,colorred);
STICKLINE(1,CLOSE,OPEN,15,1,colorred);
STICKLINE(CLOSE<ref(low,1),CLOSE,OPEN,15,1,colorgreen);
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

10

帖子

10

积分

Rank: 1

等级: 新手上路

注册:
2025-2-14
曾用名:
 楼主| 发表于 2025-2-14 13:34 | 显示全部楼层
下面是我现在的代码,求老师帮忙修改


// 定义跨周期变量
VARIABLE: 前日最高价 := 0, 前日最低价 := 0;  // 前一日日线最高价、最低价
VARIABLE: 当日收盘价 := 0;                // 当日日线收盘价
VARIABLE: 状态颜色 := 0;                 // 0=默认,1=红,-1=绿

NN1:=BARSLAST(DATE<>REF(DATE,1))+1;
NNC1:=COUNTSIG(BK,NN1)+COUNTSIG(SK,NN1)+COUNTSIG(BPK,NN1)+COUNTSIG(SPK,NN1);//表示当日的开仓次数
DNN:=BARSLAST(DATE<>REF(DATE,1));
DO:=REF(O,DNN),DOT,COLORWHITE;//D开盘价
DG:=REF(HHV(H,NN1),NN1),DOT,COLORMAGENTA;//昨日最高价格
DD:=REF(LLV(L,NN1),NN1),DOT,COLORGREEN;//昨日最低价格

DQS:BARSLAST(C>DG)<BARSLAST(C<DD),COLORWHITE;//收盘突破上日高点 定义日涨势定K
WQS:BARSLAST(CROSS(C,WG))<BARSLAST(CROSSDOWN(C,WD)),COLORYELLOW;//周强势
// 获取前一日日线数据
前日最高价 := DG;    // 前一日最高价
前日最低价 := DD;     // 前一日最低价
当日收盘价 := CLOSE  ;           // 当日日线收盘价

// 判断是否为日线收盘时刻(最后一根5分钟K线)
IS_DAY_CLOSE := TIME >= 1455 AND TIME<2100 ;

// 日线收盘时更新状态
IF IS_DAY_CLOSE THEN BEGIN
    IF 当日收盘价 > 前日最高价 THEN
        状态颜色 := 1;   // 日线确认突破,锁定红色
    ELSE IF 当日收盘价 < 前日最低价 THEN
        状态颜色 := -1;  // 日线确认跌破,锁定绿色
END



SCDG:BARSLAST(CROSS(C,DG));//记录上一次上穿前高到现在的周期数
XCDD:BARSLAST(CROSSDOWN(C,DD));//记录上一次下穿前低到现在的周期数
// 盘中实时逻辑(非日线收盘时生效)
IF IS_DAY_CLOSE=0 THEN BEGIN
    // 突破前日高点:立即显示红色
    IF CLOSE > 前日最高价 THEN
        状态颜色 := 1;
    // 跌破前日低点:立即显示绿色
    ELSE IF CLOSE < 前日最低价  THEN
        状态颜色 := -1;
    // 假突破修正:恢复前一次有效状态
    ELSE IF DQS=1 THEN
        状态颜色 := REF(状态颜色, XCDD);
        ELSE IF DQS=0 THEN
        状态颜色 := REF(状态颜色, XCDD);



END
//状态颜色2:状态颜色;
// 根据状态绘制K线颜色
STICKLINE(DQS=1, O, C, 3, 0), COLORRED;    // 红色实体

STICKLINE(DQS=0, O, C, 3, 0), COLORGREEN; // 绿色实体
回复

使用道具 举报

38

主题

9415

帖子

9425

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-2-14 13:39 | 显示全部楼层
// 定义跨周期变量
VARIABLE: 前日最高价 := 0, 前日最低价 := 0;  // 前一日日线最高价、最低价
VARIABLE: 当日收盘价 := 0;                // 当日日线收盘价
VARIABLE: 状态颜色 := 0;                 // 0=默认,1=红,-1=绿

NN1:=BARSLAST(DATE<>REF(DATE,1))+1;
NNC1:=count(TOTALTRADE,NN1);//表示当日的开仓次数
DNN:=BARSLAST(DATE<>REF(DATE,1));
DO:=REF(O,DNN),DOT,COLORWHITE;//D开盘价
DG:=REF(HHV(H,NN1),NN1),DOT,COLORMAGENTA;//昨日最高价格
DD:=REF(LLV(L,NN1),NN1),DOT,COLORGREEN;//昨日最低价格

DQS:BARSLAST(C>DG)<BARSLAST(C<DD),COLORWHITE;//收盘突破上日高点 定义日涨势定K
WQS:BARSLAST(CROSS(C,WG))<BARSLAST(CROSS(WD,C)),COLORYELLOW;//周强势
// 获取前一日日线数据
前日最高价 := DG;    // 前一日最高价
前日最低价 := DD;     // 前一日最低价
当日收盘价 := CLOSE  ;           // 当日日线收盘价

// 判断是否为日线收盘时刻(最后一根5分钟K线)
IS_DAY_CLOSE := TIME >= 1455 AND TIME<2100 ;

// 日线收盘时更新状态
IF IS_DAY_CLOSE THEN BEGIN
    IF 当日收盘价 > 前日最高价 THEN
        状态颜色 := 1;   // 日线确认突破,锁定红色
    ELSE IF 当日收盘价 < 前日最低价 THEN
        状态颜色 := -1;  // 日线确认跌破,锁定绿色
END



SCDG:BARSLAST(CROSS(C,DG));//记录上一次上穿前高到现在的周期数
XCDD:BARSLAST(CROSS(DD,DD));//记录上一次下穿前低到现在的周期数
// 盘中实时逻辑(非日线收盘时生效)
temp:=REF(状态颜色, XCDD);
IF IS_DAY_CLOSE=0 THEN BEGIN
    // 突破前日高点:立即显示红色
    IF CLOSE > 前日最高价 THEN
        状态颜色 := 1;
    // 跌破前日低点:立即显示绿色
    ELSE IF CLOSE < 前日最低价  THEN
        状态颜色 := -1;
    // 假突破修正:恢复前一次有效状态
    ELSE IF DQS=1 THEN
        状态颜色 := temp;
        ELSE IF DQS=0 THEN
        状态颜色 := temp;



END
//状态颜色2:状态颜色;
// 根据状态绘制K线颜色
STICKLINE(DQS=1, O, C, 3, 0), COLORRED;    // 红色实体

STICKLINE(DQS=0, O, C, 3, 0), COLORGREEN; // 绿色实体
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

38

主题

9415

帖子

9425

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-2-14 13:40 | 显示全部楼层
wg和wd没有定义

其他一些最好用户自己试着修改,你这个程序的逻辑这边不是很清楚,只能遇到不对的地方这边直接改函数
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

10

帖子

10

积分

Rank: 1

等级: 新手上路

注册:
2025-2-14
曾用名:
 楼主| 发表于 2025-2-14 14:00 | 显示全部楼层
逻辑是:
当日收盘价高于上一根日K线的最高价时,K线为红色,
直到”日收盘价低过上一根日K线的最低价时,K线为绿色:

原本这个逻辑,一句话可以实现
就是
DQS:BARSLAST(C>上日高点)<BARSLAST(C<上日低点),COLORWHITE;

现在的问题就是,如果盘在假突破,刚好突破了上日高点,价格又跌回来,怎么处理这个假突破
回复

使用道具 举报

38

主题

9415

帖子

9425

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-2-14 14:01 | 显示全部楼层


STICKLINE(CLOSE>ref(high,1),CLOSE,OPEN,15,1,colorred);
STICKLINE(1,CLOSE,OPEN,15,1,colorred);
STICKLINE(CLOSE<ref(low,1),CLOSE,OPEN,15,1,colorgreen);

那就是这个啊
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

10

帖子

10

积分

Rank: 1

等级: 新手上路

注册:
2025-2-14
曾用名:
 楼主| 发表于 2025-2-14 14:09 | 显示全部楼层
技术008 发表于 2025-2-14 14:01
STICKLINE(CLOSE>ref(high,1),CLOSE,OPEN,15,1,colorred);
STICKLINE(1,CLOSE,OPEN,15,1,colorred);
...

老师没理解我的意思,你这个要时刻高于昨天最高价
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-14 13:43 , Processed in 0.253306 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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