金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: 103789

这里计算亏损和输出为0是什么原因

[复制链接]

4

主题

32

帖子

32

积分

Rank: 4

等级: 专业版

注册:
2025-7-4
曾用名:
 楼主| 发表于 2025-11-20 11:45 | 显示全部楼层
资深技术05 发表于 2025-11-20 10:58
你就基于前面那个循环的范例做处理就行了。你在循环中用函数TORDERPRICE 读取第I次的价格 也就行了。最后一 ...

看这样如何?
//用循环来计算连续止损时,累计的亏损和第一笔止损的开仓价
i:=1;
ksh:=0;
scj:=0;
while i>0 do
BEGIN
        if         tNUMPROFIT(1)>0 then
        begin
                ksh:=0;
                i:=0;
        end
       
        if tNUMPROFIT(i)<0 then
        begin
                ksh:=ksh+tNUMPROFIT(i);
                scj:=tenterprice;
                i:=i+1;
                continue;
        END
break;       
END
亏损和:ksh,linethick0;
止损第一笔开仓价:scj,linethick0;
回复

使用道具 举报

2

主题

5787

帖子

5787

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-11-20 13:23 | 显示全部楼层
本帖最后由 资深技术05 于 2025-11-20 13:28 编辑

这种代码效果,只有跑下来才知道对不对。直接后台加调试输出做个验证就行了。

//用循环来计算连续止损时,累计的亏损和第一笔止损的开仓价
i:=1;
ksh:=0;
scj:=0;
while i>0 do
BEGIN   
        if tNUMPROFIT(i)<0 then
        begin
                ksh:=ksh+tNUMPROFIT(i);
                scj:=TORDERPRICE(1,i);
                i:=i+1;
                continue;
        END
break;      
END
亏损和:ksh,linethick0;
止损第一笔开仓价:scj,linethick0;


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

x
回复

使用道具 举报

4

主题

32

帖子

32

积分

Rank: 4

等级: 专业版

注册:
2025-7-4
曾用名:
 楼主| 发表于 2025-11-24 11:47 | 显示全部楼层
资深技术05 发表于 2025-11-20 13:23
这种代码效果,只有跑下来才知道对不对。直接后台加调试输出做个验证就行了。

//用循环来计算连续止损时 ...

我现在用的这段,但用debugfile输出时ksh还是0:
if tholding>0 and tNUMPROFIT(1)<0 and islastbar then DEBUGFILE('C:\TEST.TXT','亏损和为%.2f',const(ksh));
回复

使用道具 举报

2

主题

5787

帖子

5787

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-11-24 13:56 | 显示全部楼层
你指标模式是序列还 是逐K ?如果不是逐K,换成逐K。另外先直接无条件输出,不要追加条件。
回复

使用道具 举报

4

主题

32

帖子

32

积分

Rank: 4

等级: 专业版

注册:
2025-7-4
曾用名:
 楼主| 发表于 2025-11-24 15:01 | 显示全部楼层
资深技术05 发表于 2025-11-24 13:56
你指标模式是序列还 是逐K ?如果不是逐K,换成逐K。另外先直接无条件输出,不要追加条件。

目前是序列,好的我换成逐k试下
回复

使用道具 举报

4

主题

32

帖子

32

积分

Rank: 4

等级: 专业版

注册:
2025-7-4
曾用名:
 楼主| 发表于 2025-11-24 15:14 | 显示全部楼层
另外,很奇怪的是本地预警交易里有开仓记录,帐户里也有持仓,但用tholding取仓位时,输出来tholding为0,是因为将输出语句放在开仓语句之前的原因吗?
if islastbar then DEBUGFILE('C:\TEST.TXT',stklabel&' 当前持仓='&numtostr(tholding,0)&' 前开价='&numtostr(tenterprice,2)&' 持仓均价='&numtostr(tavgenterprice,2)&' sxzzzq='&numtostr(sxzzzq,2)&' 当前价='&numtostr(c,2)& ' zsj='&numtostr(zsj,2),0);

输出结果显示:
2025-11-24 14:57:05.347    159575 当前持仓=0 前开价=1.33 持仓均价=0.00 sxzzzq=94.00 当前价=1.36 zsj=1.38
回复

使用道具 举报

2

主题

5787

帖子

5787

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-11-24 15:26 | 显示全部楼层
这个是可用持仓。你先输出 再开仓,那肯定是0 了。
回复

使用道具 举报

4

主题

32

帖子

32

积分

Rank: 4

等级: 专业版

注册:
2025-7-4
曾用名:
 楼主| 发表于 2025-11-24 16:16 | 显示全部楼层
资深技术05 发表于 2025-11-24 15:26
这个是可用持仓。你先输出 再开仓,那肯定是0 了。

好的,我把位置先更改一下
回复

使用道具 举报

4

主题

32

帖子

32

积分

Rank: 4

等级: 专业版

注册:
2025-7-4
曾用名:
 楼主| 发表于 2025-11-25 16:31 | 显示全部楼层
资深技术05 发表于 2025-11-20 13:23
这种代码效果,只有跑下来才知道对不对。直接后台加调试输出做个验证就行了。

//用循环来计算连续止损时 ...

需要在不同的位置用到首次止损的开仓价scj,和连续止损的总和ksh,那只能把它拆分成两个循环了,但这样会不会影响运行的效率,因为是用在ETF和股票上的,加载的品种特别多
回复

使用道具 举报

2

主题

5787

帖子

5787

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-11-25 16:37 | 显示全部楼层
这个循环可以不用一直进行的。你可以使用全局变量做一个开关,仅仅在平仓后开启 。有平仓未成交失业可以暂停执行。 然后在开仓后也关闭。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-27 12:52 , Processed in 0.114057 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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