以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5) ---- [求助]VC++6.0 回报无账户名和无法取资金权益 (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=75592) |
-- 作者:ttttyyyy -- 发布时间:2015/2/12 9:39:32 -- [求助]VC++6.0 回报无账户名和无法取资金权益 用金字塔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账户错误,请测试修改更正! |
-- 作者:王锋 -- 发布时间:2015/2/12 14:14:21 -- 1,应该是你自己的使用错误导致 2,VARIANT 类型的变量是变体类型,你这么直接使用的方法本身就有很大问题,使用前你应该判断变量类型后再去调用,或者使用下面的代码进行类型转换强制转换后再用
COleVariant Cvt1(vtMax); |