isrising,isfalling

This commit is contained in:
David Brazda
2024-10-17 12:20:57 +02:00
parent 59d526b3e5
commit dab81f0ac1
4 changed files with 41 additions and 3 deletions

View File

@ -39,4 +39,6 @@ forced_exits_window = create_mask_from_window(exits, forced_exit_start, forced_e
exits = exits | forced_exits_window exits = exits | forced_exits_window
exits.tail(20) exits.tail(20)
``` ```
`isrising(series,n)`,`isfalling(series, n)` - returns mask where the condition is satisfied of consecutive rising or falling elements

View File

@ -2,7 +2,7 @@ from setuptools import setup, find_packages
setup( setup(
name='ttools', name='ttools',
version='0.1.8', version='0.1.9',
packages=find_packages(), packages=find_packages(),
install_requires=[ install_requires=[
'vectorbtpro', 'vectorbtpro',

View File

@ -1 +1 @@
from .vbtutils import AnchoredIndicator, create_mask_from_window from .vbtutils import AnchoredIndicator, create_mask_from_window, isrising, isfalling

View File

@ -4,6 +4,42 @@ import pandas_market_calendars as mcal
from typing import Any from typing import Any
import datetime import datetime
def isrising(series: pd.Series, n: int) -> pd.Series:
"""
Checks if a series is rising over a given window size.
Parameters
----------
series : pd.Series
Input series
n : int
Window size
Returns
-------
pd.Series
Boolean mask indicating when the series is falling
"""
return series.rolling(n).apply(lambda x: (x == sorted(x, reverse=True)).all(), raw=False).fillna(False).astype(bool)
def isfalling(series: pd.Series, n: int) -> pd.Series:
"""
Checks if a series is falling over a given window size.
Parameters
----------
series : pd.Series
Input series
n : int
Window size
Returns
-------
pd.Series
Boolean mask indicating when the series is falling
"""
return series.rolling(n).apply(lambda x: (x == sorted(x, reverse=True)).all(), raw=False).fillna(False).astype(bool)
def create_mask_from_window(series: Any, entry_window_opens:int, entry_window_closes:int, use_cal: bool = True): def create_mask_from_window(series: Any, entry_window_opens:int, entry_window_closes:int, use_cal: bool = True):
""" """
Accepts series and window range (number of minutes from market start) and returns boolean mask denoting Accepts series and window range (number of minutes from market start) and returns boolean mask denoting