新增T-1日开盘涨跌幅字段
This commit is contained in:
@@ -28,6 +28,8 @@ type secondProfitCSVRow struct {
|
||||
Name string `gorm:"column:name"`
|
||||
Market string `gorm:"column:market"`
|
||||
Industry string `gorm:"column:industry"`
|
||||
PreviousOpen sql.NullFloat64 `gorm:"column:previous_open"`
|
||||
PreviousTwoClose sql.NullFloat64 `gorm:"column:previous_two_close"`
|
||||
Open sql.NullFloat64 `gorm:"column:open"`
|
||||
Close sql.NullFloat64 `gorm:"column:close_price"`
|
||||
LimitPrice float64 `gorm:"column:limit_price"`
|
||||
@@ -44,6 +46,7 @@ type secondProfitCSVRow struct {
|
||||
NextLow sql.NullFloat64 `gorm:"column:next_low"`
|
||||
NextClose sql.NullFloat64 `gorm:"column:next_close"`
|
||||
OpenPreviousCloseRatio float64
|
||||
PreviousOpenPctChg sql.NullFloat64
|
||||
OpenPctChg sql.NullFloat64
|
||||
NextOpenReturnPct sql.NullFloat64
|
||||
NextHighReturnPct sql.NullFloat64
|
||||
@@ -86,6 +89,7 @@ type secondProfitListItem struct {
|
||||
Name string `json:"name"`
|
||||
Market string `json:"market"`
|
||||
Industry string `json:"industry"`
|
||||
PreviousOpenPctChg *float64 `json:"previous_open_pct_chg"`
|
||||
OpenPctChg *float64 `json:"open_pct_chg"`
|
||||
NextOpenPctChg *float64 `json:"next_open_pct_chg"`
|
||||
NextOpenProfitable string `json:"next_open_profitable"`
|
||||
@@ -323,6 +327,8 @@ SELECT
|
||||
COALESCE(l.name, '') AS name,
|
||||
COALESCE(l.market, '') AS market,
|
||||
COALESCE(l.tushare_industry, '') AS industry,
|
||||
pd.open AS previous_open,
|
||||
COALESCE(pd.pre_close, ppd.close) AS previous_two_close,
|
||||
d.open,
|
||||
COALESCE(l.calc_close, l.tushare_close, d.close) AS close_price,
|
||||
COALESCE(l.calc_limit_price, 0) AS limit_price,
|
||||
@@ -349,6 +355,8 @@ LEFT JOIN stock_daily d
|
||||
ON l.ts_code = d.ts_code AND d.trade_date = l.trade_date
|
||||
LEFT JOIN stock_daily pd
|
||||
ON l.ts_code = pd.ts_code AND pd.trade_date = c.previous_trade_date
|
||||
LEFT JOIN stock_daily ppd
|
||||
ON l.ts_code = ppd.ts_code AND ppd.trade_date = c.previous_two_trade_date
|
||||
LEFT JOIN stock_daily nd
|
||||
ON l.ts_code = nd.ts_code AND nd.trade_date = c.next_trade_date
|
||||
WHERE c.trade_date BETWEEN ? AND ?
|
||||
@@ -378,6 +386,12 @@ ORDER BY c.trade_date ASC, l.ts_code ASC`
|
||||
Valid: true,
|
||||
}
|
||||
}
|
||||
if row.PreviousOpen.Valid && row.PreviousTwoClose.Valid && row.PreviousTwoClose.Float64 > 0 {
|
||||
row.PreviousOpenPctChg = sql.NullFloat64{
|
||||
Float64: secondProfitRound2((row.PreviousOpen.Float64 - row.PreviousTwoClose.Float64) / row.PreviousTwoClose.Float64 * 100),
|
||||
Valid: true,
|
||||
}
|
||||
}
|
||||
if req.OpenPctChgRule.Enabled() && (!row.OpenPctChg.Valid || !req.OpenPctChgRule.Match(row.OpenPctChg.Float64)) {
|
||||
continue
|
||||
}
|
||||
@@ -399,6 +413,7 @@ ORDER BY c.trade_date ASC, l.ts_code ASC`
|
||||
func secondProfitCSVHeaders() []string {
|
||||
return []string{
|
||||
"交易日", "股票代码", "股票简称", "市场", "行业",
|
||||
"T-1日开盘涨跌幅%",
|
||||
"T日开盘涨跌幅%", "T+1日开盘涨跌幅%",
|
||||
"T+1开盘是否盈利", "T+1收盘是否盈利", "T+1盘中是否可盈利",
|
||||
"T+1最高盈利%", "T+1最低盈利%", "开板次数", "换手率%",
|
||||
@@ -413,6 +428,7 @@ func secondProfitCSVRecord(row secondProfitCSVRow) []string {
|
||||
row.Name,
|
||||
row.Market,
|
||||
row.Industry,
|
||||
secondProfitFormatNullFloat(row.PreviousOpenPctChg),
|
||||
secondProfitFormatNullFloat(row.OpenPctChg),
|
||||
secondProfitFormatNullFloat(row.NextOpenReturnPct),
|
||||
row.NextOpenProfitable,
|
||||
@@ -435,6 +451,7 @@ func secondProfitBuildItem(row secondProfitCSVRow) secondProfitListItem {
|
||||
Name: row.Name,
|
||||
Market: row.Market,
|
||||
Industry: row.Industry,
|
||||
PreviousOpenPctChg: secondProfitNullFloatPtr(row.PreviousOpenPctChg),
|
||||
OpenPctChg: secondProfitNullFloatPtr(row.OpenPctChg),
|
||||
NextOpenPctChg: secondProfitNullFloatPtr(row.NextOpenReturnPct),
|
||||
NextOpenProfitable: row.NextOpenProfitable,
|
||||
|
||||
Reference in New Issue
Block a user