gitee.com/quant1x/engine@v1.8.4/factors/quote_snapshot.go (about) 1 package factors 2 3 import "gitee.com/quant1x/gotdx/quotes" 4 5 // QuoteSnapshot 即时行情快照(副本) 6 type QuoteSnapshot struct { 7 Date string // 交易日期 8 ServerTime string // 时间 9 SecurityCode string // 证券代码 10 ExchangeState quotes.ExchangeState // 交易状态 11 State quotes.TradeState // 上市公司状态 12 Market uint8 // 市场ID 13 Code string `name:"证券代码"` // 代码 14 Name string `name:"证券名称"` // 证券名称 15 Active uint16 `name:"活跃度"` // 活跃度 16 LastClose float64 `name:"昨收"` // 昨收 17 Open float64 `name:"开盘价"` // 开盘 18 OpeningChangeRate float64 `name:"开盘涨幅%"` // 开盘 19 Price float64 `name:"现价"` // 现价 20 ChangeRate float64 `name:"涨跌幅%"` // 涨跌幅 21 PremiumRate float64 `name:"溢价率%"` // 集合竞价买入溢价, hedgeRatio 22 High float64 // 最高 23 Low float64 // 最低 24 Vol int // 总量 25 CurVol int // 现量 26 Amount float64 // 总金额 27 SVol int // 内盘 28 BVol int // 外盘 29 IndexOpenAmount int // 指数-集合竞价成交金额=开盘成交金额 30 StockOpenAmount int // 个股-集合竞价成交金额=开盘成交金额 31 OpenVolume int `name:"开盘量"` // 集合竞价-开盘量, 单位是股 32 CloseVolume int `name:"收盘量"` /// 集合竞价-收盘量, 单位是股 33 IndexUp int // 指数有效-上涨数 34 IndexUpLimit int // 指数有效-涨停数 35 IndexDown int // 指数有效-下跌数 36 IndexDownLimit int // 指数有效-跌停数 37 OpenBiddingDirection int `name:"开盘竞价" dataframe:"开盘竞价"` // 竞价方向, 交易当日集合竞价开盘时更新 38 OpenVolumeDirection int `name:"开盘竞量" dataframe:"开盘竞量"` // 委托量差, 交易当日集合竞价开盘时更新 39 CloseBiddingDirection int `name:"收盘竞价" dataframe:"收盘竞价"` // 竞价方向, 交易当日集合竞价收盘时更新 40 CloseVolumeDirection int `name:"收盘竞量" dataframe:"收盘竞量"` // 委托量差, 交易当日集合竞价收盘时更新 41 Rate float64 // 涨速 42 TopNo int // 板块排名 43 TopCode string // 领涨个股 44 TopName string // 领涨个股名称 45 TopRate float64 // 领涨个股涨幅 46 ZhanTing int // 涨停数 47 Ling int // 平盘数 48 Count int // 总数 49 Capital float64 `name:"流通盘"` // 流通盘 50 FreeCapital float64 `name:"自由流通股本"` // 自由流通股本 51 OpenTurnZ float64 `name:"开盘换手Z%"` // 开盘换手 52 OpenQuantityRatio float64 `name:"开盘量比"` 53 QuantityRatio float64 `name:"量比"` 54 ChangePower float64 `name:"涨跌力度"` // 开盘金额除以开盘涨幅 55 AverageBiddingVolume int `name:"委托均量"` // 委托均量 56 NextOpen float64 // 仅回测有效: 下一个交易日开盘价 57 NextClose float64 // 仅回测有效: 下一个交易日收盘价 58 NextHigh float64 // 仅回测有效: 下一个交易日最高价 59 NextLow float64 // 仅回测有效: 下一个交易日最低价 60 Beta float64 // 仅回测有效: 贝塔值 61 Alpha float64 // 仅回测有效: 阿尔法值 62 UpdateTime string // 本地时间戳 63 } 64 65 // ExistUpwardGap 是否存在向上跳空缺口 66 func (q QuoteSnapshot) ExistUpwardGap() bool { 67 history := GetL5History(q.SecurityCode, q.Date) 68 if history == nil { 69 return false 70 } 71 return history.HIGH < q.Low 72 } 73 74 // ExistDownwardGap 是否存在向下跳空缺口 75 func (q QuoteSnapshot) ExistDownwardGap() bool { 76 history := GetL5History(q.SecurityCode, q.Date) 77 if history == nil { 78 return false 79 } 80 return history.LOW > q.High 81 } 82 83 // BoxUpwardGap K线实体位于昨日K线实体上方 84 func (q QuoteSnapshot) BoxUpwardGap() bool { 85 history := GetL5History(q.SecurityCode, q.Date) 86 if history == nil { 87 return false 88 } 89 lastBoxHigh := max(history.OPEN, history.CLOSE) 90 boxLow := min(q.Open, q.Price) 91 return lastBoxHigh <= boxLow 92 } 93 94 // BoxDownwardGap K线实体位于昨日K线实体下方 95 func (q QuoteSnapshot) BoxDownwardGap() bool { 96 history := GetL5History(q.SecurityCode, q.Date) 97 if history == nil { 98 return false 99 } 100 lastBoxLow := min(history.OPEN, history.CLOSE) 101 boxHigh := max(q.Open, q.Price) 102 return lastBoxLow >= boxHigh 103 } 104 105 // KLineWeaknessToStrength K线弱转强, 毕竟还是弱, 下一个交易日有低吸机会 106 func (q QuoteSnapshot) KLineWeaknessToStrength() bool { 107 history := GetL5History(q.SecurityCode, q.Date) 108 if history == nil { 109 return false 110 } 111 // 昨日收盘于均价线之下 112 c1 := history.CLOSE <= history.AveragePrice 113 // 当日开盘不低于昨日均价线 114 c2 := q.Open >= history.AveragePrice 115 return c1 && c2 116 } 117 118 // WeaknessToStrength 弱转强 119 func (q QuoteSnapshot) WeaknessToStrength() bool { 120 history := GetL5History(q.SecurityCode, q.Date) 121 if history == nil { 122 return false 123 } 124 // 1. 昨日转强 125 // 昨日阴线 126 c11 := history.CLOSE < history.OPEN 127 // 昨日收盘于均价线之上 128 c12 := history.CLOSE >= history.AveragePrice 129 // 当日开盘不低于昨日收盘 130 c13 := q.Open >= history.CLOSE 131 frontToStrength := c11 && c12 && c13 132 // 2. 隔日转强 133 // 昨日收盘于均价线之下 134 c21 := history.CLOSE <= history.AveragePrice 135 // 当日开盘不低于昨日均价线 136 c22 := q.Open >= history.AveragePrice 137 nextToStrength := c21 && c22 138 139 return frontToStrength || nextToStrength 140 }