您现在的位置:程序化交易>> 期货公式>> 金字塔等>> 金字塔知识>>正文内容

C++怎么订阅全市场行情? [金字塔]

  • 咨询内容: 目前机构版订阅行情个数上限为20,如果进行股票量化怎么订阅全市场或者几百个品种的行情?

     

  • 金字塔客服: 范例制作中

     

  • 用户回复:

    代码范例下载

     下载信息  [文件大小:   下载次数: ]点击浏览该文件:addindemo.rar

     

    主要原理及介绍:

     

    首先我们需要设置一个定时器

    在代码

     

    BOOL CMainWindowDlg::OnInitDialog()

    增加代码行

    SetTimer(0,500,NULL);

     

    为了避免遍历轮询重复计算的效率问题,我们采取记录品种成交量的方式,只有当成交量出现变化后我们才处理品种的变化。因此需要增加一个对象记录

    std::map<void*,float> m_mapReportData;

     

    其他代码就相对比较简单了,主要代码如下:

     

    void CMainWindowDlg::OnTimer(UINT nIDEvent)
    {
     if(nIDEvent == 0)
     {
      ScanMarketStock('HS');
      ScanMarketStock('ZS');
     }
     
     CDialog::OnTimer(nIDEvent);
    }

    //遍历整个市场的品种
    void CMainWindowDlg::ScanMarketStock(WORD wMarket)
    {
     DWORD dwCount = g_pMainFormework->GetReportCount(wMarket);
     for(UINT i = 0; i < dwCount; i++)
     {
      char szLabel[10] = {0};

      //先获得品种代码
      if(!g_pMainFormework->GetReportData(wMarket,i,szLabel))
       continue;

      REPORT_STRUCT * pReport = g_pMainFormework->GetReportData(szLabel,wMarket);
      if(pReport == NULL)
       continue;

      //判断只有成交量出现变化才认为该品种有行情触发
      std::map<void*,float>::iterator iter;
      iter = m_mapReportData.find(pReport);
      if(iter != m_mapReportData.end())
      {
       if(iter->second != pReport->m_fVolume)
       {
        ProcStockUpdate(pReport);
        iter->second = pReport->m_fVolume;
       }
      }
      else
      {
       ProcStockUpdate(pReport);
       m_mapReportData[pReport] = pReport->m_fVolume;
      }
     }
    }

    //这里函数处理交易品种
    void CMainWindowDlg::ProcStockUpdate(REPORT_STRUCT * pReport)
    {
    }


     

  • 网友回复: 为什么不采用时间变化来轮循

     

  • 网友回复: 可不可以用时间变化轮循,这样应该更合理

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容