Browse Source

fix: 建仓过程

hsun 5 months ago
parent
commit
7c6eea2994

+ 3 - 0
controllers/trade_analysis/trade_analysis.go

@@ -227,6 +227,9 @@ func (this *TradeAnalysisController) GetTradeClassifyList() {
 		// 郑商所
 		if v.Exchange == tradeAnalysisModel.TradeExchangeZhengzhou {
 			name := trade_analysis.GetZhengzhouClassifyName(v.ClassifyName)
+			if name == "" {
+				continue
+			}
 			if classifyExist[name] {
 				continue
 			}

+ 11 - 0
controllers/trade_analysis/warehouse.go

@@ -904,6 +904,17 @@ func (this *WarehouseController) List() {
 			br.ErrMsg = "获取信息失败,GetChartClassify,Err:" + err.Error()
 			return
 		}
+		if classifyIds == "" {
+			resp := new(data_manage.ChartListResp)
+			page = paging.GetPaging(currentIndex, pageSize, 0)
+			resp.Paging = page
+			resp.List = make([]*data_manage.ChartInfoView, 0)
+			br.Ret = 200
+			br.Success = true
+			br.Msg = "获取成功"
+			br.Data = resp
+			return
+		}
 		condition += " AND chart_classify_id IN(" + classifyIds + ") "
 	}
 	if keyword != "" {

+ 7 - 0
services/data/trade_analysis/trade_analysis.go

@@ -240,6 +240,13 @@ func GetZhengzhouClassifyName(code string) (name string) {
 		name = "烧碱"
 		return
 	}
+	if strings.HasPrefix(code, "PR") {
+		name = "PR"
+		return
+	}
+	if name == "" {
+		utils.FileLog.Info(fmt.Sprintf("郑商所-合约暂未归类: %s", code))
+	}
 	return
 }
 

+ 25 - 5
services/data/trade_analysis/trade_analysis_data.go

@@ -14,6 +14,9 @@ import (
 // FormatCompanyTradeData2EdbMappings [公司-合约加总]转为指标数据
 func FormatCompanyTradeData2EdbMappings(companyTradeData []*tradeAnalysisModel.ContractCompanyTradeData, tradeType, dateType, dateTypeNum int, startDate, endDate string, chartEdbList []*data_manage.ChartSaveItem) (edbMappings []*data_manage.ChartEdbInfoMapping, chartName string, err error) {
 	edbMappings = make([]*data_manage.ChartEdbInfoMapping, 0)
+	if dateType <= 0 {
+		dateType = utils.DateTypeOneMonth
+	}
 
 	// 期货公司名称作为标识进行匹配
 	edbMap := make(map[string]*data_manage.ChartSaveItem)
@@ -71,35 +74,46 @@ func FormatCompanyTradeData2EdbMappings(companyTradeData []*tradeAnalysisModel.C
 		// 指标数据和最值
 		edbData := make([]*data_manage.EdbDataList, 0)
 		var minData, maxData float64
-		for dk, dv := range v.DataList {
+		var setMinMax bool
+		for _, dv := range v.DataList {
 			if dv.Date.Before(startTime) || dv.Date.After(endTime) {
 				continue
 			}
 
 			// 交易方向
-			var val float64
+			var (
+				val    float64
+				hasVal bool
+			)
 			if tradeType == tradeAnalysisModel.WarehouseBuyChartType {
 				if dv.BuyValType == tradeAnalysisModel.TradeDataTypeNull {
 					continue
 				}
+				hasVal = true
 				val = float64(dv.BuyVal)
 			}
 			if tradeType == tradeAnalysisModel.WarehouseSoldChartType {
 				if dv.SoldValType == tradeAnalysisModel.TradeDataTypeNull {
 					continue
 				}
+				hasVal = true
 				val = float64(dv.SoldVal)
 			}
 			if tradeType == tradeAnalysisModel.WarehousePureBuyChartType {
 				if dv.PureBuyValType == tradeAnalysisModel.TradeDataTypeNull {
 					continue
 				}
+				hasVal = true
 				val = float64(dv.PureBuyVal)
 			}
+			if !hasVal {
+				continue
+			}
 
-			if dk == 0 {
+			if !setMinMax {
 				minData = val
 				maxData = val
+				setMinMax = true
 			}
 			if val < minData {
 				minData = val
@@ -359,9 +373,15 @@ func GetOriginTradeData(exchange, classifyName string, contracts, companies []st
 	// 数据根据公司排序, 不然会随机乱
 	companyTradeData = make([]*tradeAnalysisModel.ContractCompanyTradeData, 0)
 	for _, v := range companies {
-		if mussyTradeData[v] != nil {
-			companyTradeData = append(companyTradeData, mussyTradeData[v])
+		// 没数据也需要加进去, 不然edbList会少
+		if mussyTradeData[v] == nil {
+			companyData := new(tradeAnalysisModel.ContractCompanyTradeData)
+			companyData.CompanyName = v
+			companyData.DataList = make([]*tradeAnalysisModel.ContractCompanyTradeDataList, 0)
+			companyTradeData = append(companyTradeData, companyData)
+			continue
 		}
+		companyTradeData = append(companyTradeData, mussyTradeData[v])
 	}
 	return
 }