如题, 请问老师,在行情报价的字段管理器里有,说明TB 已经有算法算好的,但是在函数中并未找到相关公式。
请问该如何获取?
老师帮看下,参照OpenD函数的写法,我这样写是否正确。输出看了下,值看起来正常,但是再核对当日的资金流入流出值和交易软件上显示的似乎又有点不一样。
Params
Numeric DaysAgo(0); // 回溯天数,0表示当日,1表示前一日,以此类推
Vars
Series<Numeric> barCnt; // 记录每个交易日内的Bar数量
Series<Numeric> dayCapitalFlow; // 每日资金净流入
Series<Numeric> preDayOI; // 前一交易日持仓量
Series<Numeric> preDayClose; // 前一交易日收盘价
Series<Numeric> CurrentFlow; // 当日资金净流入累计值
Numeric currentCapital; // 当前资金量计算
Numeric preDayCapital; // 前一交易日资金量
Numeric i;
Numeric j;
Numeric nIndex(0);
Numeric CBIndex;
Begin
CBIndex = CurrentBar;
// 初始化:如果是第一个Bar或是新交易日
If(CBIndex == 0 || TrueDate(0) != TrueDate(1))
{
barCnt = 1;
// 如果是新交易日,记录前一交易日的数据
If(CBIndex > 0)
{
preDayOI = OpenInt[1];
preDayClose = Close[1];
dayCapitalFlow = CurrentFlow[1]; // 存储前一交易日最终资金流
}
Else
{
preDayOI = OpenInt;
preDayClose = Close;
dayCapitalFlow = 0;
}
CurrentFlow = 0; // 重置当日累计值
}
Else
{
barCnt = barCnt + 1;
}
// 计算当前资金量:持仓量*最新价*合约乘数*每点价值
currentCapital = OpenInt * Close * ContractUnit() * BigPointValue();
// 前一交易日资金量
preDayCapital = preDayOI * preDayClose * ContractUnit() * BigPointValue();
// 当日资金净流入 = 当前资金量 - 前一交易日资金量
CurrentFlow = currentCapital - preDayCapital;
// 处理回溯请求
If(DaysAgo == 0)
{
Return CurrentFlow; // 返回当日资金净流入
}
Else
{
For i = 1 To daysAgo
{
If( i == 1)
{
j = 0;
}Else
{
j = j + BarCnt[j];
}
If (j > CBIndex )
Return InvalidNumeric;
nIndex = nIndex + BarCnt[j];
}
Return dayCapitalFlow[nIndex];
}
End
没有这个字段
最新价乘以持仓量算一下不就行了
Params
Numeric DaysAgo(0); // 回溯天数,0表示当日,1表示前一日,以此类推
Vars
Series<Numeric> barCnt; // 记录每个交易日内的Bar数量
Series<Numeric> dayCapitalFlow; // 每日资金净流入
Series<Numeric> preDayOI; // 前一交易日持仓量
Series<Numeric> preDayClose; // 前一交易日收盘价
Series<Numeric> CurrentFlow; // 当日资金净流入累计值
Numeric currentCapital; // 当前资金量计算
Numeric preDayCapital; // 前一交易日资金量
Numeric i;
Numeric j;
Numeric nIndex(0);
Numeric CBIndex;
Begin
CBIndex = CurrentBar;
// 初始化:如果是第一个Bar或是新交易日
If(CBIndex == 0 || TrueDate(0) != TrueDate(1))
{
barCnt = 1;
// 如果是新交易日,记录前一交易日的数据
If(CBIndex > 0)
{
preDayOI = OpenInt[1];
preDayClose = Close[1];
dayCapitalFlow = CurrentFlow[1]; // 存储前一交易日最终资金流
}
Else
{
preDayOI = OpenInt;
preDayClose = Close;
dayCapitalFlow = 0;
}
CurrentFlow = 0; // 重置当日累计值
}
Else
{
barCnt = barCnt + 1;
}
// 计算当前资金量:持仓量*最新价*合约乘数*每点价值
currentCapital = OpenInt * Close * ContractUnit() * BigPointValue();
// 前一交易日资金量
preDayCapital = preDayOI * preDayClose * ContractUnit() * BigPointValue();
// 当日资金净流入 = 当前资金量 - 前一交易日资金量
CurrentFlow = currentCapital - preDayCapital;
// 处理回溯请求
If(DaysAgo == 0)
{
Return CurrentFlow; // 返回当日资金净流入
}
Else
{
For i = 1 To daysAgo
{
If( i == 1)
{
j = 0;
}Else
{
j = j + BarCnt[j];
}
If (j > CBIndex )
Return InvalidNumeric;
nIndex = nIndex + BarCnt[j];
}
Return dayCapitalFlow[nIndex];
}
End