remodeled percentage calculation in strategy

This commit is contained in:
Giulio De Pasquale 2021-02-12 14:57:23 +00:00
parent 6c409ac9fd
commit 2acc81cd75

View File

@ -4,8 +4,10 @@ use std::fmt::{Debug, Formatter};
use dyn_clone::DynClone; use dyn_clone::DynClone;
use log::info; use log::info;
use crate::connectors::Connector;
use crate::events::{Event, EventKind, EventMetadata, Message}; use crate::events::{Event, EventKind, EventMetadata, Message};
use crate::managers::OptionUpdate; use crate::managers::OptionUpdate;
use crate::models::OrderBookEntry::Trading;
use crate::models::{ use crate::models::{
ActiveOrder, OrderBook, OrderBookEntry, OrderForm, OrderKind, Position, PositionProfitState, ActiveOrder, OrderBook, OrderBookEntry, OrderForm, OrderKind, Position, PositionProfitState,
PositionState, TradingPlatform, PositionState, TradingPlatform,
@ -74,10 +76,22 @@ pub struct TrailingStop {
} }
impl TrailingStop { impl TrailingStop {
const BREAK_EVEN_PERC: f64 = 0.1; // in percentage
const MIN_PROFIT_PERC: f64 = 0.5; const CAPITAL_MAX_LOSS: f64 = 17.5;
const GOOD_PROFIT_PERC: f64 = TrailingStop::MIN_PROFIT_PERC * 1.75; const CAPITAL_MIN_PROFIT: f64 = 10.0;
const MAX_LOSS_PERC: f64 = -4.0; const CAPITAL_GOOD_PROFIT: f64 = 20.0;
// in percentage
const MIN_PROFIT_TRAILING_DELTA: f64 = 0.2;
const GOOD_PROFIT_TRAILING_DELTA: f64 = 0.1;
const LEVERAGE: f64 = 15.0;
const MIN_PROFIT_PERC: f64 = (TrailingStop::CAPITAL_MIN_PROFIT / TrailingStop::LEVERAGE)
+ TrailingStop::MIN_PROFIT_TRAILING_DELTA;
const GOOD_PROFIT_PERC: f64 = (TrailingStop::CAPITAL_GOOD_PROFIT / TrailingStop::LEVERAGE)
+ TrailingStop::GOOD_PROFIT_TRAILING_DELTA;
const MAX_LOSS_PERC: f64 = -(TrailingStop::CAPITAL_MAX_LOSS / TrailingStop::LEVERAGE);
pub fn new() -> Self { pub fn new() -> Self {
TrailingStop { TrailingStop {
@ -88,8 +102,8 @@ impl TrailingStop {
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 {
PositionProfitState::MinimumProfit => Some(0.2), PositionProfitState::MinimumProfit => Some(TrailingStop::MIN_PROFIT_TRAILING_DELTA),
PositionProfitState::Profit => Some(0.1), PositionProfitState::Profit => Some(TrailingStop::GOOD_PROFIT_TRAILING_DELTA),
_ => None, _ => None,
}; };
@ -252,7 +266,7 @@ pub struct FastOrderStrategy {
impl Default for FastOrderStrategy { impl Default for FastOrderStrategy {
fn default() -> Self { fn default() -> Self {
Self { threshold: 0.2 } Self { threshold: 0.15 }
} }
} }