在策略代码获取当前账户动态权益,并手动计算当前主力合约可开仓手数?

获取当前账户动态权益函数不会使用,也不知道怎么获取当前合约的保证金和合约参数,请用例子说一下,谢谢!

如何用ATR和实盘权益计算开仓手数
关于动态权益百分比计算开仓手数的问题
如何取当前策略运行对应的实时动态权益?
获取可平多手数,可平空手数
智大领峰 盘口下单功能否增加显示可开手数功能,并根据事先设定的默认开仓手数自动填写开仓手数?
以主力合约的市值标准执行计算手数的方法
如何计算不同品种开仓手数
期权交易时对【虚拟账户】和【真实账户】中动态权益的计算问题
关于自动计算开仓手数
如何获取当前账号持仓的总持仓手数


// 变量定义区:补充定时器ID及核心计算变量
Vars
    Integer timerId;                          // 定时器ID(新增,用于创建定时器)
    Array<AccountInfo> accountIDs;            // 账户ID数组
    Integer i;                                // 循环计数器
    MarginRate mRate;                         // 保证金率对象
    Numeric value;                            // 可用资金
    Bool bindRet;                             // 账户绑定结果标记

// 事件处理区:包含定时器创建及可开仓手数计算逻辑
Events
    // 就绪事件:创建定时器(1秒间隔)
    OnReady()
    {
        // 创建1秒间隔的定时器,用于实时更新可开仓手数
        timerId = CreateTimer(1000);  // 1000毫秒 = 1秒,确保计时器ID被正确初始化
    }
    
    // 定时器事件:每秒计算并输出可开仓手数
    OnTimer(Integer id, Integer millsecs)
    {
        // 仅处理当前创建的定时器(避免其他定时器干扰)
        if (id != timerId) return;
        
        // 获取关联的交易账户ID列表(类型2为实盘账户)
        A_GetAccountIDs(2, accountIDs);
        
        // 遍历所有关联账户,计算可开仓手数
        if (GetArraySize(accountIDs) > 0)
        {
            for i = 0 to GetArraySize(accountIDs) - 1
            {
                String userCode = accountIDs[i].userCode;  // 获取账户代码
                bindRet = A_BindTradeAccount(userCode);    // 绑定交易账户
                
                // 获取当前合约的保证金率(针对第i个账户)
                A_GetMarginRate(MainSymbol, mRate, i);
                
                // 获取该账户的可用资金
                value = A_FreeMargin(i);
                
                // 计算可开仓手数:可用资金 /(当前价 * 合约乘数 * 多头保证金率),取整数部分
                Numeric openableLots = IntPart(value / (C * ContractUnit() * mRate.longMarginRatio));
                
                // 输出计算结果
                Print("账户[" + Text(i + 1) + "]:" + 
                      Left(userCode, 3) + "(" + IIFString(bindRet, "绑定成功", "绑定失败") + ")," +
                      "可开" + MainSymbol + "手数:" + Text(openableLots));
            }
        }
    }


谢谢。我测试一下

先判定登录了几个行号,然后分别获取登录账号的ID,然后查询该ID在某合约的保证金率,然后计算剩余资金的数量除以每手保证金最终得出可开开仓手数

        // 获取当前账户动态权益
        Numeric currentEquity = A_CurrentEquity();
        Commentary("当前动态权益: " + Text(currentEquity));

请问上面代码可以随时获取到当前模拟账户的动态权益吗?如果不行,请指正。谢谢

全都是函数手册里的东西....

https://tbq3.tbquant.net/helper?product_id=991&keyword=1122&content_id=1003&type=article#getproperty-%E8%8E%B7%E5%8F%96bar%E4%B8%8A%E7%9A%84%E5%90%88%E7%BA%A6%E5%B1%9E%E6%80%A7-

获取Bar上的合约属性

https://tbq3.tbquant.net/helper?product_id=991&keyword=1122&content_id=769&type=article#a_getmarginrate-%E8%8E%B7%E5%8F%96%E8%B4%A6%E6%88%B7%E5%AF%B9%E5%BA%94%E5%90%88%E7%BA%A6%E7%9A%84%E4%BF%9D%E8%AF%81%E9%87%91%E7%8E%87

获取账户对应合约的保证金率

https://tbq3.tbquant.net/helper?product_id=991&keyword=1122&content_id=698&type=article#a_currentequity-%E8%BF%94%E5%9B%9E%E6%8C%87%E5%AE%9A%E4%BA%A4%E6%98%93%E5%B8%90%E6%88%B7%E7%9A%84%E5%8A%A8%E6%80%81%E6%9D%83%E7%9B%8A

获取当前关联账户动态权益


这个函数使用有什么要求,我目前获取的是无效数据,请根据上面提供的帮我指正一下。谢谢

A函数在实时行情才能取到

测试的时候可以使用图表函数

我好像也碰到

代码写了好像没起作用

模拟盘风险率超过了设定值还在报单

可用资金不够废单


因为实盘只会用到40%左右资金

也没去检查

感谢,我试试,不懂再请教你!