如何写一个函数返回当前持仓总手数 传递的参数为 多或空

如何写一个函数返回当前持仓总手数  传递的参数为 多或空。

//------------------------------------------------------------------------

// 简称: GetCurrentPosition

// 名称: 获取当前多空持仓状态

// 类别: 用户函数

// 类型: 自定义函数

// 输出: 整数型(1=多单持仓,-1=空单持仓,0=无持仓;绝对值为持仓手数)

// 说明: 适配TB3所有版本,不依赖扩展函数,返回值兼顾持仓方向和手数

//------------------------------------------------------------------------

Params

   // 无参数(直接遍历订单获取持仓,无需外部传入参数)

Vars

   // 函数内部局部变量(仅函数内有效)

   Integer i;                  // 订单循环索引

   Integer ordType;            // 订单类型(2=多单,3=空单)

   Integer ordStatus;          // 订单状态(3=未平仓持仓)

   Integer ordLots;            // 单个订单手数

   Integer totalLong;          // 累计多单持仓手数

   Integer totalShort;         // 累计空单持仓手数

   Integer totalOrders;        // 订单总数(缓存,提升效率)

   Integer OrderCount;

   Integer SELECT_BY_POS;

   Integer MODE_TRADES;

Begin

   // 1. 初始化变量(避免残留值影响结果)

   totalLong = 0;

   totalShort = 0;

   totalOrders = OrderCount;   // 获取当前所有交易订单总数

   

   // 2. 遍历所有订单,统计未平仓持仓

   For i = 0 To totalOrders - 1

   {

       // 按位置选中第i个订单(MODE_TRADES=交易订单池)

       If (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

       {

           ordType = OrderType();    // 获取订单类型

           ordStatus = OrderStatus();// 获取订单状态

           ordLots = OrderLots();    // 获取订单手数

           

           // 仅统计"未平仓持仓订单"(状态=3)

           If (ordStatus == 3)

           {

               If (ordType == 2)     // 2=BUY多单

               {

                   totalLong = totalLong + ordLots;

               }

               Else If (ordType == 3)// 3=SELLSHORT空单

               {

                   totalShort = totalShort + ordLots;

               }

           }

       }

   }

   

   // 3. 返回持仓结果(兼顾方向和手数)

   If (totalLong > 0)

   {

       Return totalLong;         // 多单持仓:返回正的持仓手数(如1=1手多单)

   }

   Else If (totalShort > 0)

   {

       Return -totalShort;       // 空单持仓:返回负的持仓手数(如-1=1手空单)

   }

   Else

   {

       Return 0;                 // 无持仓:返回0

   }

End


//------------------------------------------------------------------------

// 编译版本    2025/11/25

// 版权所有    用户自定义

// 更改声明    保留函数修改权利,适配TB3所有版本

//------------------------------------------------------------------------


请优化完善以上代码逻辑或有无更简单的方法,系统帮助中关于 返回持仓的函数介绍太过简单,翻阅全部交易策略示例也没有找到相关用法

当前持仓是空仓6手,但是用Commentary打印出MarketPosition 为1
如何获取当前账号持仓的总持仓手数
MaxContracts返回当前持仓的最大持仓合约数总是0
当前持仓数的提取
如何获取当前持仓空单的数量和多单的数量
模型策略开仓后的持仓手数
请老师帮忙看看,获取多单/空单最后一次开仓到当前BAR计数,以及开仓手数
plot变量能否作为参数传递给一个函数
单策略多品种回测如何实现总仓位或总风险度控制
按可用资金计算开仓手数,该如何写代码为好

发代写板块或者投稿

当前持仓总手数,这个函数不是有么?