7.9 KiB
Session and Sessions
Sessions allow you to run a strategy at specific times of the day.
Table of Contents
Session
class Session
A session is a time period between two datetime.time objects specified in utc.
Attributes
| Name | Type | Description | Default |
|---|---|---|---|
start |
datetime.time |
The start time of the session. | None |
end |
datetime.time |
The end time of the session. | None |
on_start |
Literal['close_all', 'close_win', 'close_loss', 'custom_start'] |
The action to take when the session starts. Default is None. | None |
on_end |
Literal['close_all', 'close_win', 'close_loss', 'custom_end'] |
The action to take when the session ends. Default is None. | None |
custom_start |
Callable |
A custom function to call when the session starts. Default is None. | None |
custom_end |
Callable |
A custom function to call when the session ends. Default is None. | None |
name |
str |
The name of the session. Default is a combination of start and finish. |
Notes:
The [close_all, close_win, close_loss] will affect or open positions in the account irrespective of whether they were
opened during the session or not or even by a strategy using the session. This is because the session is not aware of the
positions opened by the strategy. This will be handled in a future release.
__init__
def __init__(*,
start: int | time,
end: int | time,
on_start: Literal['close_all', 'close_win', 'close_loss',
'custom_start'] = None,
on_end: Literal['close_all', 'close_win', 'close_loss',
'custom_end'] = None,
custom_start: Callable = None,
custom_end: Callable = None)
Create a session.
Arguments
| Name | Type | Description | Default |
|---|---|---|---|
start |
int | datetime.time |
The start time of the session in UTC. | None |
end |
int | datetime.time |
The end time of the session in UTC. | None |
on_start |
Literal['close_all', 'close_win', 'close_loss', 'custom_start'] |
The action to take when the session starts. Default is None. | None |
on_end |
Literal['close_all', 'close_win', 'close_loss', 'custom_end'] |
The action to take when the session ends. Default is None. | None |
custom_start |
Callable |
A custom function to call when the session starts. Default is None. | None |
custom_end |
Callable |
A custom function to call when the session ends. Default is None. | None |
name |
str |
The name of the session. Default is None. | None |
begin
async def begin()
Call the action specified in on_start or custom_start.
close
async def close()
Call the action specified in on_end or custom_end.
action
async def action(action): pass
Used by begin and close to call the action specified.
Arguments
| Name | Type | Description | Default |
|---|---|---|---|
action |
Literal['close_all', 'close_win', 'close_loss', 'custom_start', 'custom_end'] |
The action to take. | None |
Sessions
class Sessions()
Sessions allow you to run code at specific times of the day. It is a collection of Session objects. Sessions are sorted by start time. The sessions object is an asynchronous context manager.
Attributes:
| Name | Type | Description | Default |
|---|---|---|---|
sessions |
list[Session] |
A list of Session objects. | [] |
current_session |
Session |
The current session. | None |
__init__
def __init__(*sessions)
Create a Sessions object.
Arguments
| Name | Type | Description | Default |
|---|---|---|---|
sessions |
tuple[Session] |
A tuple of Session objects. | None |
find
def find(obj: time) -> Session | None
Find a session that contains a datetime.time object.
Arguments
| Name | Type | Description | Default |
|---|---|---|---|
obj |
datetime.time |
A datetime.time object. | None |
Returns
| Type | Description |
|---|---|
Session |
A Session object or None if not found. |
find_next
def find_next(obj: time) -> Session
Find the next session that contains a datetime.time object.
Arguments
| Name | Type | Description | Default |
|---|---|---|---|
obj |
datetime.time |
A datetime.time object. |
Returns
| Type | Description |
|---|---|
Session |
A Session object. |
check
async def check(): pass
Check if the current session has started and if not, wait until it starts.
delta
def delta(obj: time) -> timedelta: pass
Get the timedelta of a datetime.time object.
Arguments:
| Name | Type | Description | Default |
|---|---|---|---|
obj |
datetime.time |
A datetime.time object. | None |
Returns
| Type | Description |
|---|---|
timedelta |
A timedelta object. |
until
def until()
Get the seconds until the session starts from the current time.
Returns:
| Type | Description |
|---|---|
int |
The seconds until the session starts. |