removed positions and orders modules. created models
This commit is contained in:
parent
3171e054e0
commit
e8642d758e
@ -6,8 +6,7 @@ use bitfinex::orders::{OrderForm, OrderMeta};
|
|||||||
use bitfinex::ticker::TradingPairTicker;
|
use bitfinex::ticker::TradingPairTicker;
|
||||||
|
|
||||||
use crate::currency::{Symbol, SymbolPair};
|
use crate::currency::{Symbol, SymbolPair};
|
||||||
use crate::orders::{Order, OrderKind};
|
use crate::models::{Order, OrderKind, Position, PositionState};
|
||||||
use crate::positions::{Position, PositionState};
|
|
||||||
use crate::BoxError;
|
use crate::BoxError;
|
||||||
|
|
||||||
#[derive(Eq, PartialEq, Hash, Clone)]
|
#[derive(Eq, PartialEq, Hash, Clone)]
|
||||||
|
@ -5,8 +5,8 @@ use tokio::stream::StreamExt;
|
|||||||
use tokio::task::JoinHandle;
|
use tokio::task::JoinHandle;
|
||||||
|
|
||||||
use crate::bot::BfxBot;
|
use crate::bot::BfxBot;
|
||||||
|
use crate::models::{Position, PositionProfitState};
|
||||||
use crate::pairs::PairStatus;
|
use crate::pairs::PairStatus;
|
||||||
use crate::positions::{Position, PositionProfitState, PositionState};
|
|
||||||
use crate::BoxError;
|
use crate::BoxError;
|
||||||
|
|
||||||
#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
|
#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
|
||||||
|
@ -3,15 +3,16 @@ use tokio::time::{delay_for, Duration};
|
|||||||
use crate::bot::BfxBot;
|
use crate::bot::BfxBot;
|
||||||
use crate::connectors::BfxWrapper;
|
use crate::connectors::BfxWrapper;
|
||||||
use crate::currency::{Symbol, SymbolPair};
|
use crate::currency::{Symbol, SymbolPair};
|
||||||
|
use crate::events::SignalKind;
|
||||||
use crate::strategy::TrailingStop;
|
use crate::strategy::TrailingStop;
|
||||||
|
use std::thread::JoinHandle;
|
||||||
|
|
||||||
mod bot;
|
mod bot;
|
||||||
mod connectors;
|
mod connectors;
|
||||||
mod currency;
|
mod currency;
|
||||||
mod events;
|
mod events;
|
||||||
mod orders;
|
mod models;
|
||||||
mod pairs;
|
mod pairs;
|
||||||
mod positions;
|
|
||||||
mod strategy;
|
mod strategy;
|
||||||
mod ticker;
|
mod ticker;
|
||||||
|
|
||||||
@ -21,8 +22,9 @@ pub type BoxError = Box<dyn std::error::Error + Send + Sync>;
|
|||||||
async fn main() -> Result<(), BoxError> {
|
async fn main() -> Result<(), BoxError> {
|
||||||
let test_api_key = "P1EVE68DJByDAkGQvpIkTwfrbYXd2Vo2ZaIhTYb9vx2";
|
let test_api_key = "P1EVE68DJByDAkGQvpIkTwfrbYXd2Vo2ZaIhTYb9vx2";
|
||||||
let test_api_secret = "1nicg8z0zKVEt5Rb7ZDpIYjVYVTgvCaCPMZqB0niFli";
|
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(
|
let mut bot = BfxBot::new(
|
||||||
bfx,
|
bfx,
|
||||||
vec![Symbol::TESTBTC],
|
vec![Symbol::TESTBTC],
|
||||||
|
@ -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,
|
|
||||||
}
|
|
@ -2,8 +2,7 @@ use std::collections::HashMap;
|
|||||||
|
|
||||||
use crate::currency::SymbolPair;
|
use crate::currency::SymbolPair;
|
||||||
use crate::events::{Event, EventDispatcher, SignalKind};
|
use crate::events::{Event, EventDispatcher, SignalKind};
|
||||||
use crate::orders::Order;
|
use crate::models::{Order, Position};
|
||||||
use crate::positions::Position;
|
|
||||||
use crate::strategy::Strategy;
|
use crate::strategy::Strategy;
|
||||||
|
|
||||||
pub struct PairStatus<'a> {
|
pub struct PairStatus<'a> {
|
||||||
|
@ -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,
|
|
||||||
}
|
|
@ -1,8 +1,8 @@
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use crate::events::{Event, EventKind, EventMetadata, SignalKind};
|
use crate::events::{Event, EventKind, EventMetadata, SignalKind};
|
||||||
|
use crate::models::{Position, PositionProfitState};
|
||||||
use crate::pairs::PairStatus;
|
use crate::pairs::PairStatus;
|
||||||
use crate::positions::{Position, PositionProfitState, PositionState};
|
|
||||||
use dyn_clone::DynClone;
|
use dyn_clone::DynClone;
|
||||||
|
|
||||||
pub trait Strategy: DynClone {
|
pub trait Strategy: DynClone {
|
||||||
|
Loading…
Reference in New Issue
Block a user