| | |
| | | |
| | | void CFloatTradeDlg::showTips(CString message, int msgType) |
| | | { |
| | | TipDlg *p_MsgWindow=new TipDlg(this); |
| | | TipDlg* p_MsgWindow = new TipDlg(this); |
| | | p_MsgWindow->Create(IDD_DIALOG_TIPS, this); |
| | | if (msgType == MSG_TYPE_INFO) { |
| | | msgColor = COLOR_BLACK; |
| | |
| | | { |
| | | |
| | | //请求网络获取消息 |
| | | try { |
| | | wstring result = NetworkApi::getCodeDesc(code); |
| | | CString resultC(result.c_str()); |
| | | context->setMsg(resultC, MSG_TYPE_INFO, FALSE); |
| | | } |
| | | catch (wstring st) { |
| | | CString msgc; |
| | | msgc.Append(CString(code.c_str())); |
| | | msgc.Append(L":"); |
| | | msgc.Append(st.c_str()); |
| | | context->setMsg(msgc, MSG_TYPE_FAIL); |
| | | } |
| | | catch (CString st) { |
| | | CString msgc; |
| | | msgc.Append(CString(code.c_str())); |
| | | msgc.Append(L":"); |
| | | msgc.Append(st); |
| | | context->setMsg(msgc, MSG_TYPE_FAIL); |
| | | } |
| | | try { |
| | | wstring result = NetworkApi::getCodeDesc(code); |
| | | CString resultC(result.c_str()); |
| | | context->setMsg(resultC, MSG_TYPE_INFO, FALSE); |
| | | } |
| | | catch (wstring st) { |
| | | CString msgc; |
| | | msgc.Append(CString(code.c_str())); |
| | | msgc.Append(L":"); |
| | | msgc.Append(st.c_str()); |
| | | context->setMsg(msgc, MSG_TYPE_FAIL); |
| | | } |
| | | catch (CString st) { |
| | | CString msgc; |
| | | msgc.Append(CString(code.c_str())); |
| | | msgc.Append(L":"); |
| | | msgc.Append(st); |
| | | context->setMsg(msgc, MSG_TYPE_FAIL); |
| | | } |
| | | } |
| | | |
| | | void CFloatTradeDlg::selectSellVolume(string code, int percent) |
| | |
| | | CButton* pButton = (CButton*)GetDlgItem(v_ids[i]); |
| | | CString st; |
| | | st.Append(L"1/"); |
| | | st.Append(to_wstring(i+1).c_str()); |
| | | st.Append(to_wstring(i + 1).c_str()); |
| | | if (i + 1 == percent) { |
| | | st.Append(L"※"); |
| | | } |
| | | pButton->SetWindowTextW(st); |
| | | } |
| | | sellPercentMap[code] = percent; |
| | | if (codePosition.available <=0){ |
| | | if (codePosition.available <= 0) { |
| | | editLeftVolume.SetWindowTextW(L"0"); |
| | | return; |
| | | } |
| | |
| | | string result = NetworkApi::get_code_position_info(code); |
| | | auto doc = JsonUtil::parseUTF16(result); |
| | | if (doc.IsObject()) { |
| | | context->codePosition.total = doc[L"data"][L"total"].GetInt(); |
| | | context->codePosition.available = doc[L"data"][L"available"].GetInt(); |
| | | context->codePosition.sell_rules_count = doc[L"data"][L"sell_rules_count"].GetInt(); |
| | | //设置内容 |
| | | context->showCodePositionInfo(); |
| | | context->codePosition.total = doc[L"data"][L"total"].GetInt(); |
| | | context->codePosition.available = doc[L"data"][L"available"].GetInt(); |
| | | context->codePosition.sell_rules_count = doc[L"data"][L"sell_rules_count"].GetInt(); |
| | | //设置内容 |
| | | context->showCodePositionInfo(); |
| | | |
| | | if (showCodeDesc && doc[_T("data")].HasMember(L"code_info")) |
| | | { |
| | | wstring c = doc[_T("data")][_T("code_info")].GetArray()[0].GetString(); |
| | | wstring name = L""; |
| | | if (!doc[_T("data")][_T("code_info")].GetArray()[1].IsNull()) { |
| | | name = doc[_T("data")][_T("code_info")].GetArray()[1].GetString(); |
| | | } |
| | | wstring desc = doc[_T("data")][_T("desc")].GetString(); |
| | | wstring fresult; |
| | | fresult.append(c).append(L" ").append(name).append(L" ").append(desc); |
| | | CString resultC(fresult.c_str()); |
| | | context->setMsg(resultC, MSG_TYPE_INFO, FALSE); |
| | | } |
| | | if (showCodeDesc && doc[_T("data")].HasMember(L"code_info")) |
| | | { |
| | | auto data = doc[_T("data")].GetObjectW(); |
| | | wstring c = data[_T("code_info")].GetArray()[0].GetString(); |
| | | wstring name = L""; |
| | | if (!data[_T("code_info")].GetArray()[1].IsNull()) { |
| | | name = data[_T("code_info")].GetArray()[1].GetString(); |
| | | } |
| | | if (data.HasMember(L"desc")) { |
| | | wstring desc = data[_T("desc")].GetString(); |
| | | wstring fresult; |
| | | fresult.append(c).append(L" ").append(name).append(L" ").append(desc); |
| | | CString resultC(fresult.c_str()); |
| | | context->setMsg(resultC, MSG_TYPE_INFO, FALSE); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | catch (wstring st) { |
| | |
| | | Sleep(delayMs); |
| | | } |
| | | try { |
| | | // 测试 |
| | | string result = NetworkApi::get_sell_result(order_ref); |
| | | //string result = string(StringUtil::cstring2String(L"{\"code\":0,\"data\":{\"msg\":\"成交\"}}")); |
| | | |
| | | auto doc = JsonUtil::parseUTF16(result); |
| | | if (doc.IsObject()) { |
| | | if (doc[L"code"] == 0) { |
| | |
| | | CString code; |
| | | context->editCode.GetWindowText(code); |
| | | if (code && code.GetLength() == 6) { |
| | | requestCodePosition(StringUtil::cstring2String(code), context,FALSE); |
| | | requestCodePosition(StringUtil::cstring2String(code), context, FALSE); |
| | | } |
| | | } |
| | | else { |
| | |
| | | void CFloatTradeDlg::showCodePositionInfo() |
| | | { |
| | | labelTotalPosition.SetWindowTextW(std::to_wstring(codePosition.total).c_str()); |
| | | labelSelledVolume.SetWindowTextW(std::to_wstring(codePosition.total- codePosition.available).c_str()); |
| | | labelSelledVolume.SetWindowTextW(std::to_wstring(codePosition.total - codePosition.available).c_str()); |
| | | editLeftVolume.SetWindowTextW(std::to_wstring(codePosition.available).c_str()); |
| | | if (codePosition.sell_rules_count > 0) { |
| | | btnSellRule.SetWindowTextW(L"盯板上卖※"); |
| | |
| | | |
| | | void CFloatTradeDlg::OnClickedBtnAlreadyCanceled() |
| | | { |
| | | //CString st("测试123123"); |
| | | //showTips(st); |
| | | //list<HWND> hwnds = Win32Util::searchWindow("副屏1"); |
| | | //HWND hwnd = *(hwnds.begin()); |
| | | //::SetWindowPos(hwnd, HWND_TOPMOST,0,0,0,0, SWP_NOMOVE | SWP_NOSIZE); |
| | | //return; |
| | | |
| | | // 撤单 |
| | |
| | | |
| | | void CFloatTradeDlg::OnClickedBtnSell() |
| | | { |
| | | |
| | | if (codePosition.total <= 0) { |
| | | setMsg(L"无持仓", MSG_TYPE_FAIL); |
| | | return; |
| | | } |
| | | |
| | | if (codePosition.available<=0) { |
| | | if (codePosition.available <= 0) { |
| | | setMsg(L"已卖完", MSG_TYPE_FAIL); |
| | | return; |
| | | } |
| | |
| | | } |
| | | //0-价格笼子 1-跌停价 2-涨停价 3-现价 |
| | | int sellPriceType = comboSellPriceType.GetCurSel(); |
| | | if (sellPriceType < 0|| sellPriceType > 10) { |
| | | if (sellPriceType < 0 || sellPriceType > 10) { |
| | | setMsg(L"请选择卖价类型", MSG_TYPE_FAIL); |
| | | return; |
| | | } |
| | | |
| | | // 卖 |
| | | try { |
| | | string code = getCode(); |
| | | string result = NetworkApi::sell(code, sell_volume_int, sellPriceType, true); |
| | | //string result = string( StringUtil::cstring2String( L"{\"code\":0,\"data\":{\"orderRef\":123123}}")); |
| | | CString msg(code.c_str()); |
| | | msg.Append(L":"); |
| | | auto doc = JsonUtil::parseUTF16(result); |
| | | if (doc[L"data"].HasMember(L"orderRef")) { |
| | | msg.Append(_T("提交卖成功")); |
| | | setMsg(msg, MSG_TYPE_SUCCESS); |
| | | string orderRef = StringUtil::cstring2String(doc[L"data"][L"orderRef"].GetString()); |
| | | std::thread t1(requestSellResult, orderRef, this, 2000); |
| | | t1.detach(); |
| | | if (doc.IsObject() && doc.HasMember(L"code")) { |
| | | if (doc[L"code"] == 0) { |
| | | if (doc[L"data"].HasMember(L"orderRef")) { |
| | | msg.Append(_T("提交卖成功")); |
| | | setMsg(msg, MSG_TYPE_SUCCESS); |
| | | string orderRef = std::to_string(doc[L"data"][L"orderRef"].GetInt()); |
| | | std::thread t1(requestSellResult, orderRef, this, 2000); |
| | | t1.detach(); |
| | | } |
| | | else { |
| | | msg.Append(doc[L"data"][L"orderStatusMsg"].GetString()); |
| | | setMsg(msg, MSG_TYPE_FAIL); |
| | | } |
| | | } |
| | | else { |
| | | msg.Append(doc[L"msg"].GetString()); |
| | | setMsg(msg, MSG_TYPE_FAIL); |
| | | } |
| | | } |
| | | else { |
| | | msg.Append(doc[L"data"][L"orderStatusMsg"].GetString()); |
| | | msg.Append(L"解析结果出错"); |
| | | setMsg(msg, MSG_TYPE_FAIL); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | catch (wstring st) { |
| | | CString msg(st.c_str()); |
| | |
| | | |
| | | LRESULT CFloatTradeDlg::OnFloatMsg(WPARAM wParam, LPARAM lParam) |
| | | { |
| | | |
| | | |
| | | FloatMsg* pData = (FloatMsg*)lParam; |
| | | |
| | | showTips(CString(pData->msg.c_str()), pData->msgType); |
| | |
| | | CString volume; |
| | | editLeftVolume.GetWindowText(volume); |
| | | SellRuleDlg dlg(code, volume); |
| | | //dlg.Create(IDD_BUY,this); |
| | | //dlg.ShowWindow(SW_SHOW); |
| | | //return; |
| | | //dlg.Create(IDD_BUY,this); |
| | | //dlg.ShowWindow(SW_SHOW); |
| | | //return; |
| | | INT_PTR nResponse = dlg.DoModal(); |
| | | } |
| | | |
| | |
| | | if (v_ids[i] == nID) { |
| | | CString codew; |
| | | editCode.GetWindowTextW(codew); |
| | | selectSellVolume(StringUtil::cstring2String(codew) ,i + 1); |
| | | selectSellVolume(StringUtil::cstring2String(codew), i + 1); |
| | | break; |
| | | } |
| | | } |