mirror of
https://github.com/Magnus167/msyrs.git
synced 2025-11-20 00:06:10 +00:00
working as expected
This commit is contained in:
@@ -7,18 +7,20 @@ use std::error::Error;
|
||||
|
||||
const DEFAULT_JPMAQS_METRICS: [&str; 4] = ["value", "grading", "eop_lag", "mop_lag"];
|
||||
|
||||
fn ticker_to_expressions(ticker: &str) -> Vec<String> {
|
||||
DEFAULT_JPMAQS_METRICS
|
||||
fn ticker_to_expressions(ticker: &str, metrics: Vec<&str>) -> Vec<String> {
|
||||
metrics
|
||||
.iter()
|
||||
.map(|metric| format!("DB(JPMAQS,{},{})", ticker, metric))
|
||||
.collect::<Vec<String>>()
|
||||
}
|
||||
|
||||
fn construct_expressions(tickers: Vec<String>) -> Vec<String> {
|
||||
fn construct_expressions(tickers: Vec<String>, metrics: Vec<String>) -> Vec<String> {
|
||||
tickers
|
||||
.iter()
|
||||
.flat_map(|ticker| ticker_to_expressions(ticker))
|
||||
.collect()
|
||||
.flat_map(|ticker| {
|
||||
ticker_to_expressions(ticker, metrics.clone().iter().map(|s| s.as_str()).collect())
|
||||
})
|
||||
.collect::<Vec<String>>()
|
||||
}
|
||||
|
||||
fn is_jpmaq_expression(expression: &str) -> bool {
|
||||
@@ -35,6 +37,28 @@ fn all_jpmaq_expressions(expressions: Vec<String>) -> bool {
|
||||
.all(|expression| is_jpmaq_expression(expression))
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct JPMaQSDownloadGetIndicatorArgs {
|
||||
pub tickers: Vec<String>,
|
||||
pub metrics: Vec<String>,
|
||||
pub start_date: String,
|
||||
pub end_date: String,
|
||||
}
|
||||
|
||||
impl Default for JPMaQSDownloadGetIndicatorArgs {
|
||||
fn default() -> Self {
|
||||
JPMaQSDownloadGetIndicatorArgs {
|
||||
tickers: Vec::new(),
|
||||
metrics: DEFAULT_JPMAQS_METRICS
|
||||
.iter()
|
||||
.map(|s| s.to_string())
|
||||
.collect(),
|
||||
start_date: "1990-01-01".to_string(),
|
||||
end_date: "TODAY+2D".to_string(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct JPMaQSDownload {
|
||||
requester: DQRequester,
|
||||
@@ -77,9 +101,13 @@ impl JPMaQSDownload {
|
||||
|
||||
pub fn get_indicators(
|
||||
&mut self,
|
||||
tickers: Vec<String>,
|
||||
download_args: JPMaQSDownloadGetIndicatorArgs,
|
||||
) -> Result<Vec<JPMaQSIndicator>, Box<dyn Error>> {
|
||||
let expressions = construct_expressions(tickers);
|
||||
if download_args.tickers.is_empty() {
|
||||
return Err("No tickers provided".into());
|
||||
}
|
||||
|
||||
let expressions = construct_expressions(download_args.tickers, download_args.metrics);
|
||||
assert!(all_jpmaq_expressions(expressions.clone()));
|
||||
let dqts_vec = self.get_expressions(expressions)?;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user