Add current_time to check_timeout functions for convenience
This commit is contained in:
parent
7bef9a9b3e
commit
821a9d9cdc
@ -413,7 +413,7 @@ It applies a tight timeout for higher priced assets, while allowing more time to
|
|||||||
The function must return either `True` (cancel order) or `False` (keep order alive).
|
The function must return either `True` (cancel order) or `False` (keep order alive).
|
||||||
|
|
||||||
``` python
|
``` python
|
||||||
from datetime import datetime, timedelta, timezone
|
from datetime import datetime, timedelta
|
||||||
from freqtrade.persistence import Trade
|
from freqtrade.persistence import Trade
|
||||||
|
|
||||||
class AwesomeStrategy(IStrategy):
|
class AwesomeStrategy(IStrategy):
|
||||||
@ -426,22 +426,24 @@ class AwesomeStrategy(IStrategy):
|
|||||||
'sell': 60 * 25
|
'sell': 60 * 25
|
||||||
}
|
}
|
||||||
|
|
||||||
def check_buy_timeout(self, pair: str, trade: 'Trade', order: dict, **kwargs) -> bool:
|
def check_buy_timeout(self, pair: str, trade: 'Trade', order: dict,
|
||||||
if trade.open_rate > 100 and trade.open_date_utc < datetime.now(timezone.utc) - timedelta(minutes=5):
|
current_time: datetime, **kwargs) -> bool:
|
||||||
|
if trade.open_rate > 100 and trade.open_date_utc < current_time - timedelta(minutes=5):
|
||||||
return True
|
return True
|
||||||
elif trade.open_rate > 10 and trade.open_date_utc < datetime.now(timezone.utc) - timedelta(minutes=3):
|
elif trade.open_rate > 10 and trade.open_date_utc < current_time - timedelta(minutes=3):
|
||||||
return True
|
return True
|
||||||
elif trade.open_rate < 1 and trade.open_date_utc < datetime.now(timezone.utc) - timedelta(hours=24):
|
elif trade.open_rate < 1 and trade.open_date_utc < current_time - timedelta(hours=24):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def check_sell_timeout(self, pair: str, trade: 'Trade', order: dict, **kwargs) -> bool:
|
def check_sell_timeout(self, pair: str, trade: Trade, order: dict,
|
||||||
if trade.open_rate > 100 and trade.open_date_utc < datetime.now(timezone.utc) - timedelta(minutes=5):
|
current_time: datetime, **kwargs) -> bool:
|
||||||
|
if trade.open_rate > 100 and trade.open_date_utc < current_time - timedelta(minutes=5):
|
||||||
return True
|
return True
|
||||||
elif trade.open_rate > 10 and trade.open_date_utc < datetime.now(timezone.utc) - timedelta(minutes=3):
|
elif trade.open_rate > 10 and trade.open_date_utc < current_time - timedelta(minutes=3):
|
||||||
return True
|
return True
|
||||||
elif trade.open_rate < 1 and trade.open_date_utc < datetime.now(timezone.utc) - timedelta(hours=24):
|
elif trade.open_rate < 1 and trade.open_date_utc < current_time - timedelta(hours=24):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
```
|
```
|
||||||
|
@ -188,7 +188,8 @@ class IStrategy(ABC, HyperStrategyMixin):
|
|||||||
"""
|
"""
|
||||||
return dataframe
|
return dataframe
|
||||||
|
|
||||||
def check_buy_timeout(self, pair: str, trade: Trade, order: dict, **kwargs) -> bool:
|
def check_buy_timeout(self, pair: str, trade: Trade, order: dict,
|
||||||
|
current_time: datetime, **kwargs) -> bool:
|
||||||
"""
|
"""
|
||||||
Check buy timeout function callback.
|
Check buy timeout function callback.
|
||||||
This method can be used to override the buy-timeout.
|
This method can be used to override the buy-timeout.
|
||||||
@ -201,12 +202,14 @@ class IStrategy(ABC, HyperStrategyMixin):
|
|||||||
:param pair: Pair the trade is for
|
:param pair: Pair the trade is for
|
||||||
:param trade: trade object.
|
:param trade: trade object.
|
||||||
:param order: Order dictionary as returned from CCXT.
|
:param order: Order dictionary as returned from CCXT.
|
||||||
|
:param current_time: datetime object, containing the current datetime
|
||||||
:param **kwargs: Ensure to keep this here so updates to this won't break your strategy.
|
:param **kwargs: Ensure to keep this here so updates to this won't break your strategy.
|
||||||
:return bool: When True is returned, then the buy-order is cancelled.
|
:return bool: When True is returned, then the buy-order is cancelled.
|
||||||
"""
|
"""
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def check_sell_timeout(self, pair: str, trade: Trade, order: dict, **kwargs) -> bool:
|
def check_sell_timeout(self, pair: str, trade: Trade, order: dict,
|
||||||
|
current_time: datetime, **kwargs) -> bool:
|
||||||
"""
|
"""
|
||||||
Check sell timeout function callback.
|
Check sell timeout function callback.
|
||||||
This method can be used to override the sell-timeout.
|
This method can be used to override the sell-timeout.
|
||||||
@ -219,6 +222,7 @@ class IStrategy(ABC, HyperStrategyMixin):
|
|||||||
:param pair: Pair the trade is for
|
:param pair: Pair the trade is for
|
||||||
:param trade: trade object.
|
:param trade: trade object.
|
||||||
:param order: Order dictionary as returned from CCXT.
|
:param order: Order dictionary as returned from CCXT.
|
||||||
|
:param current_time: datetime object, containing the current datetime
|
||||||
:param **kwargs: Ensure to keep this here so updates to this won't break your strategy.
|
:param **kwargs: Ensure to keep this here so updates to this won't break your strategy.
|
||||||
:return bool: When True is returned, then the sell-order is cancelled.
|
:return bool: When True is returned, then the sell-order is cancelled.
|
||||||
"""
|
"""
|
||||||
@ -872,7 +876,8 @@ class IStrategy(ABC, HyperStrategyMixin):
|
|||||||
|
|
||||||
return strategy_safe_wrapper(getattr(self, time_method),
|
return strategy_safe_wrapper(getattr(self, time_method),
|
||||||
default_retval=False)(
|
default_retval=False)(
|
||||||
pair=trade.pair, trade=trade, order=order)
|
pair=trade.pair, trade=trade, order=order,
|
||||||
|
current_time=current_time)
|
||||||
|
|
||||||
def advise_all_indicators(self, data: Dict[str, DataFrame]) -> Dict[str, DataFrame]:
|
def advise_all_indicators(self, data: Dict[str, DataFrame]) -> Dict[str, DataFrame]:
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user