金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 5135|回复: 6

回测时图表上的开仓手数不对

[复制链接]

31

主题

106

帖子

116

积分

Rank: 2

等级: 标准版

注册:
2022-6-27
曾用名:
发表于 2022-9-19 22:43 | 显示全部楼层 |阅读模式
一、我在代码里约定当Rest_Limit=1开启资金限制,此时只能使用10000这么多的资金,代码如下:////////////////////////////////////////////每手开仓成本        
Lots_Cost:(MULTIPLIER*Close*TACCOUNT(41));


if TACCOUNT(20)>0 then //登录了交易账户(模拟/实际交易账户),获取账户的流动资产(动态权益)值
        begin
                if Rest_Limit=0 then //未开启资金限制
                        begin Chart_Asset:=TACCOUNT(20); end
                                else //开启资金限制
                        begin Chart_Asset:=10000; end        
        end
                else //未登录任何账户(模拟/实际交易账户)
        begin
                if Rest_Limit=0 then  //未开启资金限制
                        begin Chart_Asset:=ASSET; end //PEL编辑框内,费率设置里的虚拟资产值
                                else //Rest_Limit=1开启资金限制
                        begin Chart_Asset:=10000; end //限制可开仓金额设置为固定值=Rest_Funds*10000        
        end


二、同时在Rest_Limit=1时,限制了开仓手数是按照限定的资金量10000进行计算的

////////////////////////////////////////////开仓手数计算  
if Rest_Limit=0 then //未启用资金限制
        begin
                if Per_Lots=0 then //未启用百分比
                        begin Ex_Lots:=Fix_Lots; end //固定手数开仓
                                else //百分比手数开仓
                        begin Ex_Lots:=INTPART(Chart_Asset*Per_Lots*0.01/Lots_Cost); end        
        end
                else //Rest_Limit=1 启用资金限制
        begin
             Ex_Lots:=INTPART(10000/Lots_Cost); end //按照资金限制的最大量开仓                
        end



三、出现的问题是,当我设定参数Rest_Limit的值为1时,图表上输出的值是可用资金值是10000,这是正确的,但十字光标对应的这一笔开仓,在图表K线开仓的标记显示的手数不是按这个10000,也就是并没有按照  Ex_Lots:=INTPART(10000/Lots_Cost);  进行计算开仓手数1手,而是2手

问题仅仅这一笔没有按照Ex_Lots:=INTPART(10000/Lots_Cost);  进行计算开仓手数
图上左右所有的开仓,都是按照Ex_Lots:=INTPART(10000/Lots_Cost); 这个计算出的正确的开仓手数1手,唯独那一笔是2手

不知道问题出在哪里?请帮看看,谢谢!






补充内容 (2022-9-19 22:53):
另发现,修改PEL编辑框内-->属性-->费率设置里面的初始资金值,十字光标这一笔的手数会随初始资金设置的大小,同步变大变小,但修改初始资金,这张截图上的其他交易手数并没有同步变化,而他们的计算方式是一样的...

补充内容 (2022-9-19 23:07):
另又发现,当Lots_Cost计算出来大于设定的10000时,开仓手数就没按照Ex_Lots:=INTPART(10000/Lots_Cost);这个进行计算,而是按照编辑框内-->属性-->费率设置里面的初始资金值进行计算开仓手数,这个应该怎么写代码?

只有十字光标这一笔没按照开仓手数的代码进行正确计算

只有十字光标这一笔没按照开仓手数的代码进行正确计算
回复

使用道具 举报

38

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2022-9-20 08:33 | 显示全部楼层
a1:Rest_Limit;
a2:INTPART(10000/Lots_Cost);
if Rest_Limit=0 then //未启用资金限制
        begin
                if Per_Lots=0 then //未启用百分比
                        begin Ex_Lots:=Fix_Lots; end //固定手数开仓
                                else //百分比手数开仓
                        begin Ex_Lots:=INTPART(Chart_Asset*Per_Lots*0.01/Lots_Cost); end        
        end
                else //Rest_Limit=1 启用资金限制
        begin
             Ex_Lots:=INTPART(10000/Lots_Cost); end //按照资金限制的最大量开仓               
        end
a3:Ex_Lots;


看下a123各是多少,如果a2已经不对,那就看cost是多少简单的数学计算看下呢
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-9-20 08:41 | 显示全部楼层
看下那个位置Ex_Lots 的值。你输出出来。如果是0 那是按照全部资金开仓的意思。
你按照保证金算手数时候,要额外处理下计算结果是0 的情况。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

31

主题

106

帖子

116

积分

Rank: 2

等级: 标准版

注册:
2022-6-27
曾用名:
 楼主| 发表于 2022-9-20 14:14 | 显示全部楼层
技术009 发表于 2022-9-20 08:41
看下那个位置Ex_Lots 的值。你输出出来。如果是0 那是按照全部资金开仓的意思。
你按照保证金算手数时候, ...

哦,明白了,原来是这个原因,谢谢!
回复

使用道具 举报

31

主题

106

帖子

116

积分

Rank: 2

等级: 标准版

注册:
2022-6-27
曾用名:
 楼主| 发表于 2022-9-20 14:16 | 显示全部楼层
技术009 发表于 2022-9-20 08:41
看下那个位置Ex_Lots 的值。你输出出来。如果是0 那是按照全部资金开仓的意思。
你按照保证金算手数时候, ...

那这种算出来都是0,可以怎么写?来区分这两个不同的0?
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-9-20 14:17 | 显示全部楼层
你在开仓条件里判断呀。如果算出来手数是0 直接不开仓么。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

31

主题

106

帖子

116

积分

Rank: 2

等级: 标准版

注册:
2022-6-27
曾用名:
 楼主| 发表于 2022-9-20 14:22 | 显示全部楼层
技术009 发表于 2022-9-20 14:17
你在开仓条件里判断呀。如果算出来手数是0 直接不开仓么。

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-8 19:25 , Processed in 0.175792 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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