|
|
@@ -84,11 +84,20 @@ def run_backtest(candles: list[Candle], leverage: int) -> BacktestResult:
|
|
|
|
|
|
trade_count = len(trades)
|
|
|
win_rate = wins / trade_count if trade_count else 0.0
|
|
|
+ ending_equity = equity
|
|
|
+ if position is not None:
|
|
|
+ entry_price = float(position["entry_price"])
|
|
|
+ margin_used = float(position["margin_used"])
|
|
|
+ if position["direction"] == "long":
|
|
|
+ price_return = (candles[-1].close - entry_price) / entry_price
|
|
|
+ else:
|
|
|
+ price_return = (entry_price - candles[-1].close) / entry_price
|
|
|
+ ending_equity = margin_used + (margin_used * leverage * price_return)
|
|
|
|
|
|
return BacktestResult(
|
|
|
initial_equity=initial_equity,
|
|
|
- ending_equity=equity,
|
|
|
- total_return=(equity - initial_equity) / initial_equity,
|
|
|
+ ending_equity=ending_equity,
|
|
|
+ total_return=(ending_equity - initial_equity) / initial_equity,
|
|
|
max_drawdown=max_drawdown,
|
|
|
win_rate=win_rate,
|
|
|
trade_count=trade_count,
|