saving
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
from rel.rel import init
|
||||
import json
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Any
|
||||
@@ -6,6 +5,93 @@ from typing import Any
|
||||
import valkey
|
||||
from pydantic import BaseModel
|
||||
|
||||
from sqlalchemy.util.typing import Self
|
||||
from collections.abc import Sequence, Callable
|
||||
|
||||
def ret_true():
|
||||
return True
|
||||
|
||||
class Locked_Value(Sequence):
|
||||
def __init__(self, initial_value: Any = None, unlock_func: Callable=ret_true):
|
||||
self._value: Any = initial_value
|
||||
self._unlock_func: Callable = unlock_func
|
||||
self._is_locked: bool = True
|
||||
|
||||
def __repr__(self):
|
||||
return str((self._value, self._is_locked, self._unlock_func))
|
||||
|
||||
def __len__(self):
|
||||
return len((self._value, self._is_locked, self._unlock_func))
|
||||
|
||||
def __getitem__(self, index):
|
||||
return (self._value, self._is_locked, self._unlock_func)[index]
|
||||
|
||||
def __str__(self):
|
||||
return str((self._value))
|
||||
|
||||
def unlock(self) -> Self:
|
||||
if self._unlock_func():
|
||||
self._is_locked = False
|
||||
return self
|
||||
|
||||
def lock(self) -> Self:
|
||||
self._is_locked = True
|
||||
return self
|
||||
|
||||
@property
|
||||
def is_locked(self):
|
||||
return self._is_locked
|
||||
|
||||
@property
|
||||
def is_unlocked(self):
|
||||
return not(self._is_locked)
|
||||
|
||||
@property
|
||||
def value(self):
|
||||
return self._value
|
||||
|
||||
@value.setter
|
||||
def value(self, v):
|
||||
if not(self._is_locked):
|
||||
self._value = v
|
||||
else:
|
||||
raise ValueError(f'Failed to set value, item is locked: {str(self.__repr__)}')
|
||||
|
||||
|
||||
class Current_Previous_Value:
|
||||
def __init__(self, value: Any = None, previous_value: Any = None):
|
||||
self._value: Any = value
|
||||
self._previous_value: Any = previous_value
|
||||
|
||||
def __repr__(self):
|
||||
return str((self._value, self._previous_value))
|
||||
|
||||
def __len__(self):
|
||||
return len((self._value, self._previous_value))
|
||||
|
||||
def __getitem__(self, index):
|
||||
return (self._value, self._previous_value)[index]
|
||||
|
||||
def __str__(self):
|
||||
return str(self._value)
|
||||
|
||||
@property
|
||||
def value(self):
|
||||
return self._value
|
||||
|
||||
@property
|
||||
def previous_value(self):
|
||||
return self._previous_value
|
||||
|
||||
@value.setter
|
||||
def value(self, v):
|
||||
self._previous_value = self._value
|
||||
self._value = v
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# @dataclass(kw_only=True)
|
||||
class Algo_Config_Overrides(BaseModel):
|
||||
Allow_Ordering_Aster: bool
|
||||
@@ -171,6 +257,10 @@ class Perpetual_Exchange:
|
||||
min_order_size: float = 0
|
||||
min_lot_size: float = 0
|
||||
min_notional: float = 0
|
||||
buy_ratio: float = 0
|
||||
notional_obj: dict = field(default_factory=dict)
|
||||
notional_position: float = 0
|
||||
unrealized_pnl: float = 0
|
||||
|
||||
# async def update(self):
|
||||
# await self.Collateral_Updates.update()
|
||||
|
||||
Reference in New Issue
Block a user