金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 2136|回复: 4

持仓天数,,我修改成空仓天数,但是计算结果成了交易总天数?请老师看看

[复制链接]

39

主题

147

帖子

147

积分

Rank: 2

等级: 标准版

注册:
2023-6-14
曾用名:
发表于 2023-7-7 12:42 | 显示全部楼层 |阅读模式
以下代码是老师前面帮我写的持仓总天数,,,我修改成了空仓总天数,但是计算结果成了交易总天数?请老师帮我看看是哪里出了问题


INPUT:NMIN(10,1,100,1);
VARIABLE:ct:=0;
VARIABLE:ct2:=0;


ma1:=MA(c,20);
ma2:=MA(C,260);
ma3:=MA(c,50);

HD1:=HOLDING;//计算持仓时间时要用到


//交易条件
开多条件:=CROSS(ma1,ma2)and holding=0;
开空条件:=CROSS(ma2,ma1)and holding=0;

收盘平仓:=TIME>=CLOSETIME(0)-NMIN*100;//收盘平仓

平多条件:=(CROSS(ma3,ma1) OR 收盘平仓)and holding=1;
平空条件:=(CROSS(ma1,ma3) OR 收盘平仓)and holding=-1;
//平多条件:=CROSS(ma3,ma1) and holding=1;
//平空条件:=CROSS(ma1,ma3) and holding=-1;

//交易系统
开多:BUY(开多条件 ,1,MARKET);
开空:BUYSHORT(开空条件,1,MARKET);


平多:SELL(平多条件,1,MARKET);
平空:SELLSHORT(平空条件,1,MARKET);

//计算持仓时间
HD2:=HOLDING;
if count((HD1+HD2)<>0,TODAYBAR)>=1 and time=CLOSETIME(0) then ct:=ct+1;
持仓天数:ct;//平仓当天最后持仓是0 ,所以补上1


//**********************输出
AddTestReport('持仓天数',持仓天数);

//计算空仓时间
HD2:=HOLDING;
if count((HD1+HD2)=0,TODAYBAR)>=1 and time=CLOSETIME(0) then ct:=ct+1;//修改了这句count((HD1+HD2)<>0,为=0.
空仓总天数:ct;//平仓当天最后持仓是0 ,所以补上1


//**********************输出
AddTestReport('空仓总天数',空仓总天数);


回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-7-7 12:55 | 显示全部楼层
HD2:=HOLDING;
if all((HD1+HD2)=0,TODAYBAR) and time=CLOSETIME(0) then ct2:=ct2+1;//修改了这句count((HD1+HD2)<>0,为=0.
空仓总天数:ct2;//平仓当天最后持仓是0 ,所以补上1

1.计算逻辑不对,原先那个方式不是简单改下就可以了
2.你全局变量也不能2个逻辑公用一个呀啊。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

39

主题

147

帖子

147

积分

Rank: 2

等级: 标准版

注册:
2023-6-14
曾用名:
 楼主| 发表于 2023-7-7 13:47 | 显示全部楼层
技术009 发表于 2023-7-7 12:55
HD2:=HOLDING;
if all((HD1+HD2)=0,TODAYBAR) and time=CLOSETIME(0) then ct2:=ct2+1;//修改了这句count( ...

不是的,我是用单独的一个公式来计算,代码是这样的,,,请教老师,我还需要修改什么地方,请老师帮我改改,,谢谢了

INPUT:NMIN(10,1,100,1);
VARIABLE:ct:=0;
VARIABLE:ct2:=0;

ma1:=MA(c,20);
ma2:=MA(C,260);
ma3:=MA(c,50);

HD1:=HOLDING;//计算持仓时间时要用到

//交易条件
开多条件:=CROSS(ma1,ma2)and holding=0;
开空条件:=CROSS(ma2,ma1)and holding=0;

收盘平仓:=TIME>=CLOSETIME(0)-NMIN*100;//收盘平仓

平多条件:=(CROSS(ma3,ma1) OR 收盘平仓)and holding=1;
平空条件:=(CROSS(ma1,ma3) OR 收盘平仓)and holding=-1;
//平多条件:=CROSS(ma3,ma1) and holding=1;
//平空条件:=CROSS(ma1,ma3) and holding=-1;


//交易系统
开多:BUY(开多条件 ,1,MARKET);
开空:BUYSHORT(开空条件,1,MARKET);

平多:SELL(平多条件,1,MARKET);
平空:SELLSHORT(平空条件,1,MARKET);


//计算空仓总天数时间
HD2:=HOLDING;
if count((HD1+HD2)=0,TODAYBAR)>=1 and time=CLOSETIME(0) then ct:=ct+1;
空仓总天数:ct;//平仓当天最后持仓是0 ,所以补上1

//**********************输出
AddTestReport('空仓总天数',空仓总天数);
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-7-7 14:02 | 显示全部楼层
我不是贴了代码了吗。。。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

39

主题

147

帖子

147

积分

Rank: 2

等级: 标准版

注册:
2023-6-14
曾用名:
 楼主| 发表于 2023-7-7 14:22 | 显示全部楼层
技术009 发表于 2023-7-7 14:02
我不是贴了代码了吗。。。

哦,看到了,谢谢老师
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 04:52 , Processed in 0.146340 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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