(columns: &AlignedOhlcvColumns)
| 519 | } |
| 520 | |
| 521 | fn aligned_columns_to_rows(columns: &AlignedOhlcvColumns) -> Vec<AlignedOhlcvRow> { |
| 522 | let mut rows = Vec::with_capacity(columns.timestamps_us.len()); |
| 523 | for i in 0..columns.timestamps_us.len() { |
| 524 | let dt = DateTime::<Utc>::from_timestamp_micros(columns.timestamps_us[i]) |
| 525 | .expect("valid datetime") |
| 526 | .naive_utc(); |
| 527 | rows.push(AlignedOhlcvRow { |
| 528 | timestamp: dt, |
| 529 | symbol: columns.symbols[i].clone(), |
| 530 | open: columns.open[i], |
| 531 | high: columns.high[i], |
| 532 | low: columns.low[i], |
| 533 | close: columns.close[i], |
| 534 | volume: columns.volume[i], |
| 535 | adj_close: columns.adj_close[i], |
| 536 | is_missing_bar: columns.is_missing_bar[i], |
| 537 | }); |
| 538 | } |
| 539 | rows |
| 540 | } |
| 541 | |
| 542 | pub fn clean_ohlcv_rows(rows: &[OhlcvRow], keep_last: bool) -> (Vec<OhlcvRow>, DataQualityReport) { |
| 543 | let cols = rows_to_columns(rows); |
no test coverage detected