| use crate::config::ValidationConfig; |
| use crate::models::MarketData; |
| use anyhow::{Result, bail}; |
|
|
| pub struct DataValidator { |
| config: ValidationConfig, |
| } |
|
|
| impl DataValidator { |
| pub fn new(config: ValidationConfig) -> Self { |
| Self { config } |
| } |
| |
| |
| pub fn validate(&self, data: &MarketData) -> Result<()> { |
| |
| if let Some(price) = data.avg_sell_price { |
| if price < self.config.min_price || price > self.config.max_price { |
| bail!("价格超出范围: {}", price); |
| } |
| } |
| |
| |
| for price in [ |
| data.sell1_price, data.sell2_price, data.sell3_price, |
| data.sell4_price, data.sell5_price, |
| data.buy1_price, data.buy2_price, data.buy3_price, |
| data.buy4_price, data.buy5_price, |
| ].iter().flatten() { |
| if *price < self.config.min_price || *price > self.config.max_price { |
| bail!("档位价格超出范围: {}", price); |
| } |
| } |
| |
| |
| for volume in [ |
| data.cum_volume, |
| data.sell1_volume, data.sell2_volume, data.sell3_volume, |
| data.sell4_volume, data.sell5_volume, |
| data.buy1_volume, data.buy2_volume, data.buy3_volume, |
| data.buy4_volume, data.buy5_volume, |
| ].iter().flatten() { |
| if *volume == 0 { |
| |
| } |
| } |
| |
| |
| if data.time_sec < 90000 || data.time_sec > 160000 { |
| |
| } |
| |
| Ok(()) |
| } |
| } |
|
|