金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 11907|回复: 30

不同周期策略组合的净头寸开平仓

[复制链接]

69

主题

238

帖子

248

积分

Rank: 2

等级: 标准版

注册:
2022-6-27
曾用名:
发表于 2022-12-7 15:16 | 显示全部楼层 |阅读模式
不同周期策略组合的净头寸开平仓老师能帮忙看下哪里有问题。引用输出来的结果不对
aholding:stkindi('','策略a.cc',0,1,0);  //引用1分钟周期上的策略a的holding值。
bholding:stkindi('','策略b.cc',0,4);  //引用30分钟周期上的策略b的holding值。
Cholding0:stkindi('','策略c.cc',0,21,3);  //引用3分钟周期上的策略c的holding值。
Cholding:ref(Cholding0,1);
abholding0:=aholding+bholding+cholding;
abholding1:=ref(abholding0,1);

平空开多:=abholding0>0 and abholding1<0;
开多条件:=abholding0>0 and abholding1=0;
加多条件:=abholding0>0 and abholding1>0 and abholding0>abholding1;
减多条件:=abholding0>0 and abholding1>0 and abholding0<abholding1;
清多条件:=abholding0=0 and abholding1>0;

平多开空:=abholding0<0 and abholding1>0;
开空条件:=abholding0<0 and abholding1=0;
加空条件:=abholding0<0 and abholding1<0 and abholding0<abholding1;
减空条件:=abholding0<0 and abholding1<0 and abholding0>abholding1;
清空条件:=abholding0=0 and abholding1<0;

//多头开平仓

if 平空开多 then begin        
        sellshort (平空开多,abholding1,thisclose);
        buy       (平空开多,abholding0,thisclose);
end

开多:buy(开多条件,abs(abholding0),thisclose);
加多:buy(加多条件,abs(abholding0-abholding1),thisclose);
减多:sell(减多条件,abs(abholding0-abholding1),thisclose);
清多:sell(清多条件,abs(abholding0-abholding1),thisclose);


//空头开平仓

if 平多开空 then begin        
        sell      (平多开空,abholding1,thisclose);
        buyshort  (平多开空,abholding0,thisclose);
end
开空:buyshort(开空条件,abs(abholding0),thisclose);
加空:buyshort(加空条件,abs(abholding0-abholding1),thisclose);
减空:sellshort(减空条件,abs(abholding0-abholding1),thisclose);
清空:sellshort(清空条件,abs(abholding0-abholding1),thisclose);


当前持仓:holding,colorgray,linethick0;
当前资产:asset,noaxis,colorgray;



回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2022-12-7 15:22 | 显示全部楼层
holding的值是和使用的数据量有关系的啊,如果你要对比各个窗口上单独策略的持仓,那要保证引用时使用的数据量和图表上相应的数据量是一致的啊,可以使用stkindiex指定足够的数据量。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

69

主题

238

帖子

248

积分

Rank: 2

等级: 标准版

注册:
2022-6-27
曾用名:
 楼主| 发表于 2022-12-7 17:31 | 显示全部楼层
技术010 发表于 2022-12-7 15:22
holding的值是和使用的数据量有关系的啊,如果你要对比各个窗口上单独策略的持仓,那要保证引用时使用的数 ...

嗯嗯,就是在对比各个窗口的结果发现不对。用stkindiex引用指定数据后没有持仓了
回复

使用道具 举报

38

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-12-7 19:33 | 显示全部楼层
您用stkindiex指定了多少根k线数据。一般情况下你要满足一个循环周期的计算(一开一平占用的范围)。


公式引用其实也等于把一个公式单独运行在一个新的k线窗格中。和每个窗格中的公式一样,都是公式副本。副本之间都是独立的个体,所以才会产生差异。如果只是为了对比。可以在图表中确定好数量后,在指定对应的数据引用结果。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

69

主题

238

帖子

248

积分

Rank: 2

等级: 标准版

注册:
2022-6-27
曾用名:
 楼主| 发表于 2022-12-7 20:27 | 显示全部楼层
技术006 发表于 2022-12-7 19:33
您用stkindiex指定了多少根k线数据。一般情况下你要满足一个循环周期的计算(一开一平占用的范围)。

那直接用aholding:stkindi('','策略a.cc',0,1,0);  //引用1分钟周期上的策略a的holding值。
bholding:stkindi('','策略b.cc',0,4);  //引用30分钟周期上的策略b的holding值。
Cholding0:stkindi('','策略c.cc',0,21,3);  //引用3分钟周期上的策略c的holding值。
Cholding:ref(Cholding0,1);计算的结果也不对呀
回复

使用道具 举报

38

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-12-7 20:41 | 显示全部楼层
结果没有对错之分。不同的数据量holding就可能会不一样。尤其是某些指标对数据量更为敏感的情况下。

你所谓的不对,是你拿引用结果(另一个隐藏窗格运行的结果)和你能看到的窗格的对比。他们数据量不一样,是造成不一致的最根本的原因。

想一致,图表要锁定k线数量,让其和引用的数据完全一致,才是对比的基础前提条件
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

69

主题

238

帖子

248

积分

Rank: 2

等级: 标准版

注册:
2022-6-27
曾用名:
 楼主| 发表于 2022-12-7 20:41 | 显示全部楼层
技术006 发表于 2022-12-7 19:33
您用stkindiex指定了多少根k线数据。一般情况下你要满足一个循环周期的计算(一开一平占用的范围)。

这边有多策略组合的模板吗
回复

使用道具 举报

69

主题

238

帖子

248

积分

Rank: 2

等级: 标准版

注册:
2022-6-27
曾用名:
 楼主| 发表于 2022-12-7 20:48 | 显示全部楼层
技术006 发表于 2022-12-7 20:41
结果没有对错之分。不同的数据量holding就可能会不一样。尤其是某些指标对数据量更为敏感的情况下。

你 ...

组合回测的结果跟三个策略单独测再放在一块的多策略差距有些大
回复

使用道具 举报

38

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-12-7 21:06 | 显示全部楼层
必然会存在差距,因为两者之间的交易逻辑存在差异。你1楼的代码是通过净持仓进行的交易,。如果3个策略分别运行时他们之间就没有相应的关联,各自独立进行交易。

采用特定值分析:
例如,2个指标,一个开空,一个开多,独立进行时就是分别开仓。如果采用净持仓的形式,那么仓位就是0.
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

69

主题

238

帖子

248

积分

Rank: 2

等级: 标准版

注册:
2022-6-27
曾用名:
 楼主| 发表于 2022-12-7 21:18 | 显示全部楼层
技术006 发表于 2022-12-7 21:06
必然会存在差距,因为两者之间的交易逻辑存在差异。你1楼的代码是通过净持仓进行的交易,。如果3个策略分别 ...

就是要仓位变成0,关键是组合的净持仓算错了;
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-29 17:09 , Processed in 0.098872 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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