金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 370|回复: 14

下单手数问题

[复制链接]

27

主题

143

帖子

143

积分

等级: 免费版

注册:
2025-8-7
曾用名:
发表于 2025-10-17 09:01 | 显示全部楼层 |阅读模式
老师,我用下面的代码,在回撤的时候,下单的手数不对,永远都是1;期望实现的应该是在100万限额内,根据我账户可用资金/保证金后全仓下单   。(如果账户资金大于100万,那就是按照100万限额全部下单,如果账户资金小于100万,就按照全部资金全仓下单)。麻烦老师帮忙看看怎么回事

//根据指定资金计算手数参考这段代码
input:zj(5000,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);


IF BUYSIGNAL THEN
  BUY(HOLDING=0,ss,MARKET);


回复

使用道具 举报

44

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-10-17 09:11 | 显示全部楼层
IF BUYSIGNAL THEN
  BUY(HOLDING=0,100%,MARKET),PERTRADER;

图表用pertrader来实现实际账户百分比开仓
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

27

主题

143

帖子

143

积分

等级: 免费版

注册:
2025-8-7
曾用名:
 楼主| 发表于 2025-10-17 09:13 | 显示全部楼层
技术008 发表于 2025-10-17 09:11
IF BUYSIGNAL THEN
  BUY(HOLDING=0,100%,MARKET),PERTRADER;

好的,我试试看
回复

使用道具 举报

27

主题

143

帖子

143

积分

等级: 免费版

注册:
2025-8-7
曾用名:
 楼主| 发表于 2025-11-10 14:59 | 显示全部楼层
老师,假设我账户总资产,100万,我交易的最大标的是5只,如何实现标的A,按照10万元保证金计算下单手数,标的B按照20万,标的C按照30,D按照15万,E按照15万?麻烦老师帮忙修改一下代码
现在用的可用资金的百分比计算,这个模式会导致持仓占用保证金后导致后续计算保证金不够的情况

    //根据指定资金计算手数参考这段代码
input:zj(1000,1,500000,1);
下单资金量:=zj;
MarginRatio:=TACCOUNT(41);//多头保证金比率. 这个要把合约信息设置里面的费率设置正确,否则函数取到的值可能是不对的。
bzj:=Close*Multiplier*MarginRatio;//一手保证金占用
ss1:=Intpart(下单资金量/(bzj));//根据资金ZJ计算的开仓手数

//最终结果
//ss1可能会有计算出为0 的情况,而恰好为手数参数为0在函数中是满仓开的含义。因此再次处理下,当ss1为0情况下默认按下一手处理。
手数1:=IF(SS1<1, 1,ss1);



IF BUYSIGNAL THEN
    BUY(HOLDING=0,14%,MARKET),PERTRADER;
回复

使用道具 举报

44

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-11-10 15:02 | 显示全部楼层
你这不是直接改zj这个值就好了嘛
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

27

主题

143

帖子

143

积分

等级: 免费版

注册:
2025-8-7
曾用名:
 楼主| 发表于 2025-11-10 15:15 | 显示全部楼层
技术008 发表于 2025-11-10 15:02
你这不是直接改zj这个值就好了嘛

input:zj(1000,1,500000,1);
这样改对吗?改成input:zj(1000,1,100000,1);  改成10万,然后把



补充内容 (2025-11-10 15:15):
    BUY(HOLDING=0,14%,MARKET),PERTRADER;
改成:    BUY(HOLDING=0,100%,MARKET),PERTRADER;
回复

使用道具 举报

44

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-11-10 15:16 | 显示全部楼层
对的,这个zj就是你自己设的一个总资金的概念,然后你用它去算手数的

你不同品种就该不同值就行了
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

44

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2025-11-10 15:16 | 显示全部楼层
对的,这个zj就是你自己设的一个总资金的概念,然后你用它去算手数的

你不同品种就该不同值就行了
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

27

主题

143

帖子

143

积分

等级: 免费版

注册:
2025-8-7
曾用名:
 楼主| 发表于 2025-11-10 15:19 | 显示全部楼层
技术008 发表于 2025-11-10 15:16
对的,这个zj就是你自己设的一个总资金的概念,然后你用它去算手数的

你不同品种就该不同值就行了

好的,谢谢老师
回复

使用道具 举报

27

主题

143

帖子

143

积分

等级: 免费版

注册:
2025-8-7
曾用名:
 楼主| 发表于 2025-11-12 09:04 | 显示全部楼层
老师,我下面的代码执行后是按照账户总的可用资金的51%下单的,这个不是我想要的。我要的是在我设定的资金60000的基础上按照51%下单,因为一个账户有很多个策略在跑,这个要怎么设置?帮忙修改一下代码
    //根据指定资金计算手数参考这段代码
input:zj(100,1,60000,1);
下单资金量:=zj;
MarginRatio:=TACCOUNT(41);//多头保证金比率. 这个要把合约信息设置里面的费率设置正确,否则函数取到的值可能是不对的。
bzj:=Close*Multiplier*MarginRatio;//一手保证金占用
ss1:=Intpart(下单资金量/(bzj));//根据资金ZJ计算的开仓手数

//最终结果
//ss1可能会有计算出为0 的情况,而恰好为手数参数为0在函数中是满仓开的含义。因此再次处理下,当ss1为0情况下默认按下一手处理。
ss:if(ss1>0,ss1,1);
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-15 15:29 , Processed in 0.098276 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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