fix: correct parameter naming
This commit is contained in:
@@ -72,7 +72,7 @@ def protections(self):
|
|||||||
`MaxDrawdown` calculates the maximum relative drawdown using the account's equity curve within the `lookback_period` in minutes (or in candles when using `lookback_period_candles`).
|
`MaxDrawdown` calculates the maximum relative drawdown using the account's equity curve within the `lookback_period` in minutes (or in candles when using `lookback_period_candles`).
|
||||||
It evaluates the portfolio's peak-to-trough declines by considering the starting balance and the cumulative profit of all trades within the window. If the observed drawdown exceeds `max_allowed_drawdown`, trading will stop for `stop_duration` after the last trade - assuming that the bot needs some time to let markets recover.
|
It evaluates the portfolio's peak-to-trough declines by considering the starting balance and the cumulative profit of all trades within the window. If the observed drawdown exceeds `max_allowed_drawdown`, trading will stop for `stop_duration` after the last trade - assuming that the bot needs some time to let markets recover.
|
||||||
|
|
||||||
The default calculation method is the sum-of-profit-ratios method (`method: "ratios"`) for backward compatibility. To use the standard peak-to-trough equity drawdown (recommended), set `method: "equity"`.
|
The default calculation method is the sum-of-profit-ratios method (`calculation_mode: "ratios"`) for backward compatibility. To use the standard peak-to-trough equity drawdown (recommended), set `calculation_mode: "equity"`.
|
||||||
|
|
||||||
The below sample stops trading for 12 candles if max-drawdown is > 20% considering all pairs - with a minimum of `trade_limit` trades - within the last 48 candles. If desired, `lookback_period` and/or `stop_duration` can be used.
|
The below sample stops trading for 12 candles if max-drawdown is > 20% considering all pairs - with a minimum of `trade_limit` trades - within the last 48 candles. If desired, `lookback_period` and/or `stop_duration` can be used.
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ class MaxDrawdown(IProtection):
|
|||||||
|
|
||||||
self._trade_limit = protection_config.get("trade_limit", 1)
|
self._trade_limit = protection_config.get("trade_limit", 1)
|
||||||
self._max_allowed_drawdown = protection_config.get("max_allowed_drawdown", 0.0)
|
self._max_allowed_drawdown = protection_config.get("max_allowed_drawdown", 0.0)
|
||||||
|
self._calculation_mode = protection_config.get("calculation_mode", "ratios")
|
||||||
# TODO: Implement checks to limit max_drawdown to sensible values
|
# TODO: Implement checks to limit max_drawdown to sensible values
|
||||||
|
|
||||||
def short_desc(self) -> str:
|
def short_desc(self) -> str:
|
||||||
@@ -61,11 +62,8 @@ class MaxDrawdown(IProtection):
|
|||||||
if trade.close_date_utc <= look_back_until
|
if trade.close_date_utc <= look_back_until
|
||||||
)
|
)
|
||||||
|
|
||||||
# Get calculation mode
|
|
||||||
method = self._protection_config.get("method", "ratios")
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if method == "equity":
|
if self._calculation_mode == "equity":
|
||||||
# Standard equity-based drawdown
|
# Standard equity-based drawdown
|
||||||
trades_df = pd.DataFrame(
|
trades_df = pd.DataFrame(
|
||||||
[
|
[
|
||||||
|
|||||||
Reference in New Issue
Block a user