金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3660|回复: 18

简化

[复制链接]

507

主题

2975

帖子

2985

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
发表于 2023-3-29 08:03 | 显示全部楼层 |阅读模式
DATATYPE=2 AND(STKLABEL='SA01' OR STKLABEL='SA05' OR STKLABEL='SA09');
我想在这个基础上加上其他周期 第一种肯定没问题,第二种这样是不是一样的效果?
1:DATATYPE=1 AND(STKLABEL='SA01' OR STKLABEL='SA05' OR STKLABEL='SA09')  OR  DATATYPE=2 AND(STKLABEL='SA01' OR STKLABEL='SA05' OR STKLABEL='SA09') OR  DATATYPE=3 AND(STKLABEL='SA01' OR STKLABEL='SA05' OR STKLABEL='SA09');
2:(DATATYPE=1 or DATATYPE=2 or DATATYPE=3) AND (STKLABEL='SA01' OR STKLABEL='SA05' OR STKLABEL='SA09');
回复

使用道具 举报

507

主题

2975

帖子

2985

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2023-3-29 08:13 | 显示全部楼层
上面这个我测试好像是没问题。我用下面这个作为收盘平仓,在5分钟周期,下面的N是1分钟,那么他会不会在2:59分平仓,还是说要提前一个K。另外下面的值需要在 2:59分平仓,要怎么写;

INPUT:N(1,1,200,1);//N是提前的分钟数
MARK:=0;//用于记录当前是否满足某个收盘K结束前N分钟的变量

FOR I=0 TO 3 DO  //循环遍历每个收盘时间来进行判断。这里可以调整I起始位置 来控制需要处理的收盘节点。
BEGIN
abb:=timetot0(CLOSETIME(I))-time0,NODRAW;//当前K线时间距离收盘K线结束倒计时,在一个K上对应一个固定值
abb3:=timetot0(CLOSETIME(I))-timetot0(dynainfo(207)),NODRAW;//当前时间(当前的北京时间)距离收盘K时间 ,   在最新K上会一直变动。因为这个返回的是具体秒数
IF         (abb<N*60 and abb>=0 and (not(ISLASTBAR))) or (ISLASTBAR and  abb3>=0 and abb3<N*60) THEN MARK:=1;
END


if MARK AND 白银5分钟 then //兼顾实际交易时候的信号和历史回测信号
begin
sell(holding>0,holding,market);
sellshort(holding<0,holding,market);      
DRAWICON(1,h,1);
end


回复

使用道具 举报

507

主题

2975

帖子

2985

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2023-3-29 08:22 | 显示全部楼层
100020061 发表于 2023-3-29 08:13
上面这个我测试好像是没问题。我用下面这个作为收盘平仓,在5分钟周期,下面的N是1分钟,那么他会不会在2: ...

上述问题,
2:我这里的 剩余周期数=0 指的是今日最后一个K,N=1 指的是最后一分钟。笑脸是在最后一个K上,但是平仓是不是会在最后一分钟平仓还不知道。
2: 白银5分钟 这种会在每个收盘时间点的最后一个K的上有笑脸。
3: 另外我加了3个全局变量重置为0的语句,这样对不对,因为这里平仓为0了


if MARK AND 白银5分钟 then //兼顾实际交易时候的信号和历史回测信号
begin
sell(holding>0,holding,market);
sellshort(holding<0,holding,market);      
DRAWICON(1,h,1);

CC:=0;
        多止损1:=0;
    空止损1:=0;
end
if MARK AND  剩余周期数=0 then //兼顾实际交易时候的信号和历史回测信号
begin
sell(holding>0,holding,market);
sellshort(holding<0,holding,market);      
DRAWICON(1,h,1);
CC:=0;
        多止损1:=0;
    空止损1:=0;
end
if MARK AND NEARESTHOLIDAY =1 AND 剩余周期数=0 then //兼顾实际交易时候的信号和历史回测信号
begin
sell(holding>0,holding,market);
sellshort(holding<0,holding,market);      
DRAWICON(1,h,1);
CC:=0;
        多止损1:=0;
    空止损1:=0;
end
回复

