diff --git a/crates/brk_computer/src/vecs/fetched.rs b/crates/brk_computer/src/vecs/fetched.rs index 76fabd33f..83ef5c2a3 100644 --- a/crates/brk_computer/src/vecs/fetched.rs +++ b/crates/brk_computer/src/vecs/fetched.rs @@ -7,7 +7,7 @@ use brk_core::{ use brk_exit::Exit; use brk_fetcher::Fetcher; use brk_indexer::Indexer; -use brk_vec::{AnyCollectableVec, AnyIterableVec, Computation, EagerVec, Format}; +use brk_vec::{AnyCollectableVec, AnyIterableVec, Computation, EagerVec, Format, StoredIndex}; use super::{ Indexes, @@ -429,8 +429,18 @@ impl Vecs { self.dateindex_to_ohlc_in_cents.compute_transform( starting_indexes.dateindex, &indexes.dateindex_to_date, - |(di, d, ..)| { - let ohlc = fetcher.get_date(d).unwrap(); + |(di, d, this)| { + let mut ohlc = fetcher.get_date(d).unwrap(); + if let Some(prev) = di.decremented() { + let prev_open = *this + .get_or_read(prev, &this.mmap().load()) + .unwrap() + .unwrap() + .close; + *ohlc.open = prev_open; + *ohlc.high = (*ohlc.high).max(prev_open); + *ohlc.low = (*ohlc.low).min(prev_open); + } (di, ohlc) }, exit, diff --git a/crates/brk_core/src/structs/ohlc.rs b/crates/brk_core/src/structs/ohlc.rs index 069dd3537..bc3db0e82 100644 --- a/crates/brk_core/src/structs/ohlc.rs +++ b/crates/brk_core/src/structs/ohlc.rs @@ -1,6 +1,6 @@ use std::ops::{Add, Div}; -use derive_deref::Deref; +use derive_deref::{Deref, DerefMut}; use serde::{Serialize, Serializer, ser::SerializeTuple}; use zerocopy_derive::{FromBytes, Immutable, IntoBytes, KnownLayout}; @@ -172,6 +172,7 @@ impl From> for OHLCSats { IntoBytes, KnownLayout, Deref, + DerefMut, Serialize, )] #[repr(C)] @@ -259,6 +260,7 @@ where IntoBytes, KnownLayout, Deref, + DerefMut, Serialize, )] #[repr(C)] @@ -346,6 +348,7 @@ where IntoBytes, KnownLayout, Deref, + DerefMut, Serialize, )] #[repr(C)] @@ -433,6 +436,7 @@ where IntoBytes, KnownLayout, Deref, + DerefMut, Serialize, )] #[repr(C)] diff --git a/crates/brk_parser/src/blk_index_to_blk_recap.rs b/crates/brk_parser/src/blk_index_to_blk_recap.rs index 0f5ac2e8b..e4e619467 100644 --- a/crates/brk_parser/src/blk_index_to_blk_recap.rs +++ b/crates/brk_parser/src/blk_index_to_blk_recap.rs @@ -96,9 +96,10 @@ impl BlkIndexToBlkRecap { } pub fn export(&self) { - let file = File::create(&self.path).unwrap_or_else(|_| { + let file = File::create(&self.path).unwrap_or_else(|e| { + dbg!(e); dbg!(&self.path); - panic!("No such file or directory") + panic!("Cannot write file"); }); serde_json::to_writer(&mut BufWriter::new(file), &self.tree).unwrap();