mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-04-24 06:39:58 -07:00
global: snapshot
This commit is contained in:
@@ -38,10 +38,10 @@ impl Vecs {
|
||||
|
||||
let hash_rate = &self.hash_rate.height;
|
||||
for (sma, window) in [
|
||||
(&mut self.hash_rate_sma_1w.height, &lookback.height_1w_ago),
|
||||
(&mut self.hash_rate_sma_1m.height, &lookback.height_1m_ago),
|
||||
(&mut self.hash_rate_sma_2m.height, &lookback.height_2m_ago),
|
||||
(&mut self.hash_rate_sma_1y.height, &lookback.height_1y_ago),
|
||||
(&mut self.hash_rate_sma._1w.height, &lookback.height_1w_ago),
|
||||
(&mut self.hash_rate_sma._1m.height, &lookback.height_1m_ago),
|
||||
(&mut self.hash_rate_sma._2m.height, &lookback.height_2m_ago),
|
||||
(&mut self.hash_rate_sma._1y.height, &lookback.height_1y_ago),
|
||||
] {
|
||||
sma.compute_rolling_average(starting_indexes.height, window, hash_rate, exit)?;
|
||||
}
|
||||
@@ -59,7 +59,7 @@ impl Vecs {
|
||||
exit,
|
||||
)?;
|
||||
|
||||
self.hash_price_ths.height.compute_transform2(
|
||||
self.hash_price.ths.height.compute_transform2(
|
||||
starting_indexes.height,
|
||||
coinbase_usd_24h_sum,
|
||||
&self.hash_rate.height,
|
||||
@@ -75,14 +75,14 @@ impl Vecs {
|
||||
exit,
|
||||
)?;
|
||||
|
||||
self.hash_price_phs.height.compute_transform(
|
||||
self.hash_price.phs.height.compute_transform(
|
||||
starting_indexes.height,
|
||||
&self.hash_price_ths.height,
|
||||
&self.hash_price.ths.height,
|
||||
|(i, price, ..)| (i, (*price * 1000.0).into()),
|
||||
exit,
|
||||
)?;
|
||||
|
||||
self.hash_value_ths.height.compute_transform2(
|
||||
self.hash_value.ths.height.compute_transform2(
|
||||
starting_indexes.height,
|
||||
coinbase_sats_24h_sum,
|
||||
&self.hash_rate.height,
|
||||
@@ -98,47 +98,49 @@ impl Vecs {
|
||||
exit,
|
||||
)?;
|
||||
|
||||
self.hash_value_phs.height.compute_transform(
|
||||
self.hash_value.phs.height.compute_transform(
|
||||
starting_indexes.height,
|
||||
&self.hash_value_ths.height,
|
||||
&self.hash_value.ths.height,
|
||||
|(i, value, ..)| (i, (*value * 1000.0).into()),
|
||||
exit,
|
||||
)?;
|
||||
|
||||
for (min_vec, src_vec) in [
|
||||
(
|
||||
&mut self.hash_price_ths_min.height,
|
||||
&self.hash_price_ths.height,
|
||||
&mut self.hash_price.ths_min.height,
|
||||
&self.hash_price.ths.height,
|
||||
),
|
||||
(
|
||||
&mut self.hash_price_phs_min.height,
|
||||
&self.hash_price_phs.height,
|
||||
&mut self.hash_price.phs_min.height,
|
||||
&self.hash_price.phs.height,
|
||||
),
|
||||
(
|
||||
&mut self.hash_value_ths_min.height,
|
||||
&self.hash_value_ths.height,
|
||||
&mut self.hash_value.ths_min.height,
|
||||
&self.hash_value.ths.height,
|
||||
),
|
||||
(
|
||||
&mut self.hash_value_phs_min.height,
|
||||
&self.hash_value_phs.height,
|
||||
&mut self.hash_value.phs_min.height,
|
||||
&self.hash_value.phs.height,
|
||||
),
|
||||
] {
|
||||
min_vec.compute_all_time_low_(starting_indexes.height, src_vec, exit, true)?;
|
||||
}
|
||||
|
||||
self.hash_price_rebound
|
||||
self.hash_price
|
||||
.rebound
|
||||
.compute_binary::<StoredF32, StoredF32, RatioDiffF32Bps32>(
|
||||
starting_indexes.height,
|
||||
&self.hash_price_phs.height,
|
||||
&self.hash_price_phs_min.height,
|
||||
&self.hash_price.phs.height,
|
||||
&self.hash_price.phs_min.height,
|
||||
exit,
|
||||
)?;
|
||||
|
||||
self.hash_value_rebound
|
||||
self.hash_value
|
||||
.rebound
|
||||
.compute_binary::<StoredF32, StoredF32, RatioDiffF32Bps32>(
|
||||
starting_indexes.height,
|
||||
&self.hash_value_phs.height,
|
||||
&self.hash_value_phs_min.height,
|
||||
&self.hash_value.phs.height,
|
||||
&self.hash_value.phs_min.height,
|
||||
exit,
|
||||
)?;
|
||||
|
||||
|
||||
@@ -2,7 +2,10 @@ use brk_error::Result;
|
||||
use brk_types::Version;
|
||||
use vecdb::Database;
|
||||
|
||||
use super::Vecs;
|
||||
use super::{
|
||||
vecs::{HashPriceValueVecs, HashRateSmaVecs},
|
||||
Vecs,
|
||||
};
|
||||
use crate::{
|
||||
indexes,
|
||||
internal::{ComputedPerBlock, PercentPerBlock},
|
||||
@@ -19,30 +22,32 @@ impl Vecs {
|
||||
|
||||
Ok(Self {
|
||||
hash_rate: ComputedPerBlock::forced_import(db, "hash_rate", version + v5, indexes)?,
|
||||
hash_rate_sma_1w: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_rate_sma_1w",
|
||||
version,
|
||||
indexes,
|
||||
)?,
|
||||
hash_rate_sma_1m: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_rate_sma_1m",
|
||||
version,
|
||||
indexes,
|
||||
)?,
|
||||
hash_rate_sma_2m: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_rate_sma_2m",
|
||||
version,
|
||||
indexes,
|
||||
)?,
|
||||
hash_rate_sma_1y: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_rate_sma_1y",
|
||||
version,
|
||||
indexes,
|
||||
)?,
|
||||
hash_rate_sma: HashRateSmaVecs {
|
||||
_1w: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_rate_sma_1w",
|
||||
version,
|
||||
indexes,
|
||||
)?,
|
||||
_1m: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_rate_sma_1m",
|
||||
version,
|
||||
indexes,
|
||||
)?,
|
||||
_2m: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_rate_sma_2m",
|
||||
version,
|
||||
indexes,
|
||||
)?,
|
||||
_1y: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_rate_sma_1y",
|
||||
version,
|
||||
indexes,
|
||||
)?,
|
||||
},
|
||||
hash_rate_ath: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_rate_ath",
|
||||
@@ -55,66 +60,70 @@ impl Vecs {
|
||||
version,
|
||||
indexes,
|
||||
)?,
|
||||
hash_price_ths: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_price_ths",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
hash_price_ths_min: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_price_ths_min",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
hash_price_phs: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_price_phs",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
hash_price_phs_min: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_price_phs_min",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
hash_price_rebound: PercentPerBlock::forced_import(
|
||||
db,
|
||||
"hash_price_rebound",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
hash_value_ths: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_value_ths",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
hash_value_ths_min: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_value_ths_min",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
hash_value_phs: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_value_phs",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
hash_value_phs_min: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_value_phs_min",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
hash_value_rebound: PercentPerBlock::forced_import(
|
||||
db,
|
||||
"hash_value_rebound",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
hash_price: HashPriceValueVecs {
|
||||
ths: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_price_ths",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
ths_min: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_price_ths_min",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
phs: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_price_phs",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
phs_min: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_price_phs_min",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
rebound: PercentPerBlock::forced_import(
|
||||
db,
|
||||
"hash_price_rebound",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
},
|
||||
hash_value: HashPriceValueVecs {
|
||||
ths: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_value_ths",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
ths_min: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_value_ths_min",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
phs: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_value_phs",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
phs_min: ComputedPerBlock::forced_import(
|
||||
db,
|
||||
"hash_value_phs_min",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
rebound: PercentPerBlock::forced_import(
|
||||
db,
|
||||
"hash_value_rebound",
|
||||
version + v4,
|
||||
indexes,
|
||||
)?,
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,23 +4,29 @@ use vecdb::{Rw, StorageMode};
|
||||
|
||||
use crate::internal::{ComputedPerBlock, PercentPerBlock};
|
||||
|
||||
#[derive(Traversable)]
|
||||
pub struct HashRateSmaVecs<M: StorageMode = Rw> {
|
||||
pub _1w: ComputedPerBlock<StoredF64, M>,
|
||||
pub _1m: ComputedPerBlock<StoredF64, M>,
|
||||
pub _2m: ComputedPerBlock<StoredF64, M>,
|
||||
pub _1y: ComputedPerBlock<StoredF64, M>,
|
||||
}
|
||||
|
||||
#[derive(Traversable)]
|
||||
pub struct HashPriceValueVecs<M: StorageMode = Rw> {
|
||||
pub ths: ComputedPerBlock<StoredF32, M>,
|
||||
pub ths_min: ComputedPerBlock<StoredF32, M>,
|
||||
pub phs: ComputedPerBlock<StoredF32, M>,
|
||||
pub phs_min: ComputedPerBlock<StoredF32, M>,
|
||||
pub rebound: PercentPerBlock<BasisPointsSigned32, M>,
|
||||
}
|
||||
|
||||
#[derive(Traversable)]
|
||||
pub struct Vecs<M: StorageMode = Rw> {
|
||||
pub hash_rate: ComputedPerBlock<StoredF64, M>,
|
||||
pub hash_rate_sma_1w: ComputedPerBlock<StoredF64, M>,
|
||||
pub hash_rate_sma_1m: ComputedPerBlock<StoredF64, M>,
|
||||
pub hash_rate_sma_2m: ComputedPerBlock<StoredF64, M>,
|
||||
pub hash_rate_sma_1y: ComputedPerBlock<StoredF64, M>,
|
||||
pub hash_rate_sma: HashRateSmaVecs<M>,
|
||||
pub hash_rate_ath: ComputedPerBlock<StoredF64, M>,
|
||||
pub hash_rate_drawdown: PercentPerBlock<BasisPointsSigned16, M>,
|
||||
pub hash_price_ths: ComputedPerBlock<StoredF32, M>,
|
||||
pub hash_price_ths_min: ComputedPerBlock<StoredF32, M>,
|
||||
pub hash_price_phs: ComputedPerBlock<StoredF32, M>,
|
||||
pub hash_price_phs_min: ComputedPerBlock<StoredF32, M>,
|
||||
pub hash_price_rebound: PercentPerBlock<BasisPointsSigned32, M>,
|
||||
pub hash_value_ths: ComputedPerBlock<StoredF32, M>,
|
||||
pub hash_value_ths_min: ComputedPerBlock<StoredF32, M>,
|
||||
pub hash_value_phs: ComputedPerBlock<StoredF32, M>,
|
||||
pub hash_value_phs_min: ComputedPerBlock<StoredF32, M>,
|
||||
pub hash_value_rebound: PercentPerBlock<BasisPointsSigned32, M>,
|
||||
pub hash_price: HashPriceValueVecs<M>,
|
||||
pub hash_value: HashPriceValueVecs<M>,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user