extracted status printing method in HiddenTrailingStop strategy.

added leverage to stop order in HiddenTrailingStop strategy.
This commit is contained in:
Giulio De Pasquale 2021-02-22 00:25:21 +00:00
parent a73e59e0e3
commit 551ca054c6

View File

@ -88,6 +88,30 @@ pub struct HiddenTrailingStop {
impl HiddenTrailingStop { impl HiddenTrailingStop {
fn print_status(&self, position: &Position) {
match self.stop_percentages.get(&position.id()) {
None => {
info!(
"\tState: {:?} | PL: {:0.2}{} ({:0.2}%)",
position.profit_state().unwrap(),
position.pl(),
position.pair().quote(),
position.pl_perc()
);
}
Some(stop_percentage) => {
info!(
"\tState: {:?} | PL: {:0.2}{} ({:0.2}%) | Stop: {:0.2}",
position.profit_state().unwrap(),
position.pl(),
position.pair().quote(),
position.pl_perc(),
stop_percentage
);
}
}
}
fn update_stop_percentage(&mut self, position: &Position) { fn update_stop_percentage(&mut self, position: &Position) {
if let Some(profit_state) = position.profit_state() { if let Some(profit_state) = position.profit_state() {
let profit_state_delta = match profit_state { let profit_state_delta = match profit_state {
@ -116,15 +140,6 @@ impl HiddenTrailingStop {
} }
} }
} }
info!(
"\tState: {:?} | PL: {:0.2}{} ({:0.2}%) | Stop: {:0.2}",
position.profit_state().unwrap(),
position.pl(),
position.pair().quote(),
position.pl_perc(),
self.stop_percentages.get(&position.id()).unwrap_or(&0.0)
);
} }
} }
} }
@ -135,7 +150,7 @@ impl Default for HiddenTrailingStop {
// in percentage // in percentage
let capital_max_loss = 15.0; let capital_max_loss = 15.0;
let capital_min_profit = 9.0; let capital_min_profit = 1.0;
let capital_good_profit = capital_min_profit * 2.0; let capital_good_profit = capital_min_profit * 2.0;
let weighted_min_profit = capital_min_profit / leverage; let weighted_min_profit = capital_min_profit / leverage;
@ -253,6 +268,8 @@ impl PositionStrategy for HiddenTrailingStop {
_: &HashMap<u64, Position>, _: &HashMap<u64, Position>,
fees: &Vec<TradingFees>, fees: &Vec<TradingFees>,
) -> (Position, Option<Vec<Event>>, Option<Vec<ActionMessage>>) { ) -> (Position, Option<Vec<Event>>, Option<Vec<ActionMessage>>) {
self.print_status(&position);
let taker_fee = fees let taker_fee = fees
.iter() .iter()
.filter_map(|x| match x { .filter_map(|x| match x {
@ -282,6 +299,7 @@ impl PositionStrategy for HiddenTrailingStop {
OrderKind::Stop { price: stop_loss_price }, OrderKind::Stop { price: stop_loss_price },
position.platform(), position.platform(),
position.amount().neg()) position.amount().neg())
.with_leverage(Some(self.leverage))
.with_metadata(Some(OrderMetadata::new().with_position_id(Some(position.id())))) .with_metadata(Some(OrderMetadata::new().with_position_id(Some(position.id()))))
}; };
let stop_loss_set = *self.stop_loss_flags.entry(position.id()).or_insert(false); let stop_loss_set = *self.stop_loss_flags.entry(position.id()).or_insert(false);