金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3749|回复: 5

debugfile输出值疑问

[复制链接]

40

主题

94

帖子

94

积分

等级: 免费版

注册:
2022-5-23
曾用名:
发表于 2022-9-2 11:05 | 显示全部楼层 |阅读模式

请教:我编写的后台有开仓后,记录持仓最大盈利幅度、最大亏损幅度,输出的结果为什么是周期数-1,最大盈利-1.#这样奇怪的符号 ?帮忙看一下哪里写错了

//******代码部分*********
if tbuyholdingex('','',1)<>0 then   
maxprofit:=(hi-TENTERPRICE)/TENTERPRICE*100; //开仓以来多单最大利润率
maxloss:=(lo-TENTERPRICE)/TENTERPRICE*100;  //开仓以来多单最大浮亏
if tsellholdingex('','',1)<>0 then  
maxprofit:=(lo-TENTERPRICE)/TENTERPRICE*100; //开仓以来空单最大利润率
maxloss:=(hi-TENTERPRICE)/TENTERPRICE*100; //开仓以来空单最大浮亏


DEBUGFILE('E:\FEIDAOTEST.TXT',stklabel+'周期数:%.2f',TENTERBARS(1));
DEBUGFILE('E:\FEIDAOTEST.TXT',stklabel+'曾经最大盈利幅度:%.3f',maxprofit);
DEBUGFILE('E:\FEIDAOTEST.TXT',stklabel+'曾经最大浮亏:%.3f',maxloss);

//debugfile输出结果部分
2022-09-01 14:08:45.639    EG00周期数:-1.00
2022-09-01 14:08:45.642    EG00曾经最大盈利幅度:-1.#QO
2022-09-01 14:08:45.643    EG00曾经最大浮亏:-1.#QO

回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-9-2 11:09 | 显示全部楼层
那个是无效值的意思。你代码用在哪里?你该不是加载到图表上运行的吧?
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

40

主题

94

帖子

94

积分

等级: 免费版

注册:
2022-5-23
曾用名:
 楼主| 发表于 2022-9-2 11:21 | 显示全部楼层
不是图表,是后台程序,是不是因为还没有成交记录,所以返回来的值是无效的,才这样显示。同一个品种后面有成交记录后的显示变成下面的样子了,那还有一个疑问:最大浮亏我记录的是最大浮损值,为什么下面返回的是正数0.145 ?
2022-09-02 09:18:20.799    EG00周期数:22.00
2022-09-02 09:18:20.802    EG00总仓位为:1
2022-09-02 09:18:20.803    EG00曾经最大盈利幅度:-1.#QO
2022-09-02 09:18:20.803    EG00曾经最大浮亏:0.145
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-9-2 11:27 | 显示全部楼层
1.必须监控里有记录,函数才能正常有返回值。
2. 你这个要看算法了。你上面几个变量不知道你怎么定义的。、你输出HI的值看下。
3.TENTERPRICE是最近一次开仓价。它没有分多空,所以你这里如果开多也开空,那么估摸你这个算法是肯定有问题的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

40

主题

94

帖子

94

积分

等级: 免费版

注册:
2022-5-23
曾用名:
 楼主| 发表于 2022-9-2 11:38 | 显示全部楼层
hi、lo是记录开仓后最高、最低价格,那我下面计算最大浮盈、最大浮亏的算法有问题吗? 你说的第三点,我想了一下确实如果多空双向开仓的话,会有问题,有没有函数可以区分多空开仓的价格?

//计算开仓以来最大盈利、最大浮亏
hi:=HHV(H,TENTERBARS(1));
lo:=LLV(L,TENTERBARS(1));
if tbuyholdingex('','',1)<>0 then   
maxprofit:=(hi-TENTERPRICE)/TENTERPRICE*100; //开仓以来多单最大利润率
maxloss:=(lo-TENTERPRICE)/TENTERPRICE*100;  //开仓以来多单最大浮亏
if tsellholdingex('','',1)<>0 then  
maxprofit:=(lo-TENTERPRICE)/TENTERPRICE*100; //开仓以来空单最大利润率
maxloss:=(hi-TENTERPRICE)/TENTERPRICE*100; //开仓以来空单最大浮亏
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-9-2 13:25 | 显示全部楼层
1.可用TORDERPRICE 获取前面N次的开仓价格,区分多空 开平
2.还有 你这里:
if 条件  then
begin

end
你这上面的操作,都没有用begin  end  括起来吗?你没括起来,只有那个利润率是在条件下执行的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-21 17:18 , Processed in 0.110008 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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