feat: update wallet migration to keep leverage
This commit is contained in:
@@ -93,13 +93,16 @@ def balance_distribution_over_time(
|
||||
min_date_res = timeframe_to_prev_date(timeframe, min_date)
|
||||
max_date_res = timeframe_to_prev_date(timeframe, max_date)
|
||||
index = pd.date_range(min_date_res, max_date_res, freq=timeframe_to_resample_freq(timeframe))
|
||||
df = pd.DataFrame(index=index)
|
||||
pairs_lev = [f"{pair}_leverage" for pair in pairlist]
|
||||
df = pd.DataFrame(index=index, columns=[stake_currency] + pairlist + pairs_lev, dtype=float)
|
||||
df[stake_currency] = float(start_balance)
|
||||
df[pairlist] = 0.0
|
||||
df[pairs_lev] = np.nan
|
||||
for trade in trades.sort_values(by=["open_date"]).itertuples():
|
||||
end_date = trade.close_date if trade.close_date is not pd.NaT else None
|
||||
# Exclude open orders - these won't have order_filled_timestamp set.
|
||||
orders = [o for o in trade.orders if o["order_filled_timestamp"]]
|
||||
df.loc[trade.open_date : end_date, f"{trade.pair}_leverage"] = trade.leverage
|
||||
for order in sorted(orders, key=lambda x: x["order_filled_timestamp"]):
|
||||
filled_at = pd.Timestamp(dt_from_ts(order["order_filled_timestamp"]))
|
||||
real_amount = order.get("filled", order["amount"]) / trade.leverage
|
||||
|
||||
@@ -81,6 +81,9 @@ def _migrate_wallet_history(config: Config, exchange: Exchange, starting_balance
|
||||
# Assume the first column is the index (date)
|
||||
stake_idx = balance_dist.columns.get_loc(stake_currency)
|
||||
pair_balance_idx = {pair: balance_dist.columns.get_loc(pair) + 1 for pair in pairlist_valid}
|
||||
pair_leverage_idx = {
|
||||
pair: balance_dist.columns.get_loc(f"{pair}_leverage") + 1 for pair in pairlist_valid
|
||||
}
|
||||
pair_price_idx = {
|
||||
pair: balance_dist.columns.get_loc(f"{pair}_open") + 1 for pair in pairlist_valid
|
||||
}
|
||||
@@ -106,6 +109,7 @@ def _migrate_wallet_history(config: Config, exchange: Exchange, starting_balance
|
||||
for pair in pairlist_valid:
|
||||
base_currency = pair.split("/")[0]
|
||||
balance_value = row[pair_balance_idx[pair]]
|
||||
leverage_value = row[pair_leverage_idx[pair]]
|
||||
# Only add entry if balance is not empty/NaN
|
||||
if not pd.isna(balance_value) and balance_value > 0:
|
||||
price_value = row[pair_price_idx[pair]]
|
||||
@@ -117,6 +121,7 @@ def _migrate_wallet_history(config: Config, exchange: Exchange, starting_balance
|
||||
currency=base_currency,
|
||||
price=price,
|
||||
balance=balance_value,
|
||||
leverage=leverage_value if not pd.isna(leverage_value) else 1.0,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user