获取当前账户动态权益函数不会使用,也不知道怎么获取当前合约的保证金和合约参数,请用例子说一下,谢谢!
// 变量定义区:补充定时器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));
请问上面代码可以随时获取到当前模拟账户的动态权益吗?如果不行,请指正。谢谢
全都是函数手册里的东西....
这个函数使用有什么要求,我目前获取的是无效数据,请根据上面提供的帮我指正一下。谢谢
A函数在实时行情才能取到
测试的时候可以使用图表函数
我好像也碰到
代码写了好像没起作用
模拟盘风险率超过了设定值还在报单
可用资金不够废单
因为实盘只会用到40%左右资金
也没去检查
感谢,我试试,不懂再请教你!