Move thread task starting point
This commit is contained in:
parent
c0344961bf
commit
43b0423d30
|
|
@ -40,40 +40,33 @@ pub async fn sma(
|
||||||
|
|
||||||
let mut task_vec = Vec::new();
|
let mut task_vec = Vec::new();
|
||||||
for filtered_symbol in filtered_symbols {
|
for filtered_symbol in filtered_symbols {
|
||||||
let symbol_search_result = input_rt_data.iter().position(|x| x.0 == *filtered_symbol.symbol);
|
let filtered_symbol_c = filtered_symbol.clone();
|
||||||
|
let sma_data_wrapper_arc_c = Arc::clone(&sma_data_wrapper_arc);
|
||||||
match symbol_search_result {
|
let input_rt_data_c = input_rt_data.clone();
|
||||||
Some(T) => {
|
task_vec.push(tokio::spawn(async move {
|
||||||
let sma_data_wrapper_arc_c = Arc::clone(&sma_data_wrapper_arc);
|
let search_result = input_rt_data_c.iter().position(|x| x.0 == *filtered_symbol_c.symbol);
|
||||||
let symbol_c = filtered_symbol.symbol.clone();
|
if search_result.is_some() {
|
||||||
let mut sma_data = SmaData::new();
|
let mut sma_data = SmaData::new();
|
||||||
let mut sma_data_vec: Vec<SmaData> = Vec::new();
|
let mut sma_data_vec: Vec<SmaData> = Vec::new();
|
||||||
let input_rt_data_c = input_rt_data.clone();
|
|
||||||
task_vec.push(tokio::spawn(async move {
|
|
||||||
if input_rt_data_c[T].1.len() < moving_number {
|
|
||||||
sma_data.sma_value = 0.0;
|
|
||||||
sma_data.close_time = 0;
|
|
||||||
sma_data_vec.push(sma_data.clone());
|
|
||||||
} else {
|
|
||||||
let mut iter = input_rt_data_c[T].1.windows(moving_number);
|
|
||||||
for buffer in iter {
|
|
||||||
let mut avg = 0.0;
|
|
||||||
for element in buffer {
|
|
||||||
avg += element.close_price;
|
|
||||||
}
|
|
||||||
avg /= (moving_number as f64);
|
|
||||||
|
|
||||||
sma_data.sma_value = avg;
|
if input_rt_data_c[search_result.unwrap()].1.len() >= moving_number {
|
||||||
sma_data.close_time = buffer.last().unwrap().close_time;
|
let mut iter = input_rt_data_c[search_result.unwrap()].1.windows(moving_number);
|
||||||
sma_data_vec.push(sma_data.clone());
|
for buffer in iter {
|
||||||
|
let mut avg = 0.0;
|
||||||
|
for element in buffer {
|
||||||
|
avg += element.close_price;
|
||||||
}
|
}
|
||||||
|
avg /= (moving_number as f64);
|
||||||
|
|
||||||
|
sma_data.sma_value = avg;
|
||||||
|
sma_data.close_time = buffer.last().unwrap().close_time;
|
||||||
|
sma_data_vec.push(sma_data.clone());
|
||||||
}
|
}
|
||||||
let mut sma_data_wrapper_lock = sma_data_wrapper_arc_c.lock().await;
|
}
|
||||||
sma_data_wrapper_lock.push((symbol_c.clone(), sma_data_vec.clone()));
|
let mut sma_data_wrapper_lock = sma_data_wrapper_arc_c.lock().await;
|
||||||
}));
|
sma_data_wrapper_lock.push((filtered_symbol_c.symbol.clone(), sma_data_vec.clone()));
|
||||||
}
|
}
|
||||||
None => {}
|
}));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
try_join_all(task_vec).await?;
|
try_join_all(task_vec).await?;
|
||||||
let a = sma_data_wrapper_arc.lock().await.to_owned();
|
let a = sma_data_wrapper_arc.lock().await.to_owned();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user