金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
12
返回列表 发新帖
楼主: 800190

批量加减仓

[复制链接]

1

主题

312

帖子

312

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2026-8-20 09:12 | 显示全部楼层
本帖最后由 资深技术07 于 2026-8-21 13:40 编辑

推荐最好有一点时间间隔,一个账号一个账号,读取账户栏持仓,进行开平仓操作哦。
回复

使用道具 举报

3

主题

16

帖子

26

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2026-8-20 16:31 | 显示全部楼层
我不明白,循环不可以读取持仓吗?首先外层循环读取账户,然后第二层内部循环开始就该账户执行批量处理。然后第二个账户,再读取个股批量处理。金字塔不支持双层循环?我表达的意思是,以前我们没有批量处理个股需求。而是多个账户放循环中,只处理单只个股,不稳定。有时多个账户处理正常,有时不正常。而并不是循环不能用。我测试过,循环读取持仓是没有问题的啊,就是不稳定而已。
回复

使用道具 举报

1

主题

312

帖子

312

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2026-8-21 09:09 | 显示全部楼层
本帖最后由 资深技术07 于 2026-8-21 13:13 编辑

如何实现循环读取持仓,是可以的,3楼和6楼都给出了示例。

推荐一个账号一个账号,读取账户栏持仓,进行开平仓操作。

回复

使用道具 举报

3

主题

16

帖子

26

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2026-8-21 13:08 | 显示全部楼层
n:=taccountcount;  这个不就是循环的函数啊,我们都用了很长时间了。是买卖放循环里面不稳定。不是循环不能用。
回复

使用道具 举报

1

主题

312

帖子

312

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2026-8-21 13:14 | 显示全部楼层
本帖最后由 资深技术07 于 2026-8-21 13:36 编辑

好的,再加一层循环,示例代码如下,请您本地试试

[PEL] 复制代码
//只在最后周期有效,防止逐K线模式前面K线刷新进入,可以提高效率。对序列模式不影响。
IF NOT(ISLASTBAR) THEN EXIT;
ZHSL:=TACCOUNTCOUNT;//取得账户数量

FOR I = 1 TO ZHSL do
BEGIN
        ZH1:=TACCOUNTINDEX(I);//取指定序号账号
        IF NOT(TACCOUNT2(53,ZH1)) THEN EXIT;//账户登陆异常直接退出
        HC:=THOLDCOUNT(ZH1);//取得当前活动账户的总持仓品种数量
  
//循环取得持仓
        FOR I = 1 TO HC DO
        BEGIN
            //获取第I个序号的账户持仓品种代码
            HLABEL:= THOLDINDEXLABEL(I,ZH1);
            //MSGOUT(1,HLABEL);
             
            //获取第I个序号的账户持仓品种均价
            TAVGP:= TAVGENTERPRICEEX(I,ZH1);
            //取该品种多仓数量,然后平仓
            THC:=TBUYHOLDINGEX(ZH1 ,HLABEL,1);
            //MSGOUT(1,'BUYHOLDIG'&NUMTOSTR(THC,0));
            TBUY(THC>0,IF(THC*0.5>2,INTPART(THC*0.5),1),MKT,0,0,ZH1,HLABEL);//持仓增加一半,用0.5表示
             
             
            TSELL(THC>0,THC,MKT,0,0,ZH1,HLABEL),ALLOWREPEAT;//全平
            //取空仓数量,然后平仓
            THC:=TSELLHOLDINGEX('' ,HLABEL,1);
            //MSGOUT(1,'SELLHOLDIG'&NUMTOSTR(THC,0));
            TBUYSHORT(THC>0,IF(THC*0.5>2,INTPART(THC*0.5),1),MKT,0,0,ZH1,HLABEL);//持仓增加一半,用0.5表示
             
            TSELLSHORT(THC>0,THC,MKT,0,0,ZH1,HLABEL),ALLOWREPEAT;//全平
        END
END
回复

使用道具 举报

3

主题

16

帖子

26

积分

Rank: 6Rank: 6

等级: 机构版

注册:
2023-2-16
曾用名:
 楼主| 发表于 2026-8-21 17:30 | 显示全部楼层
我的意思是循环可以用。但好像涉及买卖,比如有三个账户,有时三个同时开仓,有时只开一个或两个。不稳定。后来没办法,只好把买卖的代码单独拿到循环外面。但这样就导致股票没办法循环了。因为股票比较多,不可能把代码单独写。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-18 05:02 , Processed in 0.162072 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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