| 以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 高级功能研发区 (http://222.73.7.161/bbs/list.asp?boardid=5) ---- vc++开发dll遇到问题 (http://222.73.7.161/bbs/dispbbs.asp?boardid=5&id=137829) | 
| --  作者:三木成材 -- 发布时间:2016/8/10 22:23:03 -- vc++开发dll遇到问题 大家好,我在用金字塔网站下载的VC++范例进行DLL开发,但是范例在vc++6.0下编译成功,却在文件夹里找不到AddinDemo.adi或者AddinDemo.dll,请大侠指教!谢谢! | 
| --  作者:王锋 -- 发布时间:2016/8/10 22:24:17 -- VC的工程属性设置里,看看编译后的文件的存放路径在哪里 | 
| --  作者:三木成材 -- 发布时间:2016/8/10 22:32:05 -- 太感谢,找到了,在D:\\Weisoft Stock(x86)下面,谢谢! | 
| --  作者:emtfemtf -- 发布时间:2016/8/11 6:31:47 -- 金字塔网站上,哪里有VC的范例呢? | 
| --  作者:三木成材 -- 发布时间:2016/8/13 12:57:35 -- 再请教一下,我想设置几个变量记录持仓量、持仓均价、目前交易获利、按现价平仓盈亏和几个数组,我是在CMainWindowDlg类中增加成员变量好呢,还是在设置全局变量好呢(StdAfx.cpp中:int m_globalA;然后在StdAfx.h中:extern int m_globalA;) 或者类中变量设置为静态好呢?我希望晚上电脑关闭后,第二天还能继续这些变量的继续记录!谢谢! | 
| --  作者:王锋 -- 发布时间:2016/8/15 9:01:23 -- StdAfx.cpp中:int m_globalA;然后在StdAfx.h中:extern int m_globalA;) 会更好一些 | 
| --  作者:三木成材 -- 发布时间:2016/8/17 22:26:18 -- 各位老师,我在DLL编写后调试中遇到一个问题:持仓手数统计中,我在OrderStatus函数的返回值为"Tradeing" 时统计,持仓量+= m_gCCV-pKsi->m_nFilled,结果当分多次成交时,统计重复了;后来我改在返回为"Filled" 时统计,又出现一个问题,当有两个委托单时,前一个委托单的成交量又没有被统计进去,恳请指教!代码如下: /*  订单的变化类型,有如下字符串值: "Cancelled"  表示订单已经撤销 "Submitted"和"PreSubmitted"  表示订单已经提交,当只成交一部分尚未完全成交时也会出现此事件,此时已成交数量在Filled参数中显示 "Filled"    表示本地订单已经全部成交 "Tradeing"  每笔成交回报,此时Filled是本次成交数量,Remaining将始终为0 "Inactive"  表示本次委托无效,比如价格超过允许范围,委托数量超出范围等等 "PendingSubmit" 本次委托已经发送服务器,但是服务器未发出确认消息(仅IB有效) "PendingCancel" 本次撤单委托已经发送服务器,但是服务器未发出确认消息(仅IB有效) */ void CMainWindowDlg::OrderStatus(BARGAIN_NOTIFY_KSI * pKsi) { 
					CString strLog; 
					strLog.Format("[回报] 挂单%d, 状态 %s", pKsi->m_nOrderID, pKsi->m_szStatus); 
					WriteLog(strLog); 
					//记录日志到文件 
					//LOG_DEBUG_INFO( "c:\\\\MyData.txt", "[回报] 挂单%d, 状态 %s", pKsi->m_nOrderID, pKsi->m_szStatus); 
					if(strcmp(pKsi->m_szStatus,"Tradeing") == 0) 
					{ 
					//在这里处理订单成交的代码 
					} 
					else if(strcmp(pKsi->m_szStatus ,"Cancelled")==0) 
					{ 
					} 
					else if(strcmp(pKsi->m_szStatus,"Filled")==0) 
					{ 
					if(pKsi->m_fPrice==委托价1) 
					{ 
				m_gCCP=(m_gCCP*m_gCCV+pKsi->m_nFilled*MM[kk])/(m_gCCV+pKsi->m_nFilled); 
					m_gCCV=m_gCCV+pKsi->m_nFilled;
					 
					}else if(pKsi->m_fPrice==委托价2) 
					{ 
				m_gCCP=(m_gCCP*m_gCCV+pKsi->m_nFilled*MM[kk])/(m_gCCV+pKsi->m_nFilled); 
					m_gCCV=m_gCCV+pKsi->m_nFilled; 
					} 
					else if(strcmp(pKsi->m_szStatus,"Inactive")==0) 
					{ 
					//在这里处理订单被撤销,无效订单 
					} } | 
| --  作者:王锋 -- 发布时间:2016/8/17 22:36:43 -- 不懂你的程序逻辑什么 | 
| --  作者:三木成材 -- 发布时间:2016/8/18 21:44:32 -- 我的程序逻辑是:在OnNotifyUpdate(WPARAM w,LPARAM l)中w=2时,对满足条件的价格进行 限价委托买入,然后需要在OrderStatus(BARGAIN_NOTIFY_KSI * pKsi)中获取成交情况,记录持仓手数,以便再次收到新价格时判断并确定卖出多少手 | 
| --  作者:王锋 -- 发布时间:2016/8/19 11:05:26 -- 你可以用TXT日志记录的方式来调试一下你的代码,如果出现运行情况与你预期不符,通过日志来查找一下问题原因。 我们无法得知你的具体逻辑,所以你提出的问题我们无法帮你解决,只是初步看了一下你的程序隐患在if(pKsi->m_fPrice==委托价1)这里,我们C++程序员都应该知道浮点数是存在浮点误差的,不能将2个浮点数直接用=的方式去判断 |