|
|
@@ -43,6 +43,8 @@ pub struct AvellanedaStoikov {
|
|
|
pub money_flow: Decimal, // 资金流
|
|
|
pub money_flow_ema: Decimal, // 资金流ema
|
|
|
pub money_flow_diff: Decimal, // 资金流差值
|
|
|
+ pub money_flow_prev_cross: Decimal, // 资金量上次穿越0轴时的价格
|
|
|
+ pub total_cross_diff: Decimal, // 总共的穿越和(理论利润)
|
|
|
|
|
|
pub ask_delta: Decimal, // δa
|
|
|
pub bid_delta: Decimal, // δb
|
|
|
@@ -101,6 +103,7 @@ impl AvellanedaStoikov {
|
|
|
money_flow: Default::default(),
|
|
|
money_flow_ema: Default::default(),
|
|
|
money_flow_diff: Default::default(),
|
|
|
+ money_flow_prev_cross: Default::default(),
|
|
|
open_interest: Default::default(),
|
|
|
open_interest_ema: Default::default(),
|
|
|
open_interest_diff: Default::default(),
|
|
|
@@ -109,6 +112,7 @@ impl AvellanedaStoikov {
|
|
|
prev_trade_time: Utc::now().timestamp_micros(),
|
|
|
t_diff: Default::default(),
|
|
|
level: Default::default(),
|
|
|
+ total_cross_diff: Default::default(),
|
|
|
};
|
|
|
|
|
|
avellaneda_stoikov
|
|
|
@@ -329,7 +333,23 @@ impl AvellanedaStoikov {
|
|
|
} else {
|
|
|
dec!(0.01) * self.money_flow + dec!(0.99) * self.money_flow_ema
|
|
|
};
|
|
|
+
|
|
|
+ let prev_money_flow_diff = self.money_flow_diff;
|
|
|
self.money_flow_diff = self.money_flow - self.money_flow_ema;
|
|
|
+
|
|
|
+ let _0 = Decimal::ZERO;
|
|
|
+ let is_cross = (prev_money_flow_diff > _0 && self.money_flow_diff < _0) || (prev_money_flow_diff < _0 && self.money_flow_diff > _0);
|
|
|
+ if is_cross {
|
|
|
+ if !self.money_flow_prev_cross.is_zero() {
|
|
|
+ if prev_money_flow_diff > _0 {
|
|
|
+ self.total_cross_diff += self.mid_price - self.money_flow_prev_cross;
|
|
|
+ } else {
|
|
|
+ self.total_cross_diff += self.money_flow_prev_cross - self.mid_price;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ self.money_flow_prev_cross = self.mid_price;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -535,7 +555,7 @@ impl AvellanedaStoikov {
|
|
|
inventory: self.inventory,
|
|
|
sigma_square: self.sigma_square,
|
|
|
gamma: self.money_flow_diff,
|
|
|
- kappa: self.open_interest,
|
|
|
+ kappa: self.total_cross_diff,
|
|
|
|
|
|
flow_ratio: self.money_flow,
|
|
|
ref_price: self.ref_price,
|