使用道具 举报

507

主题

2975

帖子

2985

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2023-3-29 08:49 | 显示全部楼层
100020061 发表于 2023-3-29 08:22
上述问题,
2:我这里的 剩余周期数=0 指的是今日最后一个K,N=1 指的是最后一分钟。笑脸是在最后一个K ...

两张图。1:剩余周期=0的时候N =1  意思就是最后一个K的最后一分钟平仓,尿素 在前面的时间点都是对的,出现了笑脸,但是在昨天有持仓的情况下没有笑脸,没有平仓。2:剩余周期=1的时候N =6  意思就是倒数第2个K的的最后一分钟平仓,尿素在这里准确位置出现了笑脸并且平仓。
我想知道出现第一种的情况会是什么原因造成的。





截图202303290845549721.png
截图202303290845472528.png
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-3-29 09:03 | 显示全部楼层
“1:DATATYPE=1 AND(STKLABEL='SA01' OR STKLABEL='SA05' OR STKLABEL='SA09')  OR  DATATYPE=2 AND(STKLABEL='SA01' OR STKLABEL='SA05' OR STKLABEL='SA09') OR  DATATYPE=3 AND(STKLABEL='SA01' OR STKLABEL='SA05' OR STKLABEL='SA09');
2:(DATATYPE=1 or DATATYPE=2 or DATATYPE=3) AND (STKLABEL='SA01' OR STKLABEL='SA05' OR STKLABEL='SA09');”

你这里 品种判断 做一次不就OK了。没必要在代码留写那么多完全一样的品种判断代码的。都是冗余代码,可读性很差,维护都没法维护。

你这一串代码 拎出来就2句:
isSA:(STKLABEL='SA01' OR STKLABEL='SA05' OR STKLABEL='SA09');
isCyl:DATATYPE<=3;


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

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-3-29 09:08 | 显示全部楼层
“我用下面这个作为收盘平仓,在5分钟周期,下面的N是1分钟,那么他会不会在2:59分平仓,还是说要提前一个K。另外下面的值需要在 2:59分平仓,要怎么写;”

1.你注意看代码,N是分钟不假,实际上是拿秒换算来的,后面判断地方都是N*60。也就是它实际控制的精度是秒级别。前提是你是在轮训模式下运行的。
2. “2:59分平仓”那不就是收盘前1分钟平仓了。 那个代码模式是兼容不同收盘时间的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-3-29 09:17 | 显示全部楼层
你把模型持仓 就是holding 输出看下。正常情况下 输出笑脸了,那个地方代码是执行到了的。
没出现信号,说明那里的持仓那时候应该是0.  直接输出数值看结果,不要做推断,以实际数值为准。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

507

主题

2975

帖子

2985

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2023-3-29 09:25 | 显示全部楼层
技术009 发表于 2023-3-29 09:17
你把模型持仓 就是holding 输出看下。正常情况下 输出笑脸了,那个地方代码是执行到了的。
没出现信号,说 ...

现在开盘了,开盘前这里的平空和笑脸没有,开盘后出现了,而且平空信号出现在今日的第一个K,说明没有在最后一个K的最后一分钟平仓,而是把信号把执行权交给了下个周期的开盘价执行的;
截图202303290924238633.png
回复

使用道具 举报

507

主题

2975

帖子

2985

积分

Rank: 2

等级: 标准版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2023-3-29 09:29 | 显示全部楼层
100020061 发表于 2023-3-29 09:25
现在开盘了,开盘前这里的平空和笑脸没有,开盘后出现了,而且平空信号出现在今日的第一个K,说明没有在 ...

market 前面是用这个 我现在改成 marketR ,但是这个也是收盘价执行的意思,按模型应该是要收盘前1分钟执行才对,这里很这个函数是否有冲突,在中间执行不了?
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-3-29 09:35 | 显示全部楼层
图表模型上都是走完K模式,回测本身就是走完K机制。

上面那个提前N分钟下单,本身后面有一句注释://兼顾实际交易时候的信号和历史回测信号

提前N秒 这种实际效果 在轮训模式下是可行的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 06:07 , Processed in 0.189176 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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