|
|
@@ -69,12 +69,12 @@ fn calc_volatility_div_price_diff(records: Value) -> Decimal {
|
|
|
return Decimal::ZERO
|
|
|
}
|
|
|
|
|
|
- let first_record = records_array[records_array.len() - 1].clone();
|
|
|
- let last_record = records_array[0].clone();
|
|
|
- let open = Decimal::from_str(first_record["open"].as_str().unwrap().to_string().as_str()).unwrap();
|
|
|
- let close = Decimal::from_str(last_record["close"].as_str().unwrap().to_string().as_str()).unwrap();
|
|
|
+ // let first_record = records_array[records_array.len() - 1].clone();
|
|
|
+ // let last_record = records_array[0].clone();
|
|
|
+ // let open = Decimal::from_str(first_record["open"].as_str().unwrap().to_string().as_str()).unwrap();
|
|
|
+ // let close = Decimal::from_str(last_record["close"].as_str().unwrap().to_string().as_str()).unwrap();
|
|
|
|
|
|
- let price_diff = (Decimal::ONE_HUNDRED * (close - open) / open).abs();
|
|
|
+ // let price_diff = (Decimal::ONE_HUNDRED * (close - open) / open).abs();
|
|
|
let mut volatility = Decimal::ZERO;
|
|
|
let mut up = Decimal::ZERO;
|
|
|
let mut down = Decimal::ZERO;
|
|
|
@@ -93,16 +93,11 @@ fn calc_volatility_div_price_diff(records: Value) -> Decimal {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- let mut vdpd = if price_diff.is_zero() {
|
|
|
- Decimal::ONE_THOUSAND
|
|
|
+ let up_down_diff = (up - down).abs();
|
|
|
+ let mut vdpd = if up_down_diff.is_zero() {
|
|
|
+ Decimal::TWO * volatility
|
|
|
} else {
|
|
|
- let up_down_diff = (up - down).abs();
|
|
|
-
|
|
|
- if up_down_diff.is_zero() {
|
|
|
- Decimal::TWO * volatility / price_diff
|
|
|
- } else {
|
|
|
- (Decimal::ONE / up_down_diff) * volatility / price_diff
|
|
|
- }
|
|
|
+ (Decimal::ONE / up_down_diff) * volatility
|
|
|
};
|
|
|
vdpd.rescale(6);
|
|
|
|