A:一般实现逻辑:
第一步:取指定日初始样本;
第二步:循环样本,计算指定日条件指标值,并进行判断过滤
第三步:存放过滤后的数据结果,根据需求组织展示结构
实现示例:筛选出指定日全市场股票收盘价大于五日移动均价,且成交金额大于20亿的样本
endt:=20250903T; //指定日
upAmt:=20*100000000;//成交金额对比阀值-20亿,方便调整
N:=5;//最近5日均价,方便调整
//第一步:取指定日初始样本;
stocks:=getAbkbydate("A股",endt);
//第二步:循环样本,计算指定日条件指标值,并进行判断过滤
r:=array();k:=0;
setsysparam(pn_date(),endt);
for i,stockid in stocks do
begin
setsysparam(pn_stock(),stockid);
if not istradeday(endt) then continue;//当日不交易的去掉
amt:=amount();
if amt<=upAmt then continue;//成交金额小于等于upAmt的去掉
emaC:=ref(EMa(close(),N),1);//N日移动平均-不包括当日
c:=close();
if c<=emaC then continue;//收盘价小于等于N日移动均价的去掉
//满足条件的留下,并将相关数据存放在数组r中
//第三步:存放过滤后的数据结果,根据需求组织展示结构
r[k++]:=array("StockID":stockid,"close":c,"eMA5":emaC,"amount":amt);
end;
//结果按成交金额从大到小排序
return select * from r order by ["amount"] desc end;
返回结果:(2位精度显示)
