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)
|
min_date_res = timeframe_to_prev_date(timeframe, min_date)
|
||||||
max_date_res = timeframe_to_prev_date(timeframe, max_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))
|
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[stake_currency] = float(start_balance)
|
||||||
df[pairlist] = 0.0
|
df[pairlist] = 0.0
|
||||||
|
df[pairs_lev] = np.nan
|
||||||
for trade in trades.sort_values(by=["open_date"]).itertuples():
|
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
|
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.
|
# Exclude open orders - these won't have order_filled_timestamp set.
|
||||||
orders = [o for o in trade.orders if o["order_filled_timestamp"]]
|
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"]):
|
for order in sorted(orders, key=lambda x: x["order_filled_timestamp"]):
|
||||||
filled_at = pd.Timestamp(dt_from_ts(order["order_filled_timestamp"]))
|
filled_at = pd.Timestamp(dt_from_ts(order["order_filled_timestamp"]))
|
||||||
real_amount = order.get("filled", order["amount"]) / trade.leverage
|
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)
|
# Assume the first column is the index (date)
|
||||||
stake_idx = balance_dist.columns.get_loc(stake_currency)
|
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_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_price_idx = {
|
||||||
pair: balance_dist.columns.get_loc(f"{pair}_open") + 1 for pair in pairlist_valid
|
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:
|
for pair in pairlist_valid:
|
||||||
base_currency = pair.split("/")[0]
|
base_currency = pair.split("/")[0]
|
||||||
balance_value = row[pair_balance_idx[pair]]
|
balance_value = row[pair_balance_idx[pair]]
|
||||||
|
leverage_value = row[pair_leverage_idx[pair]]
|
||||||
# Only add entry if balance is not empty/NaN
|
# Only add entry if balance is not empty/NaN
|
||||||
if not pd.isna(balance_value) and balance_value > 0:
|
if not pd.isna(balance_value) and balance_value > 0:
|
||||||
price_value = row[pair_price_idx[pair]]
|
price_value = row[pair_price_idx[pair]]
|
||||||
@@ -117,6 +121,7 @@ def _migrate_wallet_history(config: Config, exchange: Exchange, starting_balance
|
|||||||
currency=base_currency,
|
currency=base_currency,
|
||||||
price=price,
|
price=price,
|
||||||
balance=balance_value,
|
balance=balance_value,
|
||||||
|
leverage=leverage_value if not pd.isna(leverage_value) else 1.0,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user