Skip to content

Commit 306851c

Browse files
committed
debug
1 parent 9e81c27 commit 306851c

1 file changed

Lines changed: 13 additions & 6 deletions

File tree

scripts/risk_manager.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,14 @@ def _refine_signals(df_signals, portfolio) -> Dict[str, Dict[str, Any]]:
104104
temp_available_cash = new_temp_available_cash
105105

106106
elif signal == "BUY":
107-
_process_buy(ticker, portfolio, dict_enriched,
107+
new_temp_positions_count,new_temp_available_cash = _process_buy(ticker, portfolio, dict_enriched,
108108
max_positions=max_positions,
109109
risk_per_trade=risk_per_trade,
110110
atr_factor=atr_factor,
111111
temp_positions_count=temp_positions_count,
112112
temp_available_cash=temp_available_cash)
113+
temp_positions_count = new_temp_positions_count
114+
temp_available_cash = new_temp_available_cash
113115

114116
# aggiorna valori temporanei
115117
if ticker in dict_enriched["BUY"]:
@@ -201,14 +203,14 @@ def _calculate_atr(portfolio, ticker, period: int = 14) -> float:
201203
return float(atr) if pd.notna(atr) else 0.0
202204

203205

204-
def _process_buy(ticker, portfolio, dict_enriched, max_positions, risk_per_trade, atr_factor):
206+
def _process_buy(ticker, portfolio, dict_enriched, max_positions, risk_per_trade, atr_factor, temp_positions_count, temp_available_cash):
205207
#logger.info(f"Processing BUY for ticker {ticker}")
206208

207209
positions_count = portfolio.get_positions_count()
208210
#logger.info(f"Current positions count: {positions_count} / Max allowed: {max_positions}")
209211
if positions_count >= max_positions:
210212
logger.info(f"Max positions reached, skipping BUY for {ticker}")
211-
return
213+
return temp_positions_count, temp_available_cash
212214

213215
available_cash = portfolio.get_available_cash()
214216
#logger.info(f"Available cash: {available_cash}")
@@ -221,13 +223,13 @@ def _process_buy(ticker, portfolio, dict_enriched, max_positions, risk_per_trade
221223
#logger.info(f"ATR for {ticker}: {atr}")
222224
if atr == 0:
223225
logger.warning(f"ATR is zero for {ticker}, cannot calculate position size")
224-
return
226+
return temp_positions_count, temp_available_cash
225227

226228
risk_distance = atr * atr_factor
227229
#logger.info(f"Risk distance (ATR * factor {atr_factor}): {risk_distance}")
228230
if risk_distance == 0:
229231
logger.warning(f"Risk distance is zero for {ticker}, skipping BUY")
230-
return
232+
return temp_positions_count, temp_available_cash
231233

232234
price = float(get_last_close(ticker))
233235
#logger.info(f"Last close price for {ticker}: {price}")
@@ -238,7 +240,7 @@ def _process_buy(ticker, portfolio, dict_enriched, max_positions, risk_per_trade
238240
# Controllo cash disponibile
239241
if position_size < 1 or position_size * price > available_cash:
240242
logger.info(f"Position size too small or exceeds available cash, skipping BUY for {ticker}")
241-
return
243+
return temp_positions_count, temp_available_cash
242244

243245
stop = price - risk_distance
244246
dict_enriched["BUY"][ticker] = {
@@ -249,3 +251,8 @@ def _process_buy(ticker, portfolio, dict_enriched, max_positions, risk_per_trade
249251
}
250252

251253
logger.info(f"BUY signal prepared for {ticker}: {dict_enriched['BUY'][ticker]}")
254+
255+
temp_positions_count += 1
256+
temp_available_cash += int(position_size) * price
257+
258+
return temp_positions_count, temp_available_cash

0 commit comments

Comments
 (0)