|
|
@@ -242,7 +242,7 @@ impl Predictor {
|
|
|
symbol: "".to_string(),
|
|
|
};
|
|
|
let is_need_push = self.close_price_vec.len() == 0
|
|
|
- || self.close_price_vec.deque.iter().last().unwrap().time - r.time > Decimal::ONE_THOUSAND
|
|
|
+ || r.time - self.close_price_vec.deque.iter().last().unwrap().time > Decimal::ONE_THOUSAND
|
|
|
;
|
|
|
|
|
|
if is_need_push {
|
|
|
@@ -256,12 +256,12 @@ impl Predictor {
|
|
|
let mut i = len - 1;
|
|
|
let mut sum: Decimal = Decimal::ZERO;
|
|
|
loop {
|
|
|
- if i == len - 11 {
|
|
|
+ sum += self.close_price_vec.get(i).unwrap().close;
|
|
|
+
|
|
|
+ if i == len - 10 {
|
|
|
break
|
|
|
}
|
|
|
|
|
|
- sum += self.close_price_vec.get(i).unwrap().close;
|
|
|
-
|
|
|
i = i - 1;
|
|
|
}
|
|
|
|
|
|
@@ -269,7 +269,7 @@ impl Predictor {
|
|
|
self.r_short = (self.mid_price - mean_10s) / mean_10s;
|
|
|
self.r_short.rescale(8);
|
|
|
} else {
|
|
|
- self.r_short = self.mid_price;
|
|
|
+ self.r_short = Decimal::ZERO;
|
|
|
mean_10s = self.mid_price;
|
|
|
}
|
|
|
|
|
|
@@ -279,28 +279,28 @@ impl Predictor {
|
|
|
let mut i = len - 1;
|
|
|
let mut sum: Decimal = Decimal::ZERO;
|
|
|
loop {
|
|
|
- if i == len - 301 {
|
|
|
+ sum += self.close_price_vec.get(i).unwrap().close;
|
|
|
+
|
|
|
+ if i == len - 300 {
|
|
|
break
|
|
|
}
|
|
|
|
|
|
- sum += self.close_price_vec.get(i).unwrap().close;
|
|
|
-
|
|
|
i = i - 1;
|
|
|
}
|
|
|
|
|
|
mean_300s = sum / Decimal::from(300);
|
|
|
self.r_long = (self.mid_price - mean_300s) / mean_300s;
|
|
|
self.r_long.rescale(8);
|
|
|
- } else if self.record_vec.len() == 5 && !self.mid_price.is_zero() {
|
|
|
+ } else if self.record_vec.len() >= 5 && !self.mid_price.is_zero() {
|
|
|
let mut i = self.record_vec.len() - 1;
|
|
|
let mut sum: Decimal = Decimal::ZERO;
|
|
|
loop {
|
|
|
- if i == 0 {
|
|
|
+ sum += self.record_vec[i].close;
|
|
|
+
|
|
|
+ if i == self.record_vec.len() - 5 {
|
|
|
break
|
|
|
}
|
|
|
|
|
|
- sum += self.record_vec[i].close;
|
|
|
-
|
|
|
i = i - 1;
|
|
|
}
|
|
|
|
|
|
@@ -308,7 +308,7 @@ impl Predictor {
|
|
|
self.r_long = (self.mid_price - mean_300s) / mean_300s;
|
|
|
self.r_long.rescale(8);
|
|
|
} else {
|
|
|
- self.r_long = self.mid_price;
|
|
|
+ self.r_long = Decimal::ZERO;
|
|
|
mean_300s = self.mid_price;
|
|
|
}
|
|
|
|