admin
2023-01-16 9190340264f947b7978072aad4b0d9660f9f891f
ConsoleApplication/L2DataCapture.cpp
@@ -66,7 +66,7 @@
               throw string("截图出错");
            }
            list<TradeData> resultList = captureLevel2TradeData(mat, index);
            list<TradeData*> resultList = captureLevel2TradeData(mat, index);
            long processTime = clock() - start;
            data_callback(index, code, start, processTime, resultList, context);
            cout << "时间消耗:" << processTime << endl;
@@ -131,7 +131,7 @@
         }
      }
      Sleep(2);
      Sleep(50);
   }
}
@@ -246,14 +246,14 @@
   return inited;
}
list<TradeData>  L2DataCapture::captureLevel2TradeData(cv::Mat& oimg, int identify) {
list<TradeData*>  L2DataCapture::captureLevel2TradeData(cv::Mat& oimg, int identify) {
   if (oimg.rows == 0 || oimg.cols == 0) {
      throw ERROR_CODE_CAPTURE_FAIL;
   }
   clock_t  starttime = clock();
   list<TradeData> resultList = captureLevel2TradeData(openCLExcuter[identify], oimg, identify);
   list<TradeData*> resultList = captureLevel2TradeData(openCLExcuter[identify], oimg, identify);
   std::cout << "-------L2行情识别结束任务: threadid-" << std::this_thread::get_id() << "  序号:" << identify << " CODE:" << gpCodes[identify] << " 耗时:" << clock() - starttime << "  数据量:" << resultList.size() << endl;
@@ -261,7 +261,7 @@
}
list<TradeData> L2DataCapture::captureLevel2TradeData(OpenCLExcuter* openCLExcuter, cv::Mat& oimg, int identify)
list<TradeData*> L2DataCapture::captureLevel2TradeData(OpenCLExcuter* openCLExcuter, cv::Mat& oimg, int identify)
{
   if (oimg.cols <= 0 || oimg.rows <= 0) {
@@ -393,9 +393,9 @@
      std::cout << "分隔完成: threadid-" << std::this_thread::get_id() << " 耗时:" << time_3 - time_2 << "总耗时:" << time_3 - time_1 << endl;
   //结果初始化
   list<TradeData> resultList;
   list<TradeData*> resultList;
   for (int i = 0; i < rowDataList.size(); i++) {
      TradeData td = TradeData();
      TradeData *td = new TradeData;
      resultList.push_back(td);
   }
@@ -407,15 +407,15 @@
   int i = 0;
   for (list<TradeData>::iterator ele = resultList.begin(); ele != resultList.end(); ++ele) {
   for (list<TradeData*>::iterator ele = resultList.begin(); ele != resultList.end(); ++ele) {
      switch (notNumberResult[i * 3])
      {
      case 0:
         (*ele).cancelTimeUnit = TIME_SECOND; break;
         (*ele)->cancelTimeUnit = TIME_SECOND; break;
      case 1:
         (*ele).cancelTimeUnit = TIME_MINITE; break;
         (*ele)->cancelTimeUnit = TIME_MINITE; break;
      case 2:
         (*ele).cancelTimeUnit = TIME_HOUR; break;
         (*ele)->cancelTimeUnit = TIME_HOUR; break;
      default:
         break;
@@ -424,11 +424,11 @@
      switch (notNumberResult[i * 3 + 1])
      {
      case 0:
         (*ele).limitPrice = LIMIT_PRICE_NORMAL; break;
         (*ele)->limitPrice = LIMIT_PRICE_NORMAL; break;
      case 1:
         (*ele).limitPrice = LIMIT_PRICE_UP; break;
         (*ele)->limitPrice = LIMIT_PRICE_UP; break;
      case 2:
         (*ele).limitPrice = LIMIT_PRICE_DOWN; break;
         (*ele)->limitPrice = LIMIT_PRICE_DOWN; break;
      default:
         break;
@@ -436,19 +436,19 @@
      switch (notNumberResult[i * 3 + 2])
      {
      case OPERATE_BUY:
         (*ele).operateType = OPERATE_BUY;
         (*ele)->operateType = OPERATE_BUY;
         break;
      case OPERATE_BUY_CANCEL:
         (*ele).operateType = OPERATE_BUY_CANCEL;
         (*ele)->operateType = OPERATE_BUY_CANCEL;
         break;
      case OPERATE_SELL:
         (*ele).operateType = OPERATE_SELL;
         (*ele)->operateType = OPERATE_SELL;
         break;
      case OPERATE_SELL_CANCEL:
         (*ele).operateType = OPERATE_SELL_CANCEL;
         (*ele)->operateType = OPERATE_SELL_CANCEL;
         break;
      case OPERATE_OPERATE_ERROR:
         (*ele).operateType = OPERATE_OPERATE_ERROR;
         (*ele)->operateType = OPERATE_OPERATE_ERROR;
         break;
      };
@@ -512,6 +512,8 @@
      index++;
   }
   free(rowSplitDataOneLevel);
   clock_t time_32 = clock();
@@ -605,7 +607,7 @@
   }
   //循环读取数字
   list<TradeData>::iterator tradeEle;
   list<TradeData*>::iterator tradeEle;
   index = 0;
   for (tradeEle = resultList.begin(); tradeEle != resultList.end(); tradeEle++) {
      uchar* lineData = numberResult[index];
@@ -629,11 +631,11 @@
      num.append(to_string(lineData[12 + 2])).append(to_string(lineData[13 + 2])).append(to_string(lineData[14 + 2])).append(to_string(lineData[15 + 2])).append(to_string(lineData[16 + 2]));
      (*tradeEle).time = time;
      (*tradeEle).num = stoi(num);
      (*tradeEle).price = price;
      (*tradeEle).index = index;
      (*tradeEle).cancelTime = stoi(cancelTime);
      (*tradeEle)->time = time;
      (*tradeEle)->num = stoi(num);
      (*tradeEle)->price = price;
      (*tradeEle)->index = index;
      (*tradeEle)->cancelTime = stoi(cancelTime);
      //释放内存
      free(lineData);
@@ -652,7 +654,7 @@
   img.release();
   rowDataList.clear();
   list<int*>().swap(rowDataList);
   free(rowSplitDataOneLevel);
   return resultList;
}
@@ -727,7 +729,7 @@
            zeroData[r * _NUMBER_GP_CODE_WIDTH + c] = ImgUtil::NUMS_GP_CODE[0].data.ptr<uchar>(r)[c];
         }
      }
      int num_length_per_ele = 6;
      int num_length_per_ele = 7;
      int ele_count_per_line = 6;
      int line_number_count = ele_count_per_line * num_length_per_ele;
      unsigned char* totalNumberData = (unsigned char*)malloc(sizeof(unsigned char) * (_NUMBER_GP_CODE_HEIGHT * 1) * _NUMBER_GP_CODE_WIDTH * 10 * line_number_count);
@@ -772,48 +774,48 @@
      //循环读取数字
      uchar* lineData = numberResult[0];
      string sellOneTime = "";
      sellOneTime.append(to_string(lineData[0])).append(to_string(lineData[1]));
      sellOneTime.append(to_string(lineData[1])).append(to_string(lineData[2]));
      sellOneTime.append(":");
      sellOneTime.append(to_string(lineData[2])).append(to_string(lineData[3]));
      sellOneTime.append(to_string(lineData[3])).append(to_string(lineData[4]));
      sellOneTime.append(":");
      sellOneTime.append(to_string(lineData[4])).append(to_string(lineData[5]));
      sellOneTime.append(to_string(lineData[5])).append(to_string(lineData[6]));
      string buyOneTime = "";
      buyOneTime.append(to_string(lineData[6])).append(to_string(lineData[7]));
      buyOneTime.append(to_string(lineData[num_length_per_ele*1+1])).append(to_string(lineData[num_length_per_ele * 1 + 2]));
      buyOneTime.append(":");
      buyOneTime.append(to_string(lineData[8])).append(to_string(lineData[9]));
      buyOneTime.append(to_string(lineData[num_length_per_ele * 1 + 3])).append(to_string(lineData[num_length_per_ele * 1 + 4]));
      buyOneTime.append(":");
      buyOneTime.append(to_string(lineData[10])).append(to_string(lineData[11]));
      buyOneTime.append(to_string(lineData[num_length_per_ele * 1 + 5])).append(to_string(lineData[num_length_per_ele * 1 + 6]));
      string sellOnePrice = "";
      for (int i = 0; i < 6; i++)
      for (int i = 0; i < num_length_per_ele; i++)
      {
         sellOnePrice.append(to_string(lineData[12 + i]));
         if (i == 3) {
         sellOnePrice.append(to_string(lineData[num_length_per_ele * 2 + i]));
         if (i == num_length_per_ele - 3) {
            sellOnePrice.append(".");
         }
      }
      string sellOneNum = "";
      for (int i = 0; i < 6; i++)
      for (int i = 0; i < num_length_per_ele; i++)
      {
         sellOneNum.append(to_string(lineData[18 + i]));
         sellOneNum.append(to_string(lineData[num_length_per_ele * 3 + i]));
      }
      string buyOnePrice = "";
      for (int i = 0; i < 6; i++)
      for (int i = 0; i < num_length_per_ele; i++)
      {
         buyOnePrice.append(to_string(lineData[24 + i]));
         if (i == 3) {
         buyOnePrice.append(to_string(lineData[num_length_per_ele * 4 + i]));
         if (i == num_length_per_ele - 3) {
            buyOnePrice.append(".");
         }
      }
      string buyOneNum = "";
      for (int i = 0; i < 6; i++)
      for (int i = 0; i < num_length_per_ele; i++)
      {
         buyOneNum.append(to_string(lineData[30 + i]));
         buyOneNum.append(to_string(lineData[num_length_per_ele * 5 + i]));
      }
      //释放内存
@@ -840,7 +842,7 @@
}
//捕获level2的盘口数据
list<TradeData> L2DataCapture::captureLevel2TradeData(HWND hwnd, int index) throw(int) {
list<TradeData*> L2DataCapture::captureLevel2TradeData(HWND hwnd, int index) throw(int) {
   clock_t  starttime = clock();
   cv::Mat img = CaptureUtil::capture(hwnd);
@@ -856,12 +858,12 @@
   std::map<string, TradeData> map;
   */
   try {
      list<TradeData> resultList = captureLevel2TradeData(img, index);
      list<TradeData*> resultList = captureLevel2TradeData(img, index);
      return resultList;
   }
   catch (int code) {
   }
   list<TradeData> tempList;
   list<TradeData*> tempList;
   return tempList;
}