金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 2859|回复: 8

请老师看看,平仓大于2%的计算是哪里出了问题?

[复制链接]

39

主题

147

帖子

147

积分

Rank: 2

等级: 标准版

注册:
2023-6-14
曾用名:
发表于 2023-7-10 00:29 | 显示全部楼层 |阅读模式
问题①:计算测试段内,每次平仓>=0.002的次数,修改了很多次,也计算不正确,请老师看看,我代码是哪里出问题了呢?
问题②:代码中,全局变量设定,VARIABLE:开仓价=0,平仓价=0,多单笔盈利率=0,空单笔盈利率=0,大于=0,小于=0,多成功次=0,空成功次=0;(我是把凡是涉及的变量全部都设成了全局变量,这样对不对呢?)
问题③:代码中,if语句中套用if,我的写法对不对?
全部代码如下,请老师改正下,谢谢!!

INPUT:NMIN(10,1,100,1);


//系统代码举例(可更换其他系统)
ma5:MA(c,5);
ma10:MA(C,10);
ma30:MA(c,30);


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


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


平多条件:(CROSS(ma5,ma10) OR 收盘平仓)and holding=1,COLORWHITE;
平空条件:(CROSS(ma5,ma10) OR 收盘平仓)and holding=-1;


//平多条件:CROSS(ma5,ma10) and holding=1;
//平空条件:CROSS(ma5,ma10) and holding=-1;




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


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


//平仓大于2%次数
VARIABLE:开仓价=0,平仓价=0,多单笔盈利率=0,空单笔盈利率=0,大于=0,小于=0,多成功次=0,空成功次=0;


开仓价:=ENTERPRICE;
平仓价:=EXITPRICE;
多单笔盈利率:=(平仓价-开仓价)/开仓价;
空单笔盈利率:=(开仓价-平仓价)/开仓价;




多大于:=多单笔盈利率>=0.002 ;
空大于:=空单笔盈利率>=0.002 ;




IF  平多条件 and holding=0  THEN
BEGIN
        if 多大于 THEN
        BEGIN
           多成功次:=多成功次+1;
        END
END


IF  平空条件 and holding=0  THEN
BEGIN
        if 空大于 THEN
        BEGIN
           空成功次:=空成功次+1;
        END
END


总成功次:=多成功次+空成功次;


//输出
多单笔盈利率1:多单笔盈利率;
空单笔盈利率1:空单笔盈利率;
多成功次1:多成功次;
空成功次1:空成功次;
总成功次1:空成功次;


AddTestReport('多成功次',多成功次);
AddTestReport('空成功次',空成功次);
AddTestReport('总成功次',总成功次);





截图202307100027488808.jpg
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2023-7-10 10:25 | 显示全部楼层
回测报告中的盈亏百分比是算上手续费的,你的这个指标中并没有算上手续费,统计的盈亏和回测中有偏差的。这个指标结构上使用variable全局变量来记录是没有问题的,if嵌套使用也没有问题。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

39

主题

147

帖子

147

积分

Rank: 2

等级: 标准版

注册:
2023-6-14
曾用名:
 楼主| 发表于 2023-7-10 15:02 | 显示全部楼层
技术010 发表于 2023-7-10 10:25
回测报告中的盈亏百分比是算上手续费的,你的这个指标中并没有算上手续费,统计的盈亏和回测中有偏差的。这 ...

嗯嗯,谢谢老师提醒,我把手续费滑点这些给忘记了,现在把手续费和滑点加入了进去,但是有两个问题。
问题①:全局变量去掉了开仓价和平仓价,但是计算结果好像没变化。请教老师,这里的开仓价和平仓价,设置普通变量和全局变量的区别是?
问题②:该代码,经查看,手续费和滑点,以及盈利点差都没有问题,,放在最小变动单位=1的品种上单笔盈利额也没问题,比如菜油连续。但是放在最小变动单位<>1的品种上,单笔盈利额就会出问题,比如铁矿连续。(但是手工计算好像是测试报告有问题,比如铁矿第一笔,开仓826.5,平仓828,单笔盈利=(826.5-828)*50-8.27-8.28-50-50=-191.55元,但是测试报告上面却显示-266.56元)

//平仓大于2%次数
//VARIABLE:开仓价=0,平仓价=0,多单笔盈利率=0,空单笔盈利率=0,大于=0,小于=0,多成功次=0,空成功次=0;
VARIABLE:多单笔盈利率=0,空单笔盈利率=0,大于=0,小于=0,多成功次=0,空成功次=0;//(为了方便看开仓价和平仓价显示,取掉了=,也取掉了该全局变量。)

开仓价:ENTERPRICE;
平仓价:EXITPRICE;

开仓手续费:GEGCHARGE(stklabel,开仓价,1,0);
平仓手续费:GEGCHARGE(stklabel,平仓价,1,1);

