FAQ > 金融建模 > 建模问题 > 基金相关

Q:如何获取基金的主代码    

简述
主代码的应用见FAQ:Q:天软基金定期报告取数代码说明
获取指定基金代码对应的取数主代码,具体实现如下。
  • A:
    -------------------------------
    主代码的应用见FAQ:Q:天软基金定期报告取数代码说明
    获取基金主代码,分为以下两类:
    1、分级基金的主代码为“母基金代码”,用base(302035)获取。返回空字符串""的则表示主代码为该代码本身。
     (分级基金按“交易方式”包含“创新型开放式”和“创新型封闭式”。深圳的创新型开放式基金一般不上市交易)

    2、非分级基金的主代码为基本面的“不同收费模式基金主代码”,用base(302032)获取。返回空字符串""的则表示主代码为该代码本身。

    主代码取数示例:取OF005288这支基金的20240630中报持股明细数据
    stockid:="OF005288";
    Rdate:=20240630;
    zID:= spec(FundMasterCode(),stockid); //获取主代码
    data:=select * from infotable 318 of zID where ["截止日"]=Rdate end;
    return data;

    ---------------------------
    2023-08-16升级:
    已提供公用函数获取基金主代码,函数:FundMasterCode,用户可直接调用。
    具体函数说明可参考:FAQ:FundMasterCode

    取指定基金的主代码:
    //OF012414的基金主代码
    SetSysParam(pn_stock(),"OF012414");
    return FundMasterCode();
    //返回:OF161725

    取一组基金代码的基金主代码
      Fundarr:=GetBK("开放式");
    // 获取各基金主代码
    return select thisrow as "基金代码",
      spec(FundMasterCode(),thisrow) as "基金主代码"
      from Fundarr end;

    返回如下:

    2023-08-16之前
    取数代码
    先封装一个函数MasterFundCode,参数为Fund基金代码:
    Function MasterFundCode(Fund);
    Begin
      //本函数实现逻辑为有主代码则取主代码,否则返回基金代码Fund本身。
      // 获取基金主代码
      with *,array(PN_Stock():Fund) do
      begin
       r:=base(302035);  // 母基金代码
       if isstock(r) then return r;
       r:=base(302032);  // 不同收费模式基金主代码
       if isstock(r) then return r;
       return fund; // 基金本身代码
      end
    end



    范例一:单基金主代码
    // 获取OF000004的主代码
      Fund:="OF000004";
      return MasterFundCode(Fund);
    // 返回:"OF000003"


    范例二:多基金主代码
      Fundarr:=GetBK("开放式");
      // 获取各基金主代码
      return select thisrow as "基金代码",
         MasterFundCode(thisrow) as "基金主代码"
         from Fundarr end;
    // 返回: