金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 619|回复: 14

如何提升多账号下单语句的维护便捷性

[复制链接]

95

主题

335

帖子

335

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2025-1-9
曾用名:
发表于 2026-5-18 14:57 | 显示全部楼层 |阅读模式
如何提升多账号下单语句的维护便捷性,比如我开仓和平仓,各有很多条件,而需要精确控制每个仓位的开仓数量和平仓数量。这样每个开仓语句和平仓语句都需要根据账户的数量写多行。
但是以后如果要对这个策略增加账户或者减少账户,都需要大量的修改代码,有没有什么好的思路能够解决多账户调整而不需要大幅改动代码的问题。
回复

使用道具 举报

2

主题

6498

帖子

6498

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2026-5-18 15:19 | 显示全部楼层
本帖最后由 资深技术05 于 2026-5-18 15:30 编辑

[PEL] 复制代码
n:= TACCOUNTCOUNT;//当前账户数

for i=1 to n do 
begin 
        
ac:=TACCOUNTINDEX(i);//后续下单,读持仓使用ac这个变量作为账户参数即可

if not(TACCOUNT2(53,ac)) then CONTINUE;//如果账户无效,跳过

//这里 执行和账户对应的操作,比如开仓/平仓,使用ac作为账户参数即可  

tbuy(1,1,mkt,0,0,'',ac),ALLOWREPEAT;
      
end 


可以参考这个模块的处理过程。

回复

使用道具 举报

2

主题

6498

帖子

6498

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2026-5-18 15:38 | 显示全部楼层


[PEL] 复制代码
n:= TACCOUNTCOUNT;//当前账户数

for i=1 to n do 
begin 
	
ac:=TACCOUNTINDEX(i);//后续下单,读持仓使用ac这个变量作为账户参数即可
网关名称:=TACCOUNT2(43,ac);

if STRICMP(网关名称,'上期模拟')=0 then CONTINUE;//如果是上期模拟则跳过

if not(TACCOUNT2(53,ac)) then CONTINUE;//如果账户无效,跳过

//这里 执行和账户对应的操作,比如开仓/平仓,使用ac作为账户参数即可	

tbuy(1,1,mkt,0,0,'',ac),ALLOWREPEAT;//必须使用ALLOWREPEAT 
end 

本帖子中包含更多资源

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

x
回复

使用道具 举报

95

主题

335

帖子

335

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2025-1-9
曾用名:
 楼主| 发表于 2026-5-18 15:44 | 显示全部楼层
资深技术05 发表于 2026-5-18 15:38
[mw_shl_code=pel,true]
n:= TACCOUNTCOUNT;//当前账户数

非常感谢您的解答,非常好的思路,大大简化了我未来维护代码的工作量。
回复

使用道具 举报

95

主题

335

帖子

335

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2025-1-9
曾用名:
 楼主| 发表于 2026-5-19 00:38 | 显示全部楼层
资深技术05 发表于 2026-5-18 15:38
[mw_shl_code=pel,true]
n:= TACCOUNTCOUNT;//当前账户数

tbuy(1,1,mkt,0,0,'',ac),ALLOWREPEAT;//必须使用ALLOWREPEAT

这句tbuy代码是不是写错了参数的顺序?AC是倒数第二个参数吧?
是不是应该改为以下,把最后一个参数是股票代码参数留空:

tbuy(1,1,mkt,0,0,ac,''),ALLOWREPEAT;//必须使用ALLOWREPEAT
回复

使用道具 举报

2

主题

6498

帖子

6498

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2026-5-19 08:43 | 显示全部楼层
对写反了,你调整过了就行了。
回复

使用道具 举报

95

主题

335

帖子

335

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2025-1-9
曾用名:
 楼主| 发表于 2026-5-21 14:57 | 显示全部楼层
1201 发表于 2026-5-19 00:38
tbuy(1,1,mkt,0,0,'',ac),ALLOWREPEAT;//必须使用ALLOWREPEAT

这句tbuy代码是不是写错了参数的顺序?A ...

n:= TACCOUNTCOUNT;//当前账户数
for i=1 to n do
begin     
moziac:=TACCOUNTINDEX(i);

在公式变量查看器,看到的 MOZIAC: 1000010.00  ,这是不是代码写法有问题?
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2026-5-21 15:00 | 显示全部楼层
没有问题的,查看器没法看字符串
a:'abc';

你去图上看这个a也是看不到正确值得,字符串输出必须用msgout或者debugfile这种去输出
msgout(1,a);   你这用输出下就能看到a得正确输出了
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

95

主题

335

帖子

335

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2025-1-9
曾用名:
 楼主| 发表于 2026-5-21 15:00 | 显示全部楼层
还有我一下要获得所有持仓,这个写法有问题吗?:
后台所有持仓:= TBUYHOLDINGEX(moziac,'',2);
后台可用持仓:= TBUYHOLDINGEX(moziac,'',0);

补充内容 (2026-5-21 15:01):
这2个获得的持仓量,和实际账户当前看到的不同。
回复

使用道具 举报

3

主题

2万

帖子

2万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2026-5-21 15:03 | 显示全部楼层
本地这边测试正常啊,你输出下moziac看下是哪个账户呢,通过msghout这种去打印看下账户对不对

还有你直接就登录一个账户,排除自己账户多看错得可能
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-8 11:57 , Processed in 0.104357 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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