最小变动价位:=MINDIFF;
合约乘数:=MULTIPLIER;

开仓滑点:最小变动价位*滑点数;
平仓滑点:最小变动价位*滑点数;

多单笔盈利点数:(平仓价-开仓价-开仓滑点-平仓滑点);
空单笔盈利点数:(开仓价-平仓价-开仓滑点-平仓滑点);

多单笔盈利:多单笔盈利点数*最小变动价位*合约乘数-开仓手续费-平仓手续费;
空单笔盈利:空单笔盈利点数*最小变动价位*合约乘数-开仓手续费-平仓手续费;





截图202307101502082574.png
截图202307101500266975.png
回复

使用道具 举报

39

主题

147

帖子

147

积分

Rank: 2

等级: 标准版

注册:
2023-6-14
曾用名:
 楼主| 发表于 2023-7-10 15:06 | 显示全部楼层
技术010 发表于 2023-7-10 10:25
回测报告中的盈亏百分比是算上手续费的,你的这个指标中并没有算上手续费,统计的盈亏和回测中有偏差的。这 ...

以下代码是再次修改后的,情况也是一样

//VARIABLE:开仓价=0,平仓价=0,多单笔盈利率=0,空单笔盈利率=0,大于=0,小于=0,多成功次=0,空成功次=0;
VARIABLE:多单笔盈利率=0,空单笔盈利率=0,大于=0,小于=0,多成功次=0,空成功次=0;

开仓价:ENTERPRICE;
平仓价:EXITPRICE;

开仓手续费:GEGCHARGE(stklabel,开仓价,1,0);
平仓手续费:GEGCHARGE(stklabel,平仓价,1,1);

最小变动价位:MINDIFF;
合约乘数:MULTIPLIER;

开仓滑点成本:最小变动价位*合约乘数*滑点数;
平仓滑点成本:最小变动价位*合约乘数*滑点数;

多单笔盈利点数:(平仓价-开仓价);
空单笔盈利点数:(开仓价-平仓价);

多单笔盈利:多单笔盈利点数*最小变动价位*合约乘数-开仓手续费-平仓手续费-开仓滑点成本-平仓滑点成本;
空单笔盈利:空单笔盈利点数*最小变动价位*合约乘数-开仓手续费-平仓手续费-开仓滑点成本-平仓滑点成本;
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2023-7-10 15:22 | 显示全部楼层
1、你的这个开仓价和平仓价没必要设置全局变量,直接用函数获取就可以了,你用函数获取了,再赋值给全局变量,效果一样的,所以你这个开平仓价格用不用全局变量没有差别的。
2、计算盈利是不需要乘最小变动价位的啊,只需要乘合约单位就可以的啊。
3、你的这个思路逻辑是没有错的,但是要做到和回测报单一样,那比较难,因为报告中可能还会有其他的一些我们不清楚的数据处理步骤。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

39

主题

147

帖子

147

积分

Rank: 2

等级: 标准版

注册:
2023-6-14
曾用名:
 楼主| 发表于 2023-7-10 15:38 | 显示全部楼层
技术010 发表于 2023-7-10 15:22
1、你的这个开仓价和平仓价没必要设置全局变量,直接用函数获取就可以了,你用函数获取了,再赋值给全局变 ...

嗯嗯,谢谢老师,我去掉了最小变动价位,
多单笔盈利:多单笔盈利点数*合约乘数-开仓手续费-平仓手续费-开仓滑点成本-平仓滑点成本;
空单笔盈利:空单笔盈利点数*合约乘数-开仓手续费-平仓手续费-开仓滑点成本-平仓滑点成本;
这下计算结果正确了。
但是只是第一笔正确,后面全部错误,我估计应该是全局变量那里出了问题
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2023-7-10 15:44 | 显示全部楼层
那就需要在图表上输出调试每个变量了,看变量的值分别是多少了,看是否有必要使用全局变量。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

39

主题

147

帖子

147

积分

Rank: 2

等级: 标准版

注册:
2023-6-14
曾用名:
 楼主| 发表于 2023-7-10 15:58 | 显示全部楼层
技术010 发表于 2023-7-10 15:44
那就需要在图表上输出调试每个变量了,看变量的值分别是多少了,看是否有必要使用全局变量。

测试了,刚才是我看错了,看成了累积盈亏那一列,,,
取掉了最小变动价位后,计算全部正确,,,
谢谢老师,我是刚开始学习编程,要不是你提醒,我还不知道啥时候才能发现是多乘了最小变动价位这里出了问题,,谢谢老师!!!
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2023-7-10 16:03 | 显示全部楼层
不客气,是你问题描述的清楚,这样我们也便于快速的定位问题,也能提供较好的解决方案。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 04:39 , Processed in 0.164254 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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