金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 4563|回复: 13

为什么持仓CC与HOLDING不一致?

[复制链接]

52

主题

154

帖子

164

积分

等级: 已到期

注册:
2021-5-20
曾用名:
发表于 2021-12-16 16:11 | 显示全部楼层 |阅读模式

VARIABLE:SPCC1:=0,SPCC2:=0;
SSS1:=1;
SSS2:=2;
M3D:MA(CLOSE,20);
M3K:M3D-20*MINDIFF;
///系统一
IF SPCC1<0 AND CLOSE>M3D THEN BEGIN
                平空1:SELLSHORT(1,SPCC1,MARKET);
                SPCC1:=0;
                END
IF SPCC1>0 AND CLOSE<M3K THEN BEGIN
            平多1:SELL(1,SPCC1,MARKET);
            SPCC1:=0;
            END
IF SPCC1=0 THEN BEGIN
                IF CLOSE>M3D THEN BEGIN
                        开多1:BUY(1,SSS1,MARKET);
                        SPCC1:=SSS1;
                END
            IF CLOSE<M3K THEN BEGIN
                    开空1:BUYSHORT(1,SSS1,MARKET);
                    SPCC1:=-SSS1;
            END
END
///系统二
JCM1:=MA(CLOSE,10);
JCM2:=MA(CLOSE,40);
JCKD2:=CROSS(JCM1,JCM2);
JCKK2:=CROSS(JCM2,JCM1);
JCPK2:=CROSS(JCM1,JCM2);
JCPD2:=CROSS(JCM2,JCM1);
IF SPCC2<0 AND JCPK2 THEN BEGIN
                平空2:SELLSHORT(1,SPCC2,MARKET);
                SPCC2:=0;
                END
IF SPCC2>0 AND JCPD2 THEN BEGIN
            平多2:SELL(1,SPCC2,MARKET);
            SPCC2:=0;
            END
IF SPCC2=0 THEN BEGIN
                IF JCKD2   THEN BEGIN
                        开多2:BUY(1,SSS2,MARKET);
                        SPCC2:=SSS2;
                END
        IF JCKK2   THEN BEGIN
                    开空2:BUYSHORT(1,SSS2,MARKET);
                    SPCC2:=-SSS2;
            END
END
CC:SPCC1+SPCC2;//两个系统合并后的持仓
持仓:HOLDING,COLORGRAY,LINETHICK0;

回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-12-16 16:27 | 显示全部楼层
你全局变量的重置 和holding 并非一致。

比如说这里

IF SPCC2<0 AND JCPK2 THEN BEGIN
                平空2:SELLSHORT(1,SPCC2,MARKET);
                SPCC2:=0;
                END
平空2的触发实际上有个默认holding<0 的 spcc2并不是这样。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

52

主题

154

帖子

164

积分

等级: 已到期

注册:
2021-5-20
曾用名:
 楼主| 发表于 2021-12-16 16:28 | 显示全部楼层
请问要怎么修改呢?谢谢
回复

使用道具 举报

52

主题

154

帖子

164

积分

等级: 已到期

注册:
2021-5-20
曾用名:
 楼主| 发表于 2021-12-16 16:31 | 显示全部楼层
系统自带的持仓矫正功能是以HOLDING为准吧,但我的策略持仓实际上是CC=SPCC1+SPCC2。怎样使HOLDING与CC保持一致呢?
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-12-16 16:37 | 显示全部楼层
[PEL] 复制代码

VARIABLE:SPCC1:=0,SPCC2:=0;
SSS1:=1;
SSS2:=2;
M3D:MA(CLOSE,20);
M3K:M3D-20*MINDIFF;
///系统一
IF SPCC1<0 AND CLOSE>M3D  and holding<0  THEN BEGIN
                平空1:SELLSHORT(1,SPCC1,MARKET);
                SPCC1:=0;
                END
IF SPCC1>0 AND CLOSE<M3K and holding>0  THEN BEGIN
            平多1:SELL(1,SPCC1,MARKET);
            SPCC1:=0;
            END
IF SPCC1=0 THEN BEGIN
                IF CLOSE>M3D and holding=0  THEN BEGIN
                        开多1:BUY(1,SSS1,MARKET);
                        SPCC1:=SSS1;
                END
            IF CLOSE<M3K and holding=0  THEN BEGIN
                    开空1:BUYSHORT(1,SSS1,MARKET);
                    SPCC1:=-SSS1;
            END
END
///系统二
JCM1:=MA(CLOSE,10);
JCM2:=MA(CLOSE,40);
JCKD2:=CROSS(JCM1,JCM2);
JCKK2:=CROSS(JCM2,JCM1);
JCPK2:=CROSS(JCM1,JCM2);
JCPD2:=CROSS(JCM2,JCM1);
IF SPCC2<0 AND JCPK2 and holding<0 THEN BEGIN
                平空2:SELLSHORT(1,SPCC2,MARKET);
                SPCC2:=0;
                END
IF SPCC2>0 AND JCPD2 and holding>0 THEN BEGIN
            平多2:SELL(1,SPCC2,MARKET);
            SPCC2:=0;
            END
IF SPCC2=0 THEN BEGIN
                IF JCKD2 and holding=0   THEN BEGIN
                        开多2:BUY(1,SSS2,MARKET);
                        SPCC2:=SSS2;
                END
        IF JCKK2  and holding=0  THEN BEGIN
                    开空2:BUYSHORT(1,SSS2,MARKET);
                    SPCC2:=-SSS2;
            END
END
CC:SPCC1+SPCC2;//两个系统合并后的持仓
持仓:HOLDING,COLORGRAY,LINETHICK0;


所有全局变量操作位置 和下单语句条件必须完全一致才行。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

52

主题

154

帖子

164

积分

等级: 已到期

注册:
2021-5-20
曾用名:
 楼主| 发表于 2021-12-16 16:47 | 显示全部楼层
如果系统2开了两手多,系统一开了一手空,这个时候HOLDING>0对吧,
那么下面这个平空岂不是无法执行?
///系统一
IF SPCC1<0 AND CLOSE>M3D  and holding<0  THEN BEGIN
                平空1:SELLSHORT(1,SPCC1,MARKET);
                SPCC1:=0;
                END
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2021-12-16 16:57 | 显示全部楼层
在同一个策略中,图表是不支持双边持仓的。就是说系统1开了一手空之后,系统2是没法开多的,只有holding=0之后,才能开空。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

52

主题

154

帖子

164

积分

等级: 已到期

注册:
2021-5-20
曾用名:
 楼主| 发表于 2021-12-16 17:16 | 显示全部楼层
意思是不可以多个模型组合起来使用吗?
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2021-12-16 17:20 | 显示全部楼层
你这样合并策略的实际需求是什么呢?你完全可以拆成2个策略,在两个窗口上分别监控同一个品种就可以的。不同窗口之间的holding是不会互相影响的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

52

主题

154

帖子

164

积分

等级: 已到期

注册:
2021-5-20
曾用名:
 楼主| 发表于 2021-12-16 17:24 | 显示全部楼层
有一些共用模块,合并在一起会更有效率
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-15 06:15 , Processed in 0.189224 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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