金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 124|回复: 15

请问图表和后台如何实现根据每个品种资金量来计算开仓手数

[复制链接]

27

主题

101

帖子

101

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2025-1-9
曾用名:
发表于 2025-5-14 21:27 | 显示全部楼层 |阅读模式
请问图表和后台如何实现根据每个品种资金量来计算开仓手数的代码?比如我设置某个期货品种的可开仓资金量是10万,然后根据当前期货品种的保证金,自动计算出可以开仓多少手数。
回复

使用道具 举报

27

主题

101

帖子

101

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2025-1-9
曾用名:
 楼主| 发表于 2025-5-14 21:29 | 显示全部楼层
还有,根据当前账户的总资金的10%,然后根据当前期货品种的保证金,自动计算出可以开仓多少手?这个代码如何写? 请分别给出后台和图表的代码
回复

使用道具 举报

2

主题

4966

帖子

4966

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-5-15 08:40 | 显示全部楼层
根据指定资金计算手数参考这段代码:
[PEL] 复制代码
input:zj(10000,1,1000000,1);
下单资金量:=zj;
MarginRatio:=TACCOUNT(41);//多头保证金比率. 这个要把合约信息设置里面的费率设置正确,否则函数取到的值可能是不对的。
bzj:=Close*Multiplier*MarginRatio;//一手保证金占用
ss1:=Intpart(下单资金量/(bzj));//根据资金ZJ计算的开仓手数
 
//最终结果
//ss1可能会有计算出为0 的情况,而恰好为手数参数为0在函数中是满仓开的含义。因此再次处理下,当ss1为0情况下默认按下一手处理。
ss:if(ss1>0,ss1,1);
回复

使用道具 举报

2

主题

4966

帖子

4966

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-5-15 08:42 | 显示全部楼层

还有,根据当前账户的总资金的10%,然后根据当前期货品种的保证金,自动计算出可以开仓多少手?这个代码如何写? 请分别给出后台和图表的代码”

这个就直接用百分比下单函数处理就行了:PERTRADER

具体参考这个函数说明,图表和后台都有范例的。
回复

使用道具 举报

27

主题

101

帖子

101

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2025-1-9
曾用名:
 楼主| 发表于 2025-5-15 09:26 | 显示全部楼层
资深技术05 发表于 2025-5-15 08:42

还有,根据当前账户的总资金的10%,然后根据当前期货品种的保证金,自动计算出可以开仓多少手?这个代 ...

请问这个函数是根据账户总资金百分比?还是根据可用资金的百分比?

补充内容 (2025-5-15 09:32):
我想要的是根据账户总资金的百分比,不是可用资金的百分比开仓。 然后如果可用资金的百分比不足够开仓1手的话,并且可用资金大于1手保证金的话,按照1手来开仓。
回复

使用道具 举报

2

主题

4966

帖子

4966

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-5-15 09:43 | 显示全部楼层
百分比函数的是根据可用资金的百分比哦。


如果你要全部总资金的,那就根据3楼代码做调整就行。只需要指定资金为图表理论权益或者后台实际账号权益即可。


[PEL] 复制代码

下单资金量:=TACCOUNT( 6)*0.1;//使用实际账户总权益的10% 
MarginRatio:=TACCOUNT(41);//多头保证金比率. 这个要把合约信息设置里面的费率设置正确,否则函数取到的值可能是不对的。
bzj:=Close*Multiplier*MarginRatio;//一手保证金占用
ss1:=Intpart(下单资金量/(bzj));//根据资金ZJ计算的开仓手数
  
//最终结果
//ss1可能会有计算出为0 的情况,而恰好为手数参数为0在函数中是满仓开的含义。因此再次处理下,当ss1为0情况下默认按下一手处理。
//如需要判断可用直接判断  TACCOUNT(19)>下单资金量 即可
ss:if(ss1>0,ss1,1);



图表:
[PEL] 复制代码

下单资金量:=ASSET*0.1;//使用理论账户总权益的10% 
MarginRatio:=TACCOUNT(41);//多头保证金比率. 这个要把合约信息设置里面的费率设置正确,否则函数取到的值可能是不对的。
bzj:=Close*Multiplier*MarginRatio;//一手保证金占用
ss1:=Intpart(下单资金量/(bzj));//根据资金ZJ计算的开仓手数
  
//最终结果
//ss1可能会有计算出为0 的情况,而恰好为手数参数为0在函数中是满仓开的含义。因此再次处理下,当ss1为0情况下默认按下一手处理。
//如需要判断可用直接判断  CASH(0)>下单资金量 即可
ss:if(ss1>0,ss1,1);


参考这2部分代码调整就行了。
回复

使用道具 举报

27

主题

101

帖子

101

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2025-1-9
曾用名:
 楼主| 发表于 2025-5-15 09:51 | 显示全部楼层
资深技术05 发表于 2025-5-15 09:43
百分比函数的是根据可用资金的百分比哦。

图表中可以用  下单资金量:=TACCOUNT( 6)*0.1;//使用实际账户总权益的10% 吗?
回复

使用道具 举报

2

主题

4966

帖子

4966

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-5-15 09:52 | 显示全部楼层
不可以的哦。 实际账号的字段 始终只有最新值,没有历史时间对应的历史值。 而图表对函数值要求都是要有历史值 来进行合理的历史计算的。
回复

使用道具 举报

27

主题

101

帖子

101

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2025-1-9
曾用名:
 楼主| 发表于 2025-5-15 10:05 | 显示全部楼层
资深技术05 发表于 2025-5-15 09:52
不可以的哦。 实际账号的字段 始终只有最新值,没有历史时间对应的历史值。 而图表对函数值要求都是要有历 ...

使用理论账户总权益,那这个图表理论账户资金的初始值在哪里设置?

补充内容 (2025-5-15 10:06):
如何确保理论账户资金和实际资金区别不大?不然这样计算出来的手数就会失准
回复

使用道具 举报

2

主题

4966

帖子

4966

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-5-15 10:07 | 显示全部楼层
截图202505151006472534.png

在指标的公式属性里设置。

另外范例代码里 在计算结果为0 时 我处理成至少下一手,你可以根据需要调整下。例如为0 时候不进行下单等。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-19 01:46 , Processed in 0.157568 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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