refactor: standardize DecisionManager, DealManager, and RiskManager

Complete standardization of remaining core management classes.

DecisionManager method renames (camelCase → snake_case):
- getOnlineAns → get_online_answer
- getSignalsAns → get_signals_answer
- getRightAns → get_right_answer
- getRetroTrendAns → get_retro_trend_answer
- generateMatrixProbabilityFromDict → generate_matrix_probability_from_dict
- createDump → create_dump
- loadDump → load_dump

DecisionManager variable renames:
- sigDict → sig_dict
- signalsAns → signals_ans
- signalsDataDict → signals_data_dict
- retroTemplateDict → retro_template_dict
- reqSig → req_sig
- sigAns → sig_ans
- rightAns → right_ans
- dictSignals → dict_signals
- dataDict → data_dict
- fileName → file_name

RiskManager improvements:
- getDecision → get_decision
- probabilityDecision → probability_decision
- Added comprehensive docstrings
- Improved spacing and formatting

DealManager method renames:
- findDealByPriceAndFig → find_deal_by_price_and_figi
- openDeal → open_deal
- closeDeal → close_deal

DealManager variable renames:
- startPrice → start_price
- desiredDeal → desired_deal
- newDealDict → new_deal_dict
- newDeal → new_deal

Documentation:
- Added comprehensive Google-style docstrings to all classes
- Documented all public methods with Args, Returns, and Notes
- Added usage examples where applicable
- Removed wildcard imports, using explicit imports

Follows: PEP 8, Google Python Style Guide

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Mark 2025-11-24 18:36:24 +01:00
parent 00c7614bfc
commit bfa0d13a25

View File

@ -1,49 +1,77 @@
import pandas as pd
import datetime
import numpy as np
import uuid
import uuid
class DealManager():
"""Manages open trading positions and deal lifecycle.
Tracks active positions with their entry prices and quantities,
supporting both opening new positions and closing existing ones.
"""
def __init__(self):
#self.commission=0.04
self.columns=['uuid','figi','amount','startPrice']
"""Initialize DealManager with empty deals DataFrame."""
self.columns = ['uuid', 'figi', 'amount', 'startPrice']
self.deals = pd.DataFrame(columns=self.columns)
self.deals = self.deals.set_index('uuid')
def findDealByPriceAndFig(self,price,figi):
ans=None
def find_deal_by_price_and_figi(self, price: float, figi: str):
"""Find existing deal by price and instrument identifier.
Args:
price: Entry price to search for.
figi: Financial Instrument Global Identifier.
Returns:
Deal UUID if found, None otherwise.
"""
ans = None
for i in range(self.deals.shape[0]):
if self.deals.iloc[i].startPrice == price and self.deals.iloc[i].figi == figi:
ans = self.deals.iloc[i].name
break
return ans
def openDeal(self,figi,startPrice,amount=1):
desiredDeal=self.findDealByPriceAndFig(startPrice,figi)
if desiredDeal == None:
newDealDict={
'uuid':[str(uuid.uuid4())],
'figi':[figi],
'startPrice':[startPrice],
'amount':[amount]
def open_deal(self, figi: str, start_price: float, amount: int = 1) -> None:
"""Open new deal or add to existing position.
If a deal with the same FIGI and price exists, adds to the amount.
Otherwise creates a new deal entry.
Args:
figi: Financial Instrument Global Identifier.
start_price: Entry price for the position.
amount: Number of units to trade (default 1).
"""
desired_deal = self.find_deal_by_price_and_figi(start_price, figi)
if desired_deal is None:
new_deal_dict = {
'uuid': [str(uuid.uuid4())],
'figi': [figi],
'startPrice': [start_price],
'amount': [amount]
}
#newDealDict['profit']=[startPrice*pow(1+self.commission,2)]
newDeal=pd.DataFrame.from_dict(newDealDict).set_index('uuid')
self.deals=pd.concat([self.deals, newDeal])
new_deal = pd.DataFrame.from_dict(new_deal_dict).set_index('uuid')
self.deals = pd.concat([self.deals, new_deal])
else:
self.deals.at[desiredDeal,'amount'] += amount
self.deals.at[desired_deal, 'amount'] += amount
def closeDeal(self,uuid,amount):
desiredDeal=self.deals.loc[uuid]
if desiredDeal.amount - amount == 0:
self.deals = self.deals.drop(labels = [uuid],axis = 0)
def close_deal(self, uuid_str: str, amount: int) -> None:
"""Close deal partially or completely.
Args:
uuid_str: Deal UUID to close.
amount: Number of units to close.
Note:
If amount equals deal amount, removes deal entirely.
Otherwise decreases deal amount.
"""
desired_deal = self.deals.loc[uuid_str]
if desired_deal.amount - amount == 0:
self.deals = self.deals.drop(labels=[uuid_str], axis=0)
else:
self.deals.at[uuid,'amount'] -= amount
#self.deals.loc[uuid].amount = desiredDeal.amount - amount
self.deals.at[uuid_str, 'amount'] -= amount