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

成功登陆到获得合约信息之间有时间差 [金字塔]

  • 咨询内容: if (!g_pMainFormework->GetCTPAccountName(0, szAcc)) // 成功登陆了,账户值返回是对的
    ...
    int _itotal = g_pMainFormework->GetHolding2(szAcc); // 获得账户持仓合约总量, 在登录账户过后一小段时间里,这个返回是0(很明显就是在重新开金字塔链接服务器的时候), 然后我的初始化就错了

    所以这个有什么方法能避免这个问题吗? 是否有标志可以知道持仓总量是真的等于0,还是服务器还没返回?

     

  • 金字塔客服:

     

    //得到指定的非IB外盘帐户信息 
     virtual VARIANT GetAccount2(short nType, char * szAccount) = 0;

     

    参数 nType = 2

    如果返回255,则表示账户当前尚未登录或者登录后尚未初始化完毕

     

  • 用户回复: 谢谢

     

  • 网友回复: 帮我看看,这段程序,为什么会拿到账户持仓数量等于0呢?  我持仓数量是3,哪里错了呢?
    bool CQHGoods::InitInfo()
    {
     char szAcc[64] = { 0 };
     if (!g_pMainFormework->GetCTPAccountName(0, szAcc))
      return false;
     if ( g_pMainFormework->GetAccount2(2,szAcc).intVal == 255 )
     {
      return false;
     }
     m_strAcc = szAcc;
     m_bAccConnected = true;
     Log("成功获取登录账号,初始化...");
     if (!g_pMainFormework->GetContract((char*)m_code.c_str(), m_wMarket, m_fMultipliter, m_fMinTick, m_fShortPercent, m_fLongPercent))
     {
      stringstream ss;
      ss << "获得合约信息失败!";
      Log(ss.str().c_str());
      return false;
     }
     else
     {
      stringstream ss;
      ss << "获得合约信息成功!合约:" << m_code << " 市场代码:" << m_wMarket << " 合约乘数:" << m_fMultipliter << " 最小变动单位:" << m_fMinTick << " 空头保证金率:" << m_fShortPercent << " 多头保证金率: " << m_fLongPercent;
      Log(ss.str().c_str());
     }
     int _itotal = g_pMainFormework->GetHolding2(szAcc); // 持仓合约总量
     stringstream ss;
     ss << "持仓合约总量: " << _itotal;
     Log(ss.str().c_str());} log 输出为:
    Account connected!
    成功获取登录账号,初始化...
    获得合约信息成功!合约:M09 市场代码:20804 合约乘数:10 最小变动单位:1 空头保证金率:5 多头保证金率: 5
    持仓合约总量: 0
    成功监听豆粕1609
    成功获取登录账号,初始化...
    获得合约信息成功!合约:Y09 市场代码:20804 合约乘数:10 最小变动单位:2 空头保证金率:5 多头保证金率: 5
    持仓合约总量: 0
    成功监听豆油1609
    成功获取登录账号,初始化...
    获得合约信息成功!合约:I09 市场代码:20804 合约乘数:100 最小变动单位:0.5 空头保证金率:5 多头保证金率: 5
    持仓合约总量: 0

     

  • 网友回复: 我在一台机器上是好的, if ( g_pMainFormework->GetAccount2(2,szAcc).intVal == 255 )
     {
      return false;
     }
    这个是能成功返回的,另一台机器上就不行,两台机器都是模拟账号,不一样的账号

 

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

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


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

相关文章

    没有相关内容