Fix minor "gotchas"

This commit is contained in:
Matthias 2021-12-26 15:29:10 +01:00
parent aa54592ec7
commit d3f3c49b13
3 changed files with 10 additions and 8 deletions

View File

@ -238,7 +238,7 @@ For performance reasons, it's disabled by default and freqtrade will show a warn
The strategy is expected to return a stake_amount if and when an additional buy order should be made (position is increased).
If there is not enough funds in the wallet then nothing will happen.
Additional orders also mean additional fees and those orders don't count towards `max_open_trades`.
Using unlimited stake amount with DCA orders requires you to also implement `custom_stake_amount` callback to avoid allocating all funcds to initial order.
Using unlimited stake amount with DCA orders requires you to also implement `custom_stake_amount` callback to avoid allocating all funds to initial order.
!!! Warning
Stoploss is still calculated from the initial opening price, not averaged price.
@ -305,8 +305,8 @@ class DigDeeperStrategy(IStrategy):
# Allow up to 3 additional increasingly larger buys (4 in total)
# Initial buy is 1x
# If that falls to -5% profit, we buy 1.25x more, average profit should increase to roughly -2.2%
# If that falles down to -5% again, we buy 1.5x more
# If that falles once again down to -5%, we buy 1.75x more
# If that falls down to -5% again, we buy 1.5x more
# If that falls once again down to -5%, we buy 1.75x more
# Total stake for this trade would be 1 + 1.25 + 1.5 + 1.75 = 5.5x of the initial allowed stake.
# That is why max_dca_multiplier is 5.5
# Hope you have a deep wallet!

View File

@ -7,7 +7,7 @@ import traceback
from datetime import datetime, timezone
from math import isclose
from threading import Lock
from typing import Any, Dict, List, Optional
from typing import Any, Dict, List, Optional, Tuple
import arrow
@ -650,7 +650,9 @@ class FreqtradeBot(LoggingMixin):
logger.exception(f"Could not cancel stoploss order {trade.stoploss_order_id}")
return trade
def get_valid_enter_price_and_stake(self, pair, price, stake_amount, trade):
def get_valid_enter_price_and_stake(
self, pair: str, price: Optional[float], stake_amount: float,
trade: Optional[Trade]) -> Tuple[float, float]:
if price:
enter_limit_requested = price
else:

View File

@ -4432,11 +4432,11 @@ def test_position_adjust(mocker, default_conf_usdt, fee) -> None:
assert order
assert order.order_id == '650'
def make_sure_its_651(*apos, **kwargs):
def make_sure_its_651(*args, **kwargs):
if apos[0] == '650':
if args[0] == '650':
return closed_successful_buy_order
if apos[0] == '651':
if args[0] == '651':
return open_dca_order_1
return None