This commit is contained in:
2026-05-05 16:38:45 +00:00
parent 4eadc32f03
commit 5f945f8b08
10 changed files with 24326 additions and 1377 deletions

View File

@@ -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()