use bts_rs::PercentCalculus;
use bts_rs::engine::{Candle, CandleBuilder};
use chrono::{Duration, Utc};
use rand::rngs::StdRng;
use rand::{Rng, SeedableRng};
pub fn generate_sample_candles(count: usize, seed: u64, base_price: f64) -> Vec<Candle> {
let mut rng = StdRng::seed_from_u64(seed);
let mut open_time = Utc::now() - Duration::days(count as i64);
let mut open = base_price;
(0..count)
.map(|_| {
let close = open.addpercent(rng.random_range(-4.0..4.0));
let high = open.max(close).addpercent(rng.random_range(0.0..3.0));
let low = open.min(close).subpercent(rng.random_range(0.0..3.0));
let volume = 1000.0.addpercent(rng.random_range(-15.0..15.0));
let bid = volume * rng.random_range(0.33..0.77);
let candle = CandleBuilder::builder()
.open(open)
.high(high)
.low(low)
.close(close)
.volume(volume)
.bid(bid)
.open_time(open_time)
.close_time(open_time + Duration::days(1))
.build()
.unwrap();
open_time = candle.close_time();
open = candle.close();
candle
})
.collect()
}
pub fn example_candles() -> Vec<Candle> {
generate_sample_candles(3000, 42, 100.0)
}
#[allow(dead_code)]
fn main() {}