
等级: 标准版
- 注册:
- 2022-6-27
- 曾用名:
|
一、我在代码里约定当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);这个进行计算,而是按照编辑框内-->属性-->费率设置里面的初始资金值进行计算开仓手数,这个应该怎么写代码? |
-
只有十字光标这一笔没按照开仓手数的代码进行正确计算
|