refactoring archrunners+new ma inds
This commit is contained in:
@ -3,6 +3,9 @@ import sqlite3
|
||||
import queue
|
||||
import threading
|
||||
import time
|
||||
from v2realbot.common.model import RunArchive, RunArchiveView
|
||||
from datetime import datetime
|
||||
import json
|
||||
|
||||
sqlite_db_file = DATA_DIR + "/v2trading.db"
|
||||
# Define the connection pool
|
||||
@ -50,9 +53,57 @@ def execute_with_retry(cursor: sqlite3.Cursor, statement: str, retry_interval: i
|
||||
else:
|
||||
raise e
|
||||
|
||||
|
||||
#for pool of connections if necessary
|
||||
pool = ConnectionPool(10)
|
||||
#for one shared connection (used for writes only in WAL mode)
|
||||
insert_conn = sqlite3.connect(sqlite_db_file, check_same_thread=False)
|
||||
insert_queue = queue.Queue()
|
||||
insert_queue = queue.Queue()
|
||||
|
||||
#prevede dict radku zpatky na objekt vcetme retypizace
|
||||
def row_to_runarchiveview(row: dict) -> RunArchiveView:
|
||||
return RunArchive(
|
||||
id=row['runner_id'],
|
||||
strat_id=row['strat_id'],
|
||||
batch_id=row['batch_id'],
|
||||
symbol=row['symbol'],
|
||||
name=row['name'],
|
||||
note=row['note'],
|
||||
started=datetime.fromisoformat(row['started']) if row['started'] else None,
|
||||
stopped=datetime.fromisoformat(row['stopped']) if row['stopped'] else None,
|
||||
mode=row['mode'],
|
||||
account=row['account'],
|
||||
bt_from=datetime.fromisoformat(row['bt_from']) if row['bt_from'] else None,
|
||||
bt_to=datetime.fromisoformat(row['bt_to']) if row['bt_to'] else None,
|
||||
ilog_save=bool(row['ilog_save']),
|
||||
profit=float(row['profit']),
|
||||
trade_count=int(row['trade_count']),
|
||||
end_positions=int(row['end_positions']),
|
||||
end_positions_avgp=float(row['end_positions_avgp']),
|
||||
metrics=json.loads(row['metrics']),
|
||||
)
|
||||
|
||||
#prevede dict radku zpatky na objekt vcetme retypizace
|
||||
def row_to_runarchive(row: dict) -> RunArchive:
|
||||
return RunArchive(
|
||||
id=row['runner_id'],
|
||||
strat_id=row['strat_id'],
|
||||
batch_id=row['batch_id'],
|
||||
symbol=row['symbol'],
|
||||
name=row['name'],
|
||||
note=row['note'],
|
||||
started=datetime.fromisoformat(row['started']) if row['started'] else None,
|
||||
stopped=datetime.fromisoformat(row['stopped']) if row['stopped'] else None,
|
||||
mode=row['mode'],
|
||||
account=row['account'],
|
||||
bt_from=datetime.fromisoformat(row['bt_from']) if row['bt_from'] else None,
|
||||
bt_to=datetime.fromisoformat(row['bt_to']) if row['bt_to'] else None,
|
||||
strat_json=json.loads(row['strat_json']),
|
||||
settings=json.loads(row['settings']),
|
||||
ilog_save=bool(row['ilog_save']),
|
||||
profit=float(row['profit']),
|
||||
trade_count=int(row['trade_count']),
|
||||
end_positions=int(row['end_positions']),
|
||||
end_positions_avgp=float(row['end_positions_avgp']),
|
||||
metrics=json.loads(row['metrics']),
|
||||
stratvars_toml=row['stratvars_toml']
|
||||
)
|
||||
@ -198,6 +198,7 @@ class RunArchiveChange(BaseModel):
|
||||
id: UUID
|
||||
note: str
|
||||
|
||||
#do budoucna pouzit SQLAlchemy
|
||||
#Contains archive of running strategies (runner) - master
|
||||
class RunArchive(BaseModel):
|
||||
#unique id of algorun
|
||||
@ -215,6 +216,7 @@ class RunArchive(BaseModel):
|
||||
bt_from: Optional[datetime] = None
|
||||
bt_to: Optional[datetime] = None
|
||||
strat_json: Optional[str] = None
|
||||
##bude decomiss, misto toho stratvars_toml
|
||||
stratvars: Optional[dict] = None
|
||||
settings: Optional[dict] = None
|
||||
ilog_save: Optional[bool] = False
|
||||
@ -222,9 +224,30 @@ class RunArchive(BaseModel):
|
||||
trade_count: int = 0
|
||||
end_positions: int = 0
|
||||
end_positions_avgp: float = 0
|
||||
open_orders: Union[dict, str] = None
|
||||
metrics: Union[dict, str] = None
|
||||
stratvars_toml: Optional[str] = None
|
||||
|
||||
#For gui view master table
|
||||
class RunArchiveView(BaseModel):
|
||||
id: UUID
|
||||
strat_id: UUID
|
||||
batch_id: Optional[str] = None
|
||||
symbol: str
|
||||
name: str
|
||||
note: Optional[str] = None
|
||||
started: datetime
|
||||
stopped: Optional[datetime] = None
|
||||
mode: Mode
|
||||
account: Account
|
||||
bt_from: Optional[datetime] = None
|
||||
bt_to: Optional[datetime] = None
|
||||
ilog_save: Optional[bool] = False
|
||||
profit: float = 0
|
||||
trade_count: int = 0
|
||||
end_positions: int = 0
|
||||
end_positions_avgp: float = 0
|
||||
metrics: Union[dict, str] = None
|
||||
|
||||
#trida pro ukladani historie stoplossy do ext_data
|
||||
class SLHistory(BaseModel):
|
||||
id: Optional[UUID]
|
||||
|
||||
Reference in New Issue
Block a user