| | |
| | | DDX_Control(pDX, IDC_CHECK_TRADE_TIME_TRADE_SUCCESS, tradeSuccessTimeCheck); |
| | | DDX_Control(pDX, IDC_CHECK_TRADE_TIME_DELEGATE, delegateTimeCheck); |
| | | DDX_Control(pDX, IDC_CHECK_TRADE_TIME_LIMIT_UP, limitUpTimeCheck); |
| | | DDX_Control(pDX, IDC_BUTTON_UPLOAD_EXCEL_CODE, uploadExcelGPBtn); |
| | | DDX_Control(pDX, IDC_CHECK_BUY1_VOLUMN_TIME_LIMIT, buy1VolumnTimeLimitCheck); |
| | | DDX_Control(pDX, IDC_BUTTON_BUY_1_VOLUMN, buy1VolumnBtn); |
| | | DDX_Control(pDX, IDC_CHECK_ONLINE, onlineCheck); |
| | | DDX_Control(pDX, IDC_BUTTON_UPLOAD_GPCODE, uploadGPCodeBtn); |
| | | DDX_Control(pDX, IDC_BUTTON_GP_CODE_ADD, addGPCodeBtn); |
| | | } |
| | | |
| | | BEGIN_MESSAGE_MAP(CappDlg, CDialogEx) |
| | |
| | | ON_BN_CLICKED(IDC_CHECK_TRADE_TIME_TRADE_SUCCESS, &CappDlg::OnBnClickedCheckTradeTimeTradeSuccess) |
| | | ON_BN_CLICKED(IDC_CHECK_TRADE_TIME_DELEGATE, &CappDlg::OnBnClickedCheckTradeTimeDelegate) |
| | | ON_BN_CLICKED(IDC_CHECK_PRICE_TIME_LIMIT, &CappDlg::OnBnClickedCheckPriceTimeLimit) |
| | | ON_BN_CLICKED(IDC_BUTTON_UPLOAD_EXCEL_CODE, &CappDlg::OnBnClickedButtonUploadExcelCode) |
| | | ON_BN_CLICKED(IDC_BUTTON_BUY_1_VOLUMN, &CappDlg::OnBnClickedButtonBuy1Volumn) |
| | | ON_BN_CLICKED(IDC_BUTTON_UPLOAD_GPCODE, &CappDlg::OnBnClickedButtonUploadGpcode) |
| | | ON_BN_CLICKED(IDC_CHECK_BUY1_VOLUMN_TIME_LIMIT, &CappDlg::OnBnClickedCheckBuy1VolumnTimeLimit) |
| | | ON_BN_CLICKED(IDC_BUTTON_GP_CODE_ADD, &CappDlg::OnBnClickedButtonGpCodeAdd) |
| | | END_MESSAGE_MAP() |
| | | |
| | | |
| | |
| | | |
| | | limitUpTimeCheck.SetCheck(TRUE); |
| | | LimitUpCapture::setTradeTimeCapture(limitUpTimeCheck.GetCheck()); |
| | | |
| | | |
| | | tradeSuccessTimeCheck.SetCheck(TRUE); |
| | | TradeListCapture::setTradeTimeCapture_success(tradeSuccessTimeCheck.GetCheck()); |
| | | |
| | | delegateTimeCheck.SetCheck(TRUE); |
| | | TradeListCapture::setTradeTimeCapture_delegate(delegateTimeCheck.GetCheck()); |
| | | |
| | | priceTimeLimitCheck.SetCheck(TRUE); |
| | | CurrentPriceCapture::setTradeTimeCapture(TRUE); |
| | | |
| | | |
| | | buy1VolumnTimeLimitCheck.SetCheck(TRUE); |
| | | TradeQueueCaptureManager::setTradeTimeCapture(priceTimeLimitCheck.GetCheck()); |
| | | TradeQueueCaptureManager::setTradeTimeCapture(buy1VolumnTimeLimitCheck.GetCheck()); |
| | | |
| | | onlineCheck.SetCheck(TRUE); |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | //是否自动开启功能 |
| | | bool autoOpen = FALSE; |
| | | list<string> settings = Tool::getSettings("setting.txt"); |
| | | if (settings.size() > 0) { |
| | | string c = *(settings.begin()); |
| | | if (c == "1") { |
| | | autoOpen = TRUE; |
| | | } |
| | | else { |
| | | autoMsgStatic.SetWindowTextW(_T("")); |
| | | autoL2Check.SetCheck(FALSE); |
| | | } |
| | | } |
| | | if (autoOpen) { |
| | | autoL2Check.SetCheck(TRUE); |
| | | } |
| | | |
| | | if (authoritySet.count(AUTHORITY_L2) > 0) { |
| | | onlineCheck.SetCheck(FALSE); |
| | |
| | | resetTHSBtn.EnableWindow(TRUE); |
| | | refreshHWNDBtn.EnableWindow(TRUE); |
| | | onlineCheck.EnableWindow(TRUE); |
| | | list<string> settings = Tool::getSettings("setting.txt"); |
| | | if (settings.size() > 0) { |
| | | string c = *(settings.begin()); |
| | | if (c == "1") { |
| | | autoMsgStatic.SetWindowTextW(_T("正在自动启动中...")); |
| | | autoL2Check.SetCheck(TRUE); |
| | | thread rt(&(CappDlg::autoStartL2), this); |
| | | rt.detach(); |
| | | } |
| | | else { |
| | | autoMsgStatic.SetWindowTextW(_T("")); |
| | | autoL2Check.SetCheck(FALSE); |
| | | } |
| | | if (autoOpen) { |
| | | autoMsgStatic.SetWindowTextW(_T("正在自动启动中...")); |
| | | thread rt(&(CappDlg::autoStartL2), this); |
| | | rt.detach(); |
| | | } |
| | | } |
| | | else { |
| | |
| | | |
| | | if (authoritySet.count(AUTHORITY_LIMIT_UP) > 0) { |
| | | limitUpBtn.EnableWindow(TRUE); |
| | | //自动开启涨停 |
| | | if (autoOpen) { |
| | | //等待同花顺主屏是否打开 |
| | | autoMsgStatic.SetWindowTextW(_T("正在等待THS主屏启动...")); |
| | | for (int i = 0; i < 10; i++) { |
| | | HWND hwnd = THSActionUtil::getMainWin(); |
| | | Sleep(1000); |
| | | if (hwnd > 0) { |
| | | break; |
| | | } |
| | | } |
| | | autoMsgStatic.SetWindowTextW(_T("等待打开副屏1...")); |
| | | THSActionUtil::openSecondScreen(); |
| | | autoMsgStatic.SetWindowTextW(_T("副屏1已打开...")); |
| | | Sleep(1000); |
| | | // 开启 涨停识别 |
| | | autoMsgStatic.SetWindowTextW(_T("启动涨停识别中...")); |
| | | CappDlg::OnBnClickedButton12(); |
| | | autoMsgStatic.SetWindowTextW(_T("启动涨停启动成功")); |
| | | } |
| | | } |
| | | else { |
| | | limitUpBtn.EnableWindow(FALSE); |
| | |
| | | |
| | | if (authoritySet.count(AUTHORITY_TRADE_SUCCESS) > 0) { |
| | | tradeBtn.EnableWindow(TRUE); |
| | | if (autoOpen) { |
| | | //自动打开交易成功页面成功 |
| | | HWND hwnd = THSActionUtil::getTradeSuccessWindow(); |
| | | if (hwnd <= 0) { |
| | | //打开交易成功页面,在主屏上按F12 |
| | | HWND mainWin = THSActionUtil::getMainWin(); |
| | | if (mainWin > 0) { |
| | | Win32Util::sendMessage(mainWin, WM_KEYDOWN, VK_F12, 0); |
| | | Win32Util::sendMessage(mainWin, WM_KEYUP, VK_F12, 0); |
| | | //等待页面打开 |
| | | for (int i = 0; i < 10; i++) { |
| | | hwnd = THSActionUtil::getTradeSuccessWindow(); |
| | | Sleep(1000); |
| | | if (hwnd > 0) { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (hwnd > 0) { |
| | | //交易页面打开 |
| | | THSActionUtil::openTradeSuccessScreen(); |
| | | //启动交易成功识别 |
| | | OnBnClickedButtonTrade(); |
| | | } |
| | | } |
| | | } |
| | | else { |
| | | tradeBtn.EnableWindow(FALSE); |
| | |
| | | if (authoritySet.count(AUTHORITY_TRADE_DELEGATE) > 0) { |
| | | delegateBtn.EnableWindow(TRUE); |
| | | currentPriceBtn.EnableWindow(TRUE); |
| | | if (autoOpen) { |
| | | thread rt1(&(CappDlg::autoStartTradeDelegate), this); |
| | | rt1.detach(); |
| | | thread rt2(&(CappDlg::autoStartCurrentPrice), this); |
| | | rt2.detach(); |
| | | } |
| | | } |
| | | else { |
| | | delegateBtn.EnableWindow(FALSE); |
| | |
| | | |
| | | if (authoritySet.count(AUTHORITY_UPLOAD_CODE) > 0) { |
| | | uploadGPBtn.EnableWindow(FALSE); |
| | | uploadExcelGPBtn.EnableWindow(FALSE); |
| | | addGPCodeBtn.EnableWindow(TRUE); |
| | | uploadGPCodeBtn.EnableWindow(TRUE); |
| | | } |
| | | else { |
| | | uploadGPBtn.EnableWindow(FALSE); |
| | | uploadExcelGPBtn.EnableWindow(FALSE); |
| | | addGPCodeBtn.EnableWindow(FALSE); |
| | | uploadGPCodeBtn.EnableWindow(FALSE); |
| | | } |
| | | |
| | | |
| | | if (authoritySet.count(AUTHORITY_TRADE_QUEUE) > 0) { |
| | | buy1VolumnBtn.EnableWindow(TRUE); |
| | | if (autoOpen) { |
| | | thread rt3(&(CappDlg::autoStartBuy1Volumn), this); |
| | | rt3.detach(); |
| | | } |
| | | } |
| | | else { |
| | | buy1VolumnBtn.EnableWindow(FALSE); |
| | |
| | | else |
| | | { |
| | | CDialogEx::OnSysCommand(nID, lParam); |
| | | // 关闭按钮退出应用 |
| | | if (nID == 61536) { |
| | | exit(0); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | // 如果向对话框添加最小化按钮,则需要下面的代码 |
| | | // 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序, |
| | |
| | | } |
| | | } |
| | | |
| | | void CappDlg::OnClose() { |
| | | MessageBox(_T("内容"), _T("标题"), MB_OKCANCEL); |
| | | CDialogEx::OnClose(); |
| | | } |
| | | |
| | | //当用户拖动最小化窗口时系统调用此函数取得光标 |
| | | //显示。 |
| | |
| | | } |
| | | } |
| | | |
| | | void CappDlg::OnTradeQueueDataCallback(int index, string code, list<int> numList, void* context) { |
| | | void CappDlg::OnTradeQueueDataCallback(int index, string code, L2TradeQueue tradeQueue, void* context) { |
| | | //转为json |
| | | CappDlg* app = (CappDlg*)context; |
| | | //cout << "回调:" << std::this_thread::get_id() << ":" << index << endl; |
| | | CButton* btn = (CButton*)app->GetDlgItem(IDC_CHECK1); |
| | | bool check = btn->GetCheck(); |
| | | if (check) { |
| | | string data = JsonUtil::loadTradeQueueData(app->clientNum, index, code, numList); |
| | | string data = JsonUtil::loadTradeQueueData(app->clientNum, index, code, tradeQueue); |
| | | clock_t time_start = clock(); |
| | | try { |
| | | app->socketManager->sendMsg(index, data.c_str()); |
| | | app->socketManager->sendMsg(index + 9, data.c_str()); |
| | | } |
| | | catch (string st) { |
| | | //重新连接服务器 |
| | | app->socketManager->resetClient(index); |
| | | app->socketManager->Connect(index); |
| | | app->socketManager->resetClient(index + 9); |
| | | app->socketManager->Connect(index + 9); |
| | | } |
| | | //cout << "*****数据处理时间:" << (clock() - time_start) << endl; |
| | | } |
| | |
| | | if (check) { |
| | | string data = JsonUtil::loadTradeDelegateData(dataList); |
| | | clock_t time_start = clock(); |
| | | |
| | | |
| | | try { |
| | | app->socketManager->sendMsg(8, data.c_str()); |
| | |
| | | { |
| | | //转为json |
| | | CappDlg* app = (CappDlg*)context; |
| | | string data = JsonUtil::loadTradeQueue(index, result.code_name, result.buy_1_volumn, result.buy_1_price,result.time); |
| | | string data = JsonUtil::loadTradeQueue(index, result.code_name, result.buy_1_volumn, result.buy_1_price, result.time); |
| | | try { |
| | | app->socketManager->sendMsg(8, data.c_str()); |
| | | //AfxMessageBox(_T("上传成功")); |
| | |
| | | { |
| | | //转为json |
| | | CappDlg* app = (CappDlg*)context; |
| | | if (! app->onlineCheck) { |
| | | if (!app->onlineCheck) { |
| | | return "未知错误"; |
| | | } |
| | | if (!app->onlineCheck.GetCheck()) |
| | | { |
| | | throw string("客户端离线"); |
| | | } |
| | | |
| | | cout << "action回调:" << std::this_thread::get_id() << ":" << data << endl; |
| | | //解析命令 |
| | | Json::Value root = JsonUtil::parseJson(data); |
| | | bool forceAction = root["force"].asBool(); |
| | | if (!app->onlineCheck.GetCheck() && !forceAction) |
| | | { |
| | | throw string("客户端离线"); |
| | | } |
| | | string action = root["action"].asString(); |
| | | if (action == "setGPCode") { |
| | | //设置股票代码 |
| | |
| | | |
| | | //打开Level2监控屏幕 |
| | | THSActionUtil::openL2Screen(); |
| | | |
| | | |
| | | map<int, string> results = THSActionUtil::getListenL2GPCodes(recognitionManager); |
| | | //设置代码 |
| | | for (map<int, string>::iterator ele = results.begin();ele != results.end();ele++) { |
| | | for (map<int, string>::iterator ele = results.begin(); ele != results.end(); ele++) { |
| | | int key = (*ele).first; |
| | | string value = (*ele).second; |
| | | app->capture->setGPCode(key, value); |
| | | cout << "代码位:" << key << " CODE:" << value; |
| | | //TODO 记录日志 |
| | | //TODO 记录日志 |
| | | } |
| | | Sleep(500); |
| | | } |
| | |
| | | app->capture->start(index); |
| | | //恢复涨停识别 |
| | | LimitUpCapture::pause = FALSE; |
| | | } |
| | | else if (action == "betchSetGPCodes") { |
| | | //批量设置代码 |
| | | int len = root["data"].size(); |
| | | for (int i = 0; i < len; i++) { |
| | | int index = root["data"][i]["index"].asInt(); |
| | | string code = root["data"][i]["code"].asString(); |
| | | string quickCode = "5"; |
| | | quickCode.append(to_string(index + 1)); |
| | | list<string> codeList; |
| | | if (code.length() > 0) |
| | | { |
| | | codeList.push_back(code); |
| | | } |
| | | |
| | | try { |
| | | |
| | | if (!app->capture->isInited()) { |
| | | app->initCapture(false); |
| | | } |
| | | |
| | | //暂停采集 |
| | | app->capture->stop(index); |
| | | //暂停涨停识别 |
| | | LimitUpCapture::pause = TRUE; |
| | | |
| | | //打开Level2监控屏幕 |
| | | THSActionUtil::openL2Screen(); |
| | | |
| | | bool result = THSActionUtil::setGP(quickCode, codeList, recognitionManager); |
| | | if (!result) { |
| | | throw string("设置版块监控的GP失败"); |
| | | } |
| | | |
| | | } |
| | | catch (string e) { |
| | | throw e; |
| | | } |
| | | catch (...) { |
| | | throw string("未知错误(unknown error)"); |
| | | } |
| | | |
| | | } |
| | | |
| | | //map<int, string> results = THSActionUtil::getListenL2GPCodes(recognitionManager); |
| | | //设置代码 |
| | | //for (map<int, string>::iterator ele = results.begin(); ele != results.end(); ele++) { |
| | | // int key = (*ele).first; |
| | | // string value = (*ele).second; |
| | | // app->capture->setGPCode(key, value); |
| | | // cout << "代码位:" << key << " CODE:" << value; |
| | | //} |
| | | for (int i = 0; i < len; i++) { |
| | | try { |
| | | int index = root["data"][i]["index"].asInt(); |
| | | string code = root["data"][i]["code"].asString(); |
| | | app->capture->setGPCode(index, code); |
| | | cout << "代码位:" << index << " CODE:" << code; |
| | | } |
| | | catch (...) { |
| | | |
| | | } |
| | | Sleep(100); |
| | | } |
| | | |
| | | |
| | | |
| | | for (int i = 0; i < len; i++) { |
| | | try { |
| | | int index = root["data"][i]["index"].asInt(); |
| | | string code = root["data"][i]["code"].asString(); |
| | | //刷新L2数据 |
| | | THSActionUtil::setListenL2GP(index, code, recognitionManager); |
| | | |
| | | //打开Level2监控屏幕 |
| | | THSActionUtil::openL2Screen(); |
| | | } |
| | | catch (...) { |
| | | |
| | | } |
| | | Sleep(100); |
| | | } |
| | | |
| | | |
| | | //恢复识别 |
| | | for (int i = 0; i < len; i++) { |
| | | int index = root["data"][i]["index"].asInt(); |
| | | app->capture->start(index); |
| | | } |
| | | |
| | | //恢复涨停识别 |
| | | LimitUpCapture::pause = FALSE; |
| | | //可以接受命令 |
| | | //app->onlineCheck.SetCheck(TRUE); |
| | | //app->onlineCheck.PostMessage(WM_LBUTTONDOWN, 0, 0); |
| | | //app->onlineCheck.PostMessage(WM_LBUTTONUP, 0, 0); |
| | | RECT rect; |
| | | Win32Util::getWindowRect(app->onlineCheck.m_hWnd, &rect); |
| | | Win32Util::click((rect.left + rect.right )/ 2, (rect.top + rect.bottom) / 2, 10); |
| | | |
| | | } |
| | | else if (action == "repairL2Data") { |
| | | //修正代码与L2行情代码不对应 或者 L2行情无数据的情况 |
| | |
| | | } |
| | | catch (string st) { |
| | | throw st; |
| | | } |
| | | catch (...) { |
| | | throw string("未知错误"); |
| | | } |
| | | |
| | | } |
| | |
| | | //获取环境状态 |
| | | int l2_valid_count = 0; |
| | | int l2_invalid_count = 0; |
| | | for (int i = 0;i < THS_FRAME_COUNT;i++) |
| | | for (int i = 0; i < THS_FRAME_COUNT; i++) |
| | | { |
| | | clock_t latestTime = TaskChecker::clientLiveTime.l2[i]; |
| | | if (clock() - latestTime > 5000) { |
| | |
| | | app->OnBnClickedButton21(); |
| | | |
| | | //l2采集环境修复 |
| | | for (int i = 0;i < THS_FRAME_COUNT;i++) |
| | | for (int i = 0; i < THS_FRAME_COUNT; i++) |
| | | { |
| | | clock_t latestTime = TaskChecker::clientLiveTime.l2[i]; |
| | | if (clock() - latestTime > 5000) { |
| | |
| | | else if (action == "syncTargetCodes") { |
| | | Json::Value data = root["data"]; |
| | | list<string> codeList; |
| | | for (int i = 0;i < data.size();i++) { |
| | | for (int i = 0; i < data.size(); i++) { |
| | | string code = data[i].asString(); |
| | | codeList.push_back(code); |
| | | } |
| | |
| | | Json::Value root; |
| | | Json::Value data; |
| | | int index = 0; |
| | | for (std::list<GPCodeArea>::iterator ele = resultList.begin();ele != resultList.end();++ele) { |
| | | for (std::list<GPCodeArea>::iterator ele = resultList.begin(); ele != resultList.end(); ++ele) { |
| | | Json::Value item; |
| | | item["index"] = (*ele).cateIndex; |
| | | item["code"] = (*ele).code; |
| | |
| | | } |
| | | catch (string st) { |
| | | throw st; |
| | | } |
| | | catch (...) { |
| | | throw string("未知错误"); |
| | | } |
| | | } |
| | | |
| | |
| | | root["msg"] = "未知错误"; |
| | | } |
| | | return JsonUtil::jsonValue2String(root); |
| | | } |
| | | |
| | | string CappDlg::OnActionCallbackQueue(string data, void* context) |
| | | { |
| | | return string(); |
| | | } |
| | | |
| | | //心跳信号 |
| | |
| | | CappDlg* app = (CappDlg*)context; |
| | | app->autoMsgStatic.SetWindowTextW(_T("开始检测同花顺环境...")); |
| | | //点击检查同花顺 |
| | | for (int i = 0;i < 10;i++) |
| | | for (int i = 0; i < 10; i++) |
| | | { |
| | | try { |
| | | checkTHSEnv(app); |
| | |
| | | //app->OnBnClickedButtonTrade(); |
| | | //启动涨停识别 |
| | | //OnBnClickedButton12(); |
| | | |
| | | //可以接受命令 |
| | | app->onlineCheck.SetCheck(TRUE); |
| | | //发送自动化开始成功 |
| | | string data = JsonUtil::loadAutoStartL2(clientNum); |
| | | clock_t time_start = clock(); |
| | | try { |
| | | string result_msg = app->socketManager->sendMsg(8, data.c_str()); |
| | | Json::Value v_ = JsonUtil::parseJson(result_msg); |
| | | if (v_["code"] == 0) { |
| | | //判断是否需要自动开启在线 |
| | | //可以接受命令 |
| | | app->onlineCheck.SetCheck(TRUE); |
| | | } |
| | | else { |
| | | //不可以接受命令 |
| | | app->onlineCheck.SetCheck(FALSE); |
| | | } |
| | | } |
| | | catch (string st) { |
| | | //重新连接服务器 |
| | | app->socketManager->resetClient(8); |
| | | app->socketManager->Connect(8); |
| | | } |
| | | |
| | | } |
| | | |
| | | void CappDlg::autoStartTradeDelegate(void* context) |
| | | { |
| | | CappDlg* app = (CappDlg*)context; |
| | | app->autoMsgStatic.SetWindowTextW(_T("开始委托识别...")); |
| | | app->OnBnClickedButtonTradeDelegate(); |
| | | app->autoMsgStatic.SetWindowTextW(_T("委托识别启动成功")); |
| | | } |
| | | |
| | | void CappDlg::autoStartCurrentPrice(void* context) |
| | | { |
| | | CappDlg* app = (CappDlg*)context; |
| | | app->autoMsgStatic.SetWindowTextW(_T("开始现价识别...")); |
| | | app->OnBnClickedCurrentPrice(); |
| | | app->autoMsgStatic.SetWindowTextW(_T("现价识别启动成功")); |
| | | } |
| | | |
| | | void CappDlg::autoStartBuy1Volumn(void* context) |
| | | { |
| | | CappDlg* app = (CappDlg*)context; |
| | | app->autoMsgStatic.SetWindowTextW(_T("开始买1识别...")); |
| | | app->OnBnClickedButtonBuy1Volumn(); |
| | | app->autoMsgStatic.SetWindowTextW(_T("买1识别启动成功")); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | |
| | | |
| | | void CappDlg::OnBnClickedButton2() |
| | | { |
| | | for (int i = 0;i < 8;i++) |
| | | for (int i = 0; i < 8; i++) |
| | | { |
| | | socketManager->disConnect(i); |
| | | } |
| | |
| | | for (int i = 0; i < num; i++) |
| | | { |
| | | try { |
| | | if (socketManager->sendMsg(i, "test")) { |
| | | socketManager->sendMsg(i, "test"); |
| | | scount++; |
| | | } |
| | | |
| | | } |
| | | catch (string st) { |
| | | |
| | |
| | | int num = socketManager->getClientsNum(); |
| | | for (int i = 0; i < num; i++) |
| | | { |
| | | if (socketManager->sendMsg(i, "test")) { |
| | | scount++; |
| | | } |
| | | socketManager->sendMsg(i, "test"); |
| | | scount++; |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | return |
| | | |
| | | initCapture(); |
| | | initCapture(); |
| | | |
| | | clock_t time = clock(); |
| | | |
| | | CString path = GUITool::selectImage(); |
| | | std:string p = Tool::cstring2String(path); |
| | | std:string p = Tool::cstring2String(path); |
| | | if (p.length() <= 0) { |
| | | return; |
| | | } |
| | |
| | | cout << "尚未获取L2的监听代码" << endl; |
| | | } |
| | | //设置代码 |
| | | for (map<int, string>::iterator ele = result.begin();ele != result.end();ele++) { |
| | | for (map<int, string>::iterator ele = result.begin(); ele != result.end(); ele++) { |
| | | int key = (*ele).first; |
| | | string value = (*ele).second; |
| | | capture->setGPCode(key, value); |
| | |
| | | list<CString> paths = GUITool::selectMulImages(); |
| | | std::list<IndustryData> fResultList; |
| | | |
| | | for (list<CString>::iterator ele = paths.begin();ele != paths.end();ele++) { |
| | | for (list<CString>::iterator ele = paths.begin(); ele != paths.end(); ele++) { |
| | | CString path = *ele; |
| | | std:string p = Tool::cstring2String(path); |
| | | cv::Mat grayImg = gpDataCapture->grayImgs(cv::imread(p)); |
| | |
| | | |
| | | list<list<GPDataStruct>> resultList = gpDataCapture->captureGPData(grayImg, types, 6, 1, 2); |
| | | |
| | | for (list<list<GPDataStruct>>::iterator ele1 = resultList.begin();ele1 != resultList.end();ele1++) { |
| | | for (list<list<GPDataStruct>>::iterator ele1 = resultList.begin(); ele1 != resultList.end(); ele1++) { |
| | | IndustryData industryData = IndustryData(); |
| | | |
| | | list<GPDataStruct>::iterator e = (*ele1).begin(); |
| | |
| | | |
| | | |
| | | bool contains = false; |
| | | for (std::list<IndustryData>::iterator e = fResultList.begin();e != fResultList.end();e++) { |
| | | for (std::list<IndustryData>::iterator e = fResultList.begin(); e != fResultList.end(); e++) { |
| | | if ((*e).code == industryData.code) { |
| | | contains = true; |
| | | break; |
| | |
| | | list<CString> paths = GUITool::selectMulImages(); |
| | | std::list<IndustryData> fResultList; |
| | | |
| | | for (list<CString>::iterator ele = paths.begin();ele != paths.end();ele++) { |
| | | for (list<CString>::iterator ele = paths.begin(); ele != paths.end(); ele++) { |
| | | CString path = *ele; |
| | | std:string p = Tool::cstring2String(path); |
| | | cv::Mat img = cv::imread(p); |
| | |
| | | |
| | | list<list<GPDataStruct>> resultList = gpDataCapture->captureGPData(grayImg, types, 6, 1, 2); |
| | | |
| | | for (list<list<GPDataStruct>>::iterator ele1 = resultList.begin();ele1 != resultList.end();ele1++) { |
| | | for (list<list<GPDataStruct>>::iterator ele1 = resultList.begin(); ele1 != resultList.end(); ele1++) { |
| | | IndustryData industryData = IndustryData(); |
| | | |
| | | list<GPDataStruct>::iterator e = (*ele1).begin(); |
| | |
| | | |
| | | |
| | | bool contains = false; |
| | | for (std::list<IndustryData>::iterator e = fResultList.begin();e != fResultList.end();e++) { |
| | | for (std::list<IndustryData>::iterator e = fResultList.begin(); e != fResultList.end(); e++) { |
| | | if ((*e).code == industryData.code) { |
| | | contains = true; |
| | | break; |
| | |
| | | codesDataDlog dlg; |
| | | dlg.DoModal(); |
| | | } |
| | | |
| | | // Excel上传股票代码 |
| | | void CappDlg::OnBnClickedButtonUploadExcelCode() |
| | | { |
| | | CString cpath = GUITool::selectExcel(); |
| | | std:string path = Tool::cstring2String(cpath); |
| | | if (path.length() > 0) |
| | | { |
| | | std::list<IndustryData> fresult; |
| | | list<ExcelGPCodeInfo> codesList = ExcelUtil::readGPCodes(path); |
| | | list<ExcelGPCodeInfo>::iterator ele; |
| | | for (ele = codesList.begin();ele != codesList.end();++ele) { |
| | | ExcelGPCodeInfo info= *ele; |
| | | IndustryData finfo; |
| | | if (info.code.length()>0) |
| | | { |
| | | |
| | | finfo.code = info.code.replace(0, 2, ""); |
| | | if (info.zyltgb.find("亿",0) > 0) { |
| | | finfo.zyltMoneyUnit = MONEY_UNIT_Y; |
| | | string zyltgb = info.zyltgb; |
| | | finfo.zyltMoney = zyltgb.substr(0, zyltgb.length()-2); |
| | | } |
| | | else if (info.zyltgb.find("万",0) > 0) { |
| | | finfo.zyltMoneyUnit = MONEY_UNIT_W; |
| | | string zyltgb = info.zyltgb; |
| | | finfo.zyltMoney = zyltgb.substr(0, zyltgb.length() - 2); |
| | | } |
| | | else { |
| | | finfo.zyltMoneyUnit = MONEY_UNIT_NO; |
| | | finfo.zyltMoney = info.zyltgb; |
| | | } |
| | | fresult.push_back(finfo); |
| | | } |
| | | } |
| | | codesDataDlog::codeData = fresult; |
| | | codesDataDlog::upload = TRUE; |
| | | codesDataDlog dlg; |
| | | dlg.DoModal(); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | //涨停上传 |
| | |
| | | else { |
| | | try |
| | | { |
| | | tradeListCapture->refreshTradeDelegateHWND(); |
| | | tradeListCapture->refreshTradeSimpleDelegateHWND(); |
| | | } |
| | | catch (string st) |
| | | { |
| | |
| | | { |
| | | int index = 0; |
| | | std::list<TradeData> dataList; |
| | | for (int i = 0;i < 10;i++) { |
| | | for (int i = 0; i < 10; i++) { |
| | | TradeData data = TradeData(); |
| | | //7.32 |
| | | data.time = "09:30:00"; |
| | |
| | | dataList.push_back(data); |
| | | } |
| | | |
| | | for (int i = 10;i < 11;i++) { |
| | | for (int i = 10; i < 11; i++) { |
| | | TradeData data = TradeData(); |
| | | //7.32 |
| | | data.time = "09:30:00"; |
| | |
| | | |
| | | |
| | | |
| | | string data = JsonUtil::loadL2Data(clientNum, 0, "002338",0,0, dataList); |
| | | string data = JsonUtil::loadL2Data(clientNum, 0, "002338", 0, 0, dataList); |
| | | clock_t time_start = clock(); |
| | | try { |
| | | socketManager->sendMsg(index, data.c_str()); |
| | |
| | | // 买1 识别 |
| | | void CappDlg::OnBnClickedButtonBuy1Volumn() |
| | | { |
| | | |
| | | |
| | | if (!tradeQueueCaptureManager->isInited()) { |
| | | try { |
| | | tradeQueueCaptureManager->init(OnTradeQueueCallback, this); |
| | |
| | | std::list<IndustryData> fresult; |
| | | codesDataDlog::codeData = fresult; |
| | | codesDataDlog::upload = TRUE; |
| | | codesDataDlog::add = FALSE; |
| | | codesDataDlog dlg; |
| | | dlg.DoModal(); |
| | | } |
| | | |
| | | |
| | | void CappDlg::OnBnClickedCheckBuy1VolumnTimeLimit() |
| | | { |
| | | TradeQueueCaptureManager::setTradeTimeCapture(buy1VolumnTimeLimitCheck.GetCheck()); |
| | | } |
| | | |
| | | //新增股票代码 |
| | | void CappDlg::OnBnClickedButtonGpCodeAdd() |
| | | { |
| | | std::list<IndustryData> fresult; |
| | | codesDataDlog::codeData = fresult; |
| | | codesDataDlog::upload = TRUE; |
| | | codesDataDlog::add = TRUE; |
| | | codesDataDlog dlg; |
| | | dlg.DoModal(); |
| | | } |