From 9190340264f947b7978072aad4b0d9660f9f891f Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期一, 16 一月 2023 18:09:13 +0800 Subject: [PATCH] '交易策略优化' --- app/appDlg.cpp | 140 +++++++++++++++++++++++++++++++++------------- 1 files changed, 100 insertions(+), 40 deletions(-) diff --git a/app/appDlg.cpp b/app/appDlg.cpp index 3ecba12..a32377e 100644 --- a/app/appDlg.cpp +++ b/app/appDlg.cpp @@ -294,13 +294,29 @@ } } autoMsgStatic.SetWindowTextW(_T("绛夊緟鎵撳紑鍓睆1...")); - THSActionUtil::openSecondScreen(); + + for (int i = 0; i < 5; i++) { + HWND second = THSActionUtil::getSecondWindow(); + if (second > 0) { + break; + } + THSActionUtil::openSecondScreen(); + Sleep(1000); + } + autoMsgStatic.SetWindowTextW(_T("鍓睆1宸叉墦寮�...")); Sleep(1000); // 寮�鍚� 娑ㄥ仠璇嗗埆 autoMsgStatic.SetWindowTextW(_T("鍚姩娑ㄥ仠璇嗗埆涓�...")); CappDlg::OnBnClickedButton12(); autoMsgStatic.SetWindowTextW(_T("鍚姩娑ㄥ仠鍚姩鎴愬姛")); + + // 寮�鍚鎵樿瘑鍒� + + // 寮�鍚氦鏄撴垚鍔熻瘑鍒� + + + } } else { @@ -464,7 +480,7 @@ } -void CappDlg::OnL2DataCallback(int index, string code, long captureTime, long processTime, list<TradeData> dataList, void* context) { +void CappDlg::OnL2DataCallback(int index, string code, long captureTime, long processTime, list<TradeData*> dataList, void* context) { //杞负json CappDlg* app = (CappDlg*)context; //cout << "鍥炶皟:" << std::this_thread::get_id() << ":" << index << endl; @@ -472,6 +488,10 @@ bool check = btn->GetCheck(); if (check) { string data = JsonUtil::loadL2Data(app->clientNum, index, code, captureTime, processTime, dataList); + for (list<TradeData*>::iterator el = dataList.begin(); el != dataList.end();++el) { + delete (*el); + } + dataList.clear(); clock_t time_start = clock(); try { app->socketManager->sendMsg(index, data.c_str()); @@ -1385,7 +1405,7 @@ if (p.length() <= 0) { return; } - list<TradeData> result = capture->captureLevel2TradeData(cv::imread(p), 0); + list<TradeData*> result = capture->captureLevel2TradeData(cv::imread(p), 0); time = clock() - time; Clevel2DataDlg::level2Data = { time, result }; @@ -1414,7 +1434,7 @@ if (p.length() <= 0) { return; } - list<TradeData> result = capture->captureLevel2TradeData(cv::imread(p), 0); + list<TradeData*> result = capture->captureLevel2TradeData(cv::imread(p), 0); time = clock() - time; Clevel2DataDlg::level2Data = { time, result }; @@ -1756,6 +1776,67 @@ void CappDlg::OnBnClickedButtonTradeDelegate() { + //鎵撳紑鍚岃姳椤鸿繙鑸増鐨勫鎵樼晫闈� + HWND win = 0; + if (win <= 0) { + //鍒ゆ柇鏄惁宸茬粡鎵撳紑浜嗗悓鑺遍『杩滆埅鐗� + for (int i = 0; i < 10; i++) + { + win = THSActionUtil::getTradeSimpleDelegateWindow(); + if (win <= 0) + { + list<HWND> wlist = Win32Util::searchWindow("鍚岃姳椤鸿繙鑸増"); + if (wlist.size() > 0) { + HWND mainWin = *(wlist.begin()); + //鎸塅12 + Win32Util::sendMessage(mainWin, WM_KEYDOWN, VK_F12, 0); + Win32Util::sendMessage(mainWin, WM_KEYUP, VK_F12, 0); + //绛夊緟鍙嶅簲 + Sleep(500); + } + else { + //绛夊緟杩滆埅鐗堟墦寮� + Sleep(1000); + } + } + else { + break; + } + } + } + + //濡傛灉宸茬粡鎵撳紑浜嗚繙鑸増鐨勪氦鏄擄紝灏遍渶瑕佺偣鍑诲綋鏃ュ鎵� + try { + HWND menuWin = TradeListCapture::getSimpleTradeLeftMenu(win); + if (menuWin > 0) { + cv::Mat img = CaptureUtil::capture(menuWin); + string result = JsonUtil::loadOcrData(clientNum, img, "褰撴棩濮旀墭"); + result = socketManager->sendMsg(result.c_str()); + Json::Value root = JsonUtil::parseJson(result); + if (root["code"] == 0) { + //鍥惧儚璇嗗埆鎴愬姛 + Json::Value datas = root["data"]["datas"]; + Json::Value ps = datas[0]["position"]; + //position鏍煎紡锛歔[0,13],[12,13],[12,15],[0,15]] + //鑾峰彇涓績鐐� + int x = (ps[0][0].asInt() + ps[1][0].asInt()) / 2; + int y= (ps[0][1].asInt() + ps[2][1].asInt()) / 2; + RECT rect; + Win32Util::getWindowRect(menuWin,&rect); + x = rect.left + x; + y = rect.top + y; + //鐐瑰嚮 + Win32Util::click(x,y,10); + } + } + + } + catch (...) { + + } + + + @@ -1787,7 +1868,6 @@ AfxMessageBox(msg); return; } - tradeListCapture->startTradeDelegate(); delegateBtn.SetWindowTextW(_T("鏆傚仠濮旀墭璇嗗埆浠诲姟")); } @@ -1799,46 +1879,26 @@ //娴嬭瘯鎸夐挳 void CappDlg::OnBnClickedButtonTest() { - int index = 0; - std::list<TradeData> dataList; - for (int i = 0; i < 10; i++) { - TradeData data = TradeData(); - //7.32 - data.time = "09:30:00"; - data.price = "26.84"; - data.operateType = OPERATE_BUY; - data.limitPrice = LIMIT_PRICE_UP; - data.num = 5000 + i; - dataList.push_back(data); + cv::Mat mat = cv::imread("C:\\Users\\Administrator\\Desktop\\ocr\\trade\\Snipaste_2023-01-13_18-23-34_gray.png", cv::IMREAD_GRAYSCALE); + Json::Value array; + int len = mat.rows * mat.cols; + for (int i = 0; i < len; i++) { + array[i] = mat.data[i]; } - - for (int i = 10; i < 11; i++) { - TradeData data = TradeData(); - //7.32 - data.time = "09:30:00"; - data.price = "26.84"; - data.operateType = OPERATE_BUY_CANCEL; - data.limitPrice = LIMIT_PRICE_UP; - data.num = 5000 + i; - dataList.push_back(data); - } - - - - - string data = JsonUtil::loadL2Data(clientNum, 0, "002338", 0, 0, dataList); - clock_t time_start = clock(); + Json::Value data; + data["data"] = array; + data["width"] = mat.cols; + data["height"] = mat.rows; + data["key"] = "褰撴棩濮旀墭" ; + Json::Value root; + root["data"] = data; + root["type"] = 100; + string result = JsonUtil::jsonValue2String(root); try { - socketManager->sendMsg(index, data.c_str()); + socketManager->sendMsg(result.c_str()); } catch (string st) { - //閲嶆柊杩炴帴鏈嶅姟鍣� - socketManager->resetClient(index); - socketManager->Connect(index); } - - - } void CappDlg::OnBnClickedCheck5() -- Gitblit v1.8.0