金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 6511|回复: 14

多策略平仓提前

[复制链接]

226

主题

879

帖子

879

积分

等级: 免费版

注册:
2022-4-2
曾用名:
发表于 2022-11-24 15:11 | 显示全部楼层 |阅读模式
请教老师,为什么多策略组合代码导致平仓提前。策略a跟策略b出现的平仓信号都是在最后59分20秒平仓,策略组合却是在56分40秒平仓
策略组合代码如下

aholding:=stkindi('','策略acc',0,12,5);  //引用5秒周期上的策略a的holding值。
bholding:=stkindi('','策略b.cc',0,12,5);  //引用5秒周期上的策略b的holding值。

holding0:=aholding+bholding;//+cholding;
abholding0:=ref(holding0,1);
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;


截图202211241508467348.png
截图202211241508252314.png
截图202211241507502675.png
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-11-24 15:33 | 显示全部楼层
看你第三张图,你那个持仓是11,而平仓只是减仓一手。
在你前面的逻辑里 是有根据2个策略持仓做减仓操作的。

减多条件:=abholding0>0 and abholding1>0 and abholding0<abholding1;

而这个减仓逻辑 是前第二个K 到前第一个K 2个策略合并的仓位变少。但是看你这里的图 似乎 原始的2个策略在前面没有仓位操作。这种你要看看是否是数据量差异造成的。也就是说你加载的模型和调用模型可能使用的数据量有差异,造成了一些差异。


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

使用道具 举报

226

主题

879

帖子

879

积分

等级: 免费版

注册:
2022-4-2
曾用名:
 楼主| 发表于 2022-11-24 15:49 | 显示全部楼层
技术009 发表于 2022-11-24 15:33
看你第三张图,你那个持仓是11,而平仓只是减仓一手。
在你前面的逻辑里 是有根据2个策略持仓做减仓操作的 ...

不是很懂,怎么处理呀
回复

使用道具 举报

226

主题

879

帖子

879

积分

等级: 免费版

注册:
2022-4-2
曾用名:
 楼主| 发表于 2022-11-24 15:51 | 显示全部楼层
技术009 发表于 2022-11-24 15:33
看你第三张图,你那个持仓是11,而平仓只是减仓一手。
在你前面的逻辑里 是有根据2个策略持仓做减仓操作的 ...

在1分钟K线上是对的,换成5秒就这样了
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-11-24 15:52 | 显示全部楼层
你把这三个窗口的起始时间都设置成一样的试下呢。

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

使用道具 举报

226

主题

879

帖子

879

积分

等级: 免费版

注册:
2022-4-2
曾用名:
 楼主| 发表于 2022-11-24 15:53 | 显示全部楼层
技术009 发表于 2022-11-24 15:52
你把这三个窗口的起始时间都设置成一样的试下呢。

三个窗口是同一个,只是更换了策略
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-11-24 16:05 | 显示全部楼层
aholding:stkindi('','策略acc',0,12,5);  //引用5秒周期上的策略a的holding值。
bholding:stkindi('','策略b.cc',0,12,5);  //引用5秒周期上的策略b的holding值。

这2个变量你都输出出来。你看看直接加载和调用的  是否有差异。

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

使用道具 举报

226

主题

879

帖子

879

积分

等级: 免费版

注册:
2022-4-2
曾用名:
 楼主| 发表于 2022-11-24 16:09 | 显示全部楼层
是有差异的
截图202211241608016360.png
截图202211241608404608.png
截图202211241609176208.png
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-11-24 16:21 | 显示全部楼层
本帖最后由 技术009 于 2022-11-24 16:26 编辑

aholding:=stkindiex('','策略acc',0,12,5,DATACOUNT);  //引用5秒周期上的策略a的holding值。
bholding:=stkindiex('','策略b.cc',0,12,5,DATACOUNT);  //引用5秒周期上的策略b的holding值。

这样改下试下。直接传递当前数据量过去。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

226

主题

879

帖子

879

积分

等级: 免费版

注册:
2022-4-2
曾用名:
 楼主| 发表于 2022-11-24 16:41 | 显示全部楼层
技术009 发表于 2022-11-24 16:21
aholding:=stkindiex('','策略acc',0,12,5,DATACOUNT);  //引用5秒周期上的策略a的holding值。
bholding:= ...

还是不行,,,
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 06:36 , Processed in 0.180180 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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