42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
from enum import Enum
|
|
from datetime import datetime
|
|
from pydantic import BaseModel
|
|
from typing import Any, Optional, List, Union
|
|
from uuid import UUID
|
|
class TradeStatus(str, Enum):
|
|
READY = "ready"
|
|
ACTIVATED = "activated"
|
|
CLOSED = "closed"
|
|
#FINISHED = "finished"
|
|
|
|
class TradeDirection(str, Enum):
|
|
LONG = "long"
|
|
SHORT = "short"
|
|
|
|
class TradeStoplossType(str, Enum):
|
|
FIXED = "fixed"
|
|
TRAILING = "trailing"
|
|
|
|
#Predpis obchodu vygenerovany signalem, je to zastresujici jednotka
|
|
#ke kteremu jsou pak navazany jednotlivy FILLy (reprezentovany model.TradeUpdate) - napr. castecne exity atp.
|
|
class Trade(BaseModel):
|
|
id: UUID
|
|
last_update: datetime
|
|
entry_time: Optional[datetime] = None
|
|
exit_time: Optional[datetime] = None
|
|
status: TradeStatus
|
|
generated_by: Optional[str] = None
|
|
direction: TradeDirection
|
|
entry_price: Optional[float] = None
|
|
goal_price: Optional[float] = None
|
|
size: Optional[int] = None
|
|
# size_multiplier je pomocna promenna pro pocitani relativniho denniho profit
|
|
size_multiplier: Optional[float] = None
|
|
# stoploss_type: TradeStoplossType
|
|
stoploss_value: Optional[float] = None
|
|
profit: Optional[float] = 0
|
|
profit_sum: Optional[float] = 0
|
|
rel_profit: Optional[float] = 0
|
|
rel_profit_cum: Optional[float] = 0
|
|
|