Add minimal order object serialization
This commit is contained in:
parent
8369d5bedd
commit
79107fd062
@ -337,7 +337,7 @@ def trade_list_to_dataframe(trades: List[LocalTrade]) -> pd.DataFrame:
|
|||||||
:param trades: List of trade objects
|
:param trades: List of trade objects
|
||||||
:return: Dataframe with BT_DATA_COLUMNS
|
:return: Dataframe with BT_DATA_COLUMNS
|
||||||
"""
|
"""
|
||||||
df = pd.DataFrame.from_records([t.to_json() for t in trades], columns=BT_DATA_COLUMNS)
|
df = pd.DataFrame.from_records([t.to_json(True) for t in trades], columns=BT_DATA_COLUMNS)
|
||||||
if len(df) > 0:
|
if len(df) > 0:
|
||||||
df.loc[:, 'close_date'] = pd.to_datetime(df['close_date'], utc=True)
|
df.loc[:, 'close_date'] = pd.to_datetime(df['close_date'], utc=True)
|
||||||
df.loc[:, 'open_date'] = pd.to_datetime(df['open_date'], utc=True)
|
df.loc[:, 'open_date'] = pd.to_datetime(df['open_date'], utc=True)
|
||||||
|
@ -137,31 +137,35 @@ class Order(_DECL_BASE):
|
|||||||
'info': {},
|
'info': {},
|
||||||
}
|
}
|
||||||
|
|
||||||
def to_json(self, entry_side: str) -> Dict[str, Any]:
|
def to_json(self, entry_side: str, minified: bool = False) -> Dict[str, Any]:
|
||||||
return {
|
resp = {
|
||||||
'pair': self.ft_pair,
|
|
||||||
'order_id': self.order_id,
|
|
||||||
'status': self.status,
|
|
||||||
'amount': self.amount,
|
'amount': self.amount,
|
||||||
'average': round(self.average, 8) if self.average else 0,
|
|
||||||
'safe_price': self.safe_price,
|
'safe_price': self.safe_price,
|
||||||
'cost': self.cost if self.cost else 0,
|
|
||||||
'filled': self.filled,
|
|
||||||
'ft_order_side': self.ft_order_side,
|
'ft_order_side': self.ft_order_side,
|
||||||
'is_open': self.ft_is_open,
|
|
||||||
'order_date': self.order_date.strftime(DATETIME_PRINT_FORMAT)
|
|
||||||
if self.order_date else None,
|
|
||||||
'order_timestamp': int(self.order_date.replace(
|
|
||||||
tzinfo=timezone.utc).timestamp() * 1000) if self.order_date else None,
|
|
||||||
'order_filled_date': self.order_filled_date.strftime(DATETIME_PRINT_FORMAT)
|
|
||||||
if self.order_filled_date else None,
|
|
||||||
'order_filled_timestamp': int(self.order_filled_date.replace(
|
'order_filled_timestamp': int(self.order_filled_date.replace(
|
||||||
tzinfo=timezone.utc).timestamp() * 1000) if self.order_filled_date else None,
|
tzinfo=timezone.utc).timestamp() * 1000) if self.order_filled_date else None,
|
||||||
'order_type': self.order_type,
|
|
||||||
'price': self.price,
|
|
||||||
'ft_is_entry': self.ft_order_side == entry_side,
|
'ft_is_entry': self.ft_order_side == entry_side,
|
||||||
'remaining': self.remaining,
|
|
||||||
}
|
}
|
||||||
|
if not minified:
|
||||||
|
resp.update({
|
||||||
|
'pair': self.ft_pair,
|
||||||
|
'order_id': self.order_id,
|
||||||
|
'status': self.status,
|
||||||
|
'average': round(self.average, 8) if self.average else 0,
|
||||||
|
'cost': self.cost if self.cost else 0,
|
||||||
|
'filled': self.filled,
|
||||||
|
'is_open': self.ft_is_open,
|
||||||
|
'order_date': self.order_date.strftime(DATETIME_PRINT_FORMAT)
|
||||||
|
if self.order_date else None,
|
||||||
|
'order_timestamp': int(self.order_date.replace(
|
||||||
|
tzinfo=timezone.utc).timestamp() * 1000) if self.order_date else None,
|
||||||
|
'order_filled_date': self.order_filled_date.strftime(DATETIME_PRINT_FORMAT)
|
||||||
|
if self.order_filled_date else None,
|
||||||
|
'order_type': self.order_type,
|
||||||
|
'price': self.price,
|
||||||
|
'remaining': self.remaining,
|
||||||
|
})
|
||||||
|
return resp
|
||||||
|
|
||||||
def close_bt_order(self, close_date: datetime, trade: 'LocalTrade'):
|
def close_bt_order(self, close_date: datetime, trade: 'LocalTrade'):
|
||||||
self.order_filled_date = close_date
|
self.order_filled_date = close_date
|
||||||
@ -394,9 +398,9 @@ class LocalTrade():
|
|||||||
f'open_rate={self.open_rate:.8f}, open_since={open_since})'
|
f'open_rate={self.open_rate:.8f}, open_since={open_since})'
|
||||||
)
|
)
|
||||||
|
|
||||||
def to_json(self) -> Dict[str, Any]:
|
def to_json(self, minified: bool = False) -> Dict[str, Any]:
|
||||||
filled_orders = self.select_filled_or_open_orders()
|
filled_orders = self.select_filled_or_open_orders()
|
||||||
orders = [order.to_json(self.entry_side) for order in filled_orders]
|
orders = [order.to_json(self.entry_side, minified) for order in filled_orders]
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'trade_id': self.id,
|
'trade_id': self.id,
|
||||||
|
Loading…
Reference in New Issue
Block a user