admin
2023-12-04 1a8f39e83dd72e1a672f83e151c149d15679c3eb
'bug修复'
6个文件已修改
201 ■■■■■ 已修改文件
FloatTrade/FloatTrade.aps 补丁 | 查看 | 原始文档 | blame | 历史
FloatTrade/FloatTrade.rc 补丁 | 查看 | 原始文档 | blame | 历史
FloatTrade/FloatTradeDlg.cpp 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FloatTrade/SellRuleDlg.cpp 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FloatTrade/config.cfg 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Monitor/MonitorDlg.cpp 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
FloatTrade/FloatTrade.aps
Binary files differ
FloatTrade/FloatTrade.rc
Binary files differ
FloatTrade/FloatTradeDlg.cpp
@@ -86,7 +86,7 @@
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;
@@ -162,25 +162,25 @@
{
    //请求网络获取消息
        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)
@@ -195,14 +195,14 @@
        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;
    }
@@ -232,25 +232,29 @@
        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) {
@@ -264,7 +268,10 @@
        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) {
@@ -287,7 +294,7 @@
                CString code;
                context->editCode.GetWindowText(code);
                if (code && code.GetLength() == 6) {
                    requestCodePosition(StringUtil::cstring2String(code), context,FALSE);
                    requestCodePosition(StringUtil::cstring2String(code), context, FALSE);
                }
            }
            else {
@@ -311,7 +318,7 @@
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"盯板上卖※");
@@ -592,8 +599,9 @@
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;
    // 撤单
@@ -784,12 +792,13 @@
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;
    }
@@ -811,29 +820,44 @@
    }
    //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());
@@ -917,7 +941,7 @@
LRESULT CFloatTradeDlg::OnFloatMsg(WPARAM wParam, LPARAM lParam)
{
    FloatMsg* pData = (FloatMsg*)lParam;
    showTips(CString(pData->msg.c_str()), pData->msgType);
@@ -1117,9 +1141,9 @@
    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();
}
@@ -1134,7 +1158,7 @@
        if (v_ids[i] == nID) {
            CString codew;
            editCode.GetWindowTextW(codew);
            selectSellVolume(StringUtil::cstring2String(codew) ,i + 1);
            selectSellVolume(StringUtil::cstring2String(codew), i + 1);
            break;
        }
    }
FloatTrade/SellRuleDlg.cpp
@@ -81,7 +81,7 @@
    editBuy1Volume.SetWindowTextW(L"");
    editCode.SetWindowTextW(L"");
    editSellVolume.SetWindowTextW(L"");
    editEndTime.SetWindowTextW(L"14:50:00");
    editEndTime.SetWindowTextW(L"14:56:55");
}
@@ -95,13 +95,13 @@
    
    listRules.InsertColumn(0, _T("代码"), LVCFMT_LEFT, 50, 0);
    listRules.InsertColumn(1, _T("买1量(手)"), LVCFMT_LEFT, 80, 1);
    listRules.InsertColumn(2, _T("买1价"), LVCFMT_LEFT, 80, 2);
    listRules.InsertColumn(2, _T("买1价"), LVCFMT_LEFT, 50, 2);
    listRules.InsertColumn(3, _T("卖量(股)"), LVCFMT_LEFT,60, 3);
    listRules.InsertColumn(4, _T("卖价类型"), LVCFMT_LEFT, 60, 4);
    listRules.InsertColumn(5, _T("结束时间"), LVCFMT_LEFT, 60, 5);
    listRules.InsertColumn(6, _T("状态"), LVCFMT_LEFT, 50, 6);
    listRules.InsertColumn(7, _T("ID"), LVCFMT_LEFT, 50, 7);
    listRules.InsertColumn(8, _T("创建时间"), LVCFMT_LEFT, 50, 8);
