-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmodels.py
More file actions
86 lines (71 loc) · 3.16 KB
/
models.py
File metadata and controls
86 lines (71 loc) · 3.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import math
class SpotBalance:
def __init__(self, data):
self.asset = data['asset']
self.free = data['free']
self.locked = data['locked']
class MarginBalance:
def __init__(self, data):
self.asset = data['asset']
self.free = data['free']
self.locked = data['locked']
class Contract:
def __init__(self, contract_data, exchange):
self.symbol = contract_data['symbol']
self.base_asset = contract_data['baseAsset']
self.quote_asset = contract_data['quoteAsset']
self.tick_size = float(contract_data['filters'][2]['stepSize'])
self.base_asset_decimals = int(-math.log10(self.tick_size))
self.exchange = exchange
# self.quote_asset_decimals = contract_data['quotePrecision']
# self.lot_size = 1.0 / pow(10, self.quantity_decimals)
# class Balance:
# def __init__(self, data):
# self.initial_margin = float(data['initialMargin'])
# self.maintenance_margin = float(data['maintMargin'])
# self.margin_balance = float(data['marginBalance'])
# self.wallet_balance = float(data['walletBalance'])
# self.unrealized_pnl = float(data['unrealizedProfit'])
class Candle:
def __init__(self, candle_data, timeframe, exchange):
if exchange == "Spot" or exchange == "Margin": #check for spellings
self.timestamp = candle_data[0]
self.open = float(candle_data[1])
self.high = float(candle_data[2])
self.low = float(candle_data[3])
self.close = float(candle_data[4])
self.volume = float(candle_data[5])
elif exchange == "parse_trade":
self.timestamp = candle_data['ts']
self.open = float(candle_data['open'])
self.high = float(candle_data['high'])
self.low = float(candle_data['low'])
self.close = float(candle_data['close'])
self.volume = float(candle_data['volume'])
# class Contract:
# def __init__(self, contract_data):
# self.symbol = contract_data['symbol']
# self.base_asset = contract_data['baseAsset']
# self.quote_asset = contract_data['quoteAsset']
# self.price_decimals = contract_data['pricePrecision']
# self.quantity_decimals = contract_data['quantityPrecision']
# self.tick_size = 1.0 / pow(10, self.price_decimals)
# self.lot_size = 1.0 / pow(10, self.quantity_decimals)
class OrderStatus:
def __init__(self, order_info):
self.order_id = order_info['orderId']
self.status = order_info['status'].lower()
self.avg_price = float(order_info['price'])
class Trade:
def __init__(self, trade_info):
self.time: int = trade_info['time']
self.contract: Contract = trade_info['contract']
self.strategy: str = trade_info['strategy']
self.side: str = trade_info['side']
self.entry_price: float = trade_info['entry_price']
self.status: str = trade_info['status']
self.pnl: float = trade_info['pnl']
self.quantity = trade_info['quantity']
self.entry_id = trade_info['entry_id']
self.stop_loss_line = None
self.profit_line = None