extract output_csv_line
This commit is contained in:
parent
45841db4ed
commit
15d919e62c
1 changed files with 21 additions and 18 deletions
39
src/main.rs
39
src/main.rs
|
@ -118,6 +118,26 @@ async fn fetch_closing_data(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn output_csv_line(closes: Vec<f64>, from: DateTime<Utc>, symbol: &str) {
|
||||||
|
let period_max: f64 = max(&closes).unwrap();
|
||||||
|
let period_min: f64 = min(&closes).unwrap();
|
||||||
|
let last_price = *closes.last().unwrap_or(&0.0);
|
||||||
|
let (_, pct_change) = price_diff(&closes).unwrap_or((0.0, 0.0));
|
||||||
|
let sma = n_window_sma(30, &closes).unwrap_or_default();
|
||||||
|
|
||||||
|
// a simple way to output CSV data
|
||||||
|
println!(
|
||||||
|
"{},{},${:.2},{:.2}%,${:.2},${:.2},${:.2}",
|
||||||
|
from.to_rfc3339(),
|
||||||
|
symbol,
|
||||||
|
last_price,
|
||||||
|
pct_change * 100.0,
|
||||||
|
period_min,
|
||||||
|
period_max,
|
||||||
|
sma.last().unwrap_or(&0.0)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[async_std::main]
|
#[async_std::main]
|
||||||
async fn main() -> std::io::Result<()> {
|
async fn main() -> std::io::Result<()> {
|
||||||
let opts = Opts::parse();
|
let opts = Opts::parse();
|
||||||
|
@ -129,24 +149,7 @@ async fn main() -> std::io::Result<()> {
|
||||||
for symbol in opts.symbols.split(',') {
|
for symbol in opts.symbols.split(',') {
|
||||||
let closes = fetch_closing_data(&symbol, &from, &to).await?;
|
let closes = fetch_closing_data(&symbol, &from, &to).await?;
|
||||||
if !closes.is_empty() {
|
if !closes.is_empty() {
|
||||||
// min/max of the period. unwrap() because those are Option types
|
output_csv_line(closes, from, symbol);
|
||||||
let period_max: f64 = max(&closes).unwrap();
|
|
||||||
let period_min: f64 = min(&closes).unwrap();
|
|
||||||
let last_price = *closes.last().unwrap_or(&0.0);
|
|
||||||
let (_, pct_change) = price_diff(&closes).unwrap_or((0.0, 0.0));
|
|
||||||
let sma = n_window_sma(30, &closes).unwrap_or_default();
|
|
||||||
|
|
||||||
// a simple way to output CSV data
|
|
||||||
println!(
|
|
||||||
"{},{},${:.2},{:.2}%,${:.2},${:.2},${:.2}",
|
|
||||||
from.to_rfc3339(),
|
|
||||||
symbol,
|
|
||||||
last_price,
|
|
||||||
pct_change * 100.0,
|
|
||||||
period_min,
|
|
||||||
period_max,
|
|
||||||
sma.last().unwrap_or(&0.0)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
Loading…
Reference in a new issue