//    listRules.InsertColumn(7, _T("ID"), LVCFMT_LEFT, 50, 7);
//    listRules.InsertColumn(8, _T("创建时间"), LVCFMT_LEFT, 50, 8);
    listRules.AutoColumn();
    list<string> types = get_price_types();
@@ -160,8 +160,8 @@
                app->listRules.SetItemText(index, 4, CString(price_type.c_str()));
                app->listRules.SetItemText(index, 5, rule.end_time);
                app->listRules.SetItemText(index, 6, rule.excuted ? L"已执行" : L"未执行");
                app->listRules.SetItemText(index, 7, rule.id_);
                app->listRules.SetItemText(index, 8, rule.create_time);
                //app->listRules.SetItemText(index, 7, rule.id_);
                //app->listRules.SetItemText(index, 8, rule.create_time);
                if (rule.excuted) {
                    app->listRules.SetItemData(index, COLOR_RED);
                }
@@ -246,7 +246,7 @@
    writer.Int(buy1Volume_int * 100);
    writer.Key("buy1_price");
    writer.Int(buy1Volume_int * 100);
    writer.String(StringUtil::cstring2String(buy1Price).c_str());
    writer.Key("sell_volume");
    writer.Int(stoi(StringUtil::cstring2String(sellVolume)));
FloatTrade/config.cfg
@@ -1,7 +1,7 @@
trade_refresh = 1;
group_refresh = 0;
trade_quick_key = 1;
window_pos = "[-1004,456]";
window_pos = "[-598,406]";
ths_auto_click_positions = "[\n    [\n        50,\n        150\n    ],\n    [\n        50,\n        100\n    ],\n    [\n        50,\n        300\n    ]\n]";
ths_auto_click_time_space = 500;
ths_auto_refresh_time_space = 200;
Monitor/MonitorDlg.cpp
@@ -345,22 +345,35 @@
            CString st = L"";
            auto doc = JsonUtil::parseUTF16(result);
            if (doc.IsObject()) {
                if (doc[L"code"] == 0&& doc[L"data"].IsArray()) {
                if (doc[L"code"] == 0&& doc[L"data"].IsObject()) {
                
                        auto array = doc[L"data"].GetArray();
                        for (int i = 0; i < array.Size(); i++) {
                            st.Append(std::to_wstring(i + 1).c_str());
                            st.Append(L"-");
                            if (array[i][1].GetBool()) {
                                st.Append(L"已锁");
                            }
                            else {
                                st.Append(L"未锁");
                            }
                            st.Append(L"(");
                            st.Append(array[i][2].GetString());
                            st.Append(L")");
                            st.Append(L"  ");
                        auto data = doc[L"data"].GetObject();
                        if (data.HasMember(L"common")) {
                            st.Append(L"一般通道:");
                            st.Append(L"总数-");
                            st.Append(std::to_wstring( data[L"common"][0].GetInt()).c_str());
                            st.Append(L" ");
                            st.Append(L"可用数-");
                            st.Append(std::to_wstring(data[L"common"][1].GetInt()).c_str());
                            st.Append(L" ");
                            st.Append(L"活跃数-");
                            st.Append(std::to_wstring(data[L"common"][2].GetInt()).c_str());
                            st.Append(L" ");
                            st.Append(L"\r\n");
                        }
                        if (data.HasMember(L"trade")) {
                            st.Append(L"交易通道:");
                            st.Append(L"总数-");
                            st.Append(std::to_wstring(data[L"trade"][0].GetInt()).c_str());
                            st.Append(L" ");
                            st.Append(L"可用数-");
                            st.Append(std::to_wstring(data[L"trade"][1].GetInt()).c_str());
                            st.Append(L" ");
                            st.Append(L"活跃数-");
                            st.Append(std::to_wstring(data[L"trade"][2].GetInt()).c_str());
                            st.Append(L" ");
                            st.Append(L"\r\n");
                        }
                    }
                    dlg->labelHXTradeChannel.SetWindowTextW(st);