欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → [求助]VC++6.0 回报无账户名和无法取资金权益

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2575人关注过本帖树形打印复制链接

主题:[求助]VC++6.0 回报无账户名和无法取资金权益

帅哥哟,离线,有人找我吗?
ttttyyyy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:26 积分:41 威望:0 精华:0 注册:2012/5/7 10:04:39
[求助]VC++6.0 回报无账户名和无法取资金权益  发帖心情 Post By:2015/2/12 9:39:32 [只看该作者]

用金字塔3.41自带的AddinDemo插件修改以下(成交回报)内容:

void CMainWindowDlg::OrderStatus(BARGAIN_NOTIFY_KSI * pKsi)
{
CString strLog;
//strLog.Format("[回报] 挂单%d, 状态 %s", pKsi->m_nOrderID, pKsi->m_strStatus);

//这段是调试的代码
strLog.Format("[回报] 挂单%d, 状态 %s, 账号=%s", pKsi->m_nOrderID, pKsi->m_strStatus, pKsi->m_strAccount);
WriteLog(strLog);
long m_KeYongZhiJin = (long)g_pMainFormework->GetAccount2(3, "8000273").fltVal; //可用资金
strLog.Format("可用资金1=%d", m_KeYongZhiJin);
WriteLog(strLog);
m_KeYongZhiJin = (long)g_pMainFormework->GetAccount(3).fltVal; //可用资金
strLog.Format("可用资金2=%d", m_KeYongZhiJin);
WriteLog(strLog);
long m_DongTaiQuanYi = (long)g_pMainFormework->GetAccount2(6, "8000273").fltVal; // 动态权益
strLog.Format("动态权益1=%d", m_DongTaiQuanYi);
WriteLog(strLog);
m_DongTaiQuanYi = (long)g_pMainFormework->GetAccount(6).fltVal; // 动态权益
strLog.Format("动态权益2=%d", m_DongTaiQuanYi);
WriteLog(strLog);
//以上这段是调试的代码

if(pKsi->m_strStatus == "Tradeing")
{
}
else if(pKsi->m_strStatus == "Cancelled" || pKsi->m_strStatus == "Filled" || pKsi->m_strStatus == "Inactive")
{
}
}

点下单,得到结果
2015.02.12 09:26:17 [回报] 挂单-123392180, 状态 Filled, 账号=_^][兡0?
2015.02.12 09:26:17 可用资金1=0
2015.02.12 09:26:17 可用资金2=0
2015.02.12 09:26:17 动态权益1=0
2015.02.12 09:26:17 动态权益2=0

共有2个问题
1、成交回报中账户名pKsi->m_strAccount错误
2、GetAccount和GetAccount2无法取得正确的账户内容
以上代码在2.997下的运行结果是正确的,在3.41下CTP账户错误,请测试修改更正!


 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2015/2/12 14:14:21 [只看该作者]

1,应该是你自己的使用错误导致

2,VARIANT 类型的变量是变体类型,你这么直接使用的方法本身就有很大问题,使用前你应该判断变量类型后再去调用,或者使用下面的代码进行类型转换强制转换后再用

 

COleVariant Cvt1(vtMax);
     Cvt1.ChangeType(VT_R4);
     dbMax = Cvt1.fltVal;



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部