removed positions and orders modules. created models

This commit is contained in:
Giulio De Pasquale 2021-01-13 08:57:36 +00:00
parent 3171e054e0
commit e8642d758e
7 changed files with 10 additions and 165 deletions

View File

@ -6,8 +6,7 @@ use bitfinex::orders::{OrderForm, OrderMeta};
use bitfinex::ticker::TradingPairTicker;
use crate::currency::{Symbol, SymbolPair};
use crate::orders::{Order, OrderKind};
use crate::positions::{Position, PositionState};
use crate::models::{Order, OrderKind, Position, PositionState};
use crate::BoxError;
#[derive(Eq, PartialEq, Hash, Clone)]

View File

@ -5,8 +5,8 @@ use tokio::stream::StreamExt;
use tokio::task::JoinHandle;
use crate::bot::BfxBot;
use crate::models::{Position, PositionProfitState};
use crate::pairs::PairStatus;
use crate::positions::{Position, PositionProfitState, PositionState};
use crate::BoxError;
#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]

View File

@ -3,15 +3,16 @@ use tokio::time::{delay_for, Duration};
use crate::bot::BfxBot;
use crate::connectors::BfxWrapper;
use crate::currency::{Symbol, SymbolPair};
use crate::events::SignalKind;
use crate::strategy::TrailingStop;
use std::thread::JoinHandle;
mod bot;
mod connectors;
mod currency;
mod events;
mod orders;
mod models;
mod pairs;
mod positions;
mod strategy;
mod ticker;
@ -21,8 +22,9 @@ pub type BoxError = Box<dyn std::error::Error + Send + Sync>;
async fn main() -> Result<(), BoxError> {
let test_api_key = "P1EVE68DJByDAkGQvpIkTwfrbYXd2Vo2ZaIhTYb9vx2";
let test_api_secret = "1nicg8z0zKVEt5Rb7ZDpIYjVYVTgvCaCPMZqB0niFli";
//
let bfx = BfxWrapper::new(test_api_key, test_api_secret);
let bfx = BfxWrapper::new(test_api_key, test_api_secret)
.with_affiliate_code(Some("XPebOgHxA".into()));
let mut bot = BfxBot::new(
bfx,
vec![Symbol::TESTBTC],

View File

@ -1,37 +0,0 @@
pub struct Order {
pub id: i64,
pub group_id: Option<i32>,
pub client_id: i64,
pub symbol: String,
pub creation_timestamp: i64,
pub update_timestamp: i64,
pub amount: f64,
pub amount_original: f64,
pub order_type: String,
pub previous_order_type: Option<String>,
pub flags: Option<i32>,
pub order_status: Option<String>,
pub price: f64,
pub price_avg: f64,
pub price_trailing: Option<f64>,
pub price_aux_limit: Option<f64>,
pub notify: i32,
pub hidden: i32,
pub placed_id: Option<i32>,
}
pub enum OrderKind {
Limit,
ExchangeLimit,
Market,
ExchangeMarket,
Stop,
ExchangeStop,
StopLimit,
ExchangeStopLimit,
TrailingStop,
Fok,
ExchangeFok,
Ioc,
ExchangeIoc,
}

View File

@ -2,8 +2,7 @@ use std::collections::HashMap;
use crate::currency::SymbolPair;
use crate::events::{Event, EventDispatcher, SignalKind};
use crate::orders::Order;
use crate::positions::Position;
use crate::models::{Order, Position};
use crate::strategy::Strategy;
pub struct PairStatus<'a> {

View File

@ -1,118 +0,0 @@
use crate::currency::{Symbol, SymbolPair};
#[derive(Clone, Debug)]
pub struct Position {
pair: SymbolPair,
state: PositionState,
profit_state: Option<PositionProfitState>,
amount: f64,
base_price: f64,
pl: f64,
pl_perc: f64,
price_liq: f64,
position_id: u64,
creation_date: Option<u64>,
creation_update: Option<u64>,
}
impl Position {
pub fn new(
pair: SymbolPair,
state: PositionState,
amount: f64,
base_price: f64,
pl: f64,
pl_perc: f64,
price_liq: f64,
position_id: u64,
) -> Self {
Position {
pair,
state,
amount,
base_price,
pl,
pl_perc,
price_liq,
position_id,
creation_date: None,
creation_update: None,
profit_state: None,
}
}
pub fn with_creation_date(mut self, creation_date: Option<u64>) -> Self {
self.creation_date = creation_date;
self
}
pub fn with_creation_update(mut self, creation_update: Option<u64>) -> Self {
self.creation_update = creation_update;
self
}
pub fn with_profit_state(mut self, profit_state: Option<PositionProfitState>) -> Self {
self.profit_state = profit_state;
self
}
pub fn pair(&self) -> &SymbolPair {
&self.pair
}
pub fn state(&self) -> PositionState {
self.state
}
pub fn amount(&self) -> f64 {
self.amount
}
pub fn base_price(&self) -> f64 {
self.base_price
}
pub fn pl(&self) -> f64 {
self.pl
}
pub fn pl_perc(&self) -> f64 {
self.pl_perc
}
pub fn price_liq(&self) -> f64 {
self.price_liq
}
pub fn position_id(&self) -> u64 {
self.position_id
}
pub fn profit_state(&self) -> Option<PositionProfitState> {
self.profit_state
}
pub fn creation_date(&self) -> Option<u64> {
self.creation_date
}
pub fn creation_update(&self) -> Option<u64> {
self.creation_update
}
}
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub enum PositionProfitState {
Critical,
Loss,
BreakEven,
MinimumProfit,
Profit,
}
impl PositionProfitState {
fn color(self) -> String {
match self {
PositionProfitState::Critical | PositionProfitState::Loss => "red",
PositionProfitState::BreakEven => "yellow",
PositionProfitState::MinimumProfit | PositionProfitState::Profit => "green",
}
.into()
}
}
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub enum PositionState {
Closed,
Open,
}

View File

@ -1,8 +1,8 @@
use std::collections::HashMap;
use crate::events::{Event, EventKind, EventMetadata, SignalKind};
use crate::models::{Position, PositionProfitState};
use crate::pairs::PairStatus;
use crate::positions::{Position, PositionProfitState, PositionState};
use dyn_clone::DynClone;
pub trait Strategy: DynClone {