This commit is contained in:
Ichinga Samuel
2024-11-15 21:13:19 +01:00
parent 2a55f49f78
commit 2e7aa73aec
19 changed files with 1400 additions and 1415 deletions
+93 -116
View File
@@ -1,185 +1,162 @@
# Table of Contents
# Get Data
* [get\_data](#get_data)
* [Cursor](#get_data.Cursor)
* [BackTestData](#get_data.BackTestData)
* [set\_attrs](#get_data.BackTestData.set_attrs)
* [fields](#get_data.BackTestData.fields)
* [GetData](#get_data.GetData)
* [\_\_init\_\_](#get_data.GetData.__init__)
* [pickle\_data](#get_data.GetData.pickle_data)
* [load\_data](#get_data.GetData.load_data)
* [save\_data](#get_data.GetData.save_data)
* [get\_data](#get_data.GetData.get_data)
## Table of Contents
<a id="get_data"></a>
- [Cursor](#get_data.cursor)
- [BackTestData](#get_data.back_test_data)
- [set_attrs](#get_data.back_test_data.set_attrs)
- [fields](#get_data.back_test_data.fields)
- [GetData](#get_data.getdata)
- [\__init\__](#get_data.get_data.__init__)
- [pickle_data](#get_data.pickle_data)
- [load_data](#get_data.load_data)
- [save_data](#get_data.save_data)
- [get_data](#get_data.get_data)
# get\_data
<a id="get_data.Cursor"></a>
## Cursor Objects
<a id="get_data.cursor"></a>
### Cursor
```python
class Cursor(NamedTuple)
```
A cursor to iterate over the data. Marks the current position in time.
A cursor to iterate over the data. Marks the current position.
<a id="get_data.BackTestData"></a>
## BackTestData Objects
<a id="get_data.back_test_data"></a>
### BackTestData
```python
@dataclass
class BackTestData()
class BackTestData
```
The data class to store the backtesting data.
**Attributes**:
#### Attributes:
| Name | Type | Description |
|------------------|----------|------------------------------------------------|
| `name` | `str` | The name of the backtest data |
| `terminal` | `dict` | The terminal information |
| `version` | `tuple` | The version of the terminal |
| `account` | `dict` | The account information |
| `symbols` | `dict` | The symbols information |
| `ticks` | `dict` | The ticks data |
| `rates` | `dict` | The rates data |
| `span` | `range` | The range of the data |
| `range` | `range` | The range of the data |
| `orders` | `dict` | The orders data |
| `deals` | `dict` | The deals data |
| `positions` | `dict` | The positions data |
| `open_positions` | `set` | The open positions |
| `cursor` | `Cursor` | The cursor to iterate over the data |
| `margins` | `dict` | The margins data |
| `fully_loaded` | `bool` | A flag to indicate if the data is fully loaded |
- `name` _str_ - The name of the backtest data.
- `terminal` _dict_ - The terminal information.
- `version` _tuple_ - The version of the terminal.
- `account` _dict_ - The account information.
- `symbols` _dict_ - The symbols information.
- `ticks` _dict_ - The ticks data.
- `rates` _dict_ - The rates data.
- `span` _range_ - The range of the data.
- `range` _range_ - The range of the data.
- `orders` _dict_ - The orders data.
- `deals` _dict_ - The deals data.
- `positions` _dict_ - The positions data.
- `open_positions` _set_ - The open positions.
- `cursor` _Cursor_ - The cursor to iterate over the data.
- `margins` _dict_ - The margins data.
- `fully_loaded` _bool_ - A flag to indicate if the data is fully loaded
<a id="get_data.BackTestData.set_attrs"></a>
#### set\_attrs
<a id="get_data.set_attrs"></a>
#### set_attrs
```python
def set_attrs(**kwargs)
```
Set the attributes of the class on the instance.
<a id="get_data.BackTestData.fields"></a>
<a id="get_data.fields"></a>
#### fields
```python
@property
def fields()
```
A list of the fields of the class.
<a id="get_data.GetData"></a>
## GetData Objects
<a id="get_data.getdata"></a>
### GetData
```python
class GetData()
class GetData
```
A class to get the backtesting data from the MetaTrader5 terminal.
**Attributes**:
#### Attributes:
| Name | Type | Description |
|--------------|-----------------------|---------------------------------------|
| `start` | `datetime` | The start date of the data |
| `end` | `datetime` | The end date of the data |
| `symbols` | `Iterable[str]` | The symbols to get the data for |
| `timeframes` | `Iterable[TimeFrame]` | The timeframes to get the data for |
| `name` | `str` | The name of the backtest data |
| `range` | `range` | The range of the data |
| `span` | `range` | The span of the data |
| `data` | `BackTestData` | The backtesting data |
| `mt5` | `MetaTrader` | The MetaTrader5 instance |
| `task_queue` | `TaskQueue` | The task queue to handle the requests |
- `start` _datetime_ - The start date of the data.
- `end` _datetime_ - The end date of the data.
- `symbols` _Sequence[str]_ - The symbols to get the data for.
- `timeframes` _Sequence[TimeFrame]_ - The timeframes to get the data for.
- `name` _str_ - The name of the backtest data.
- `range` _range_ - The range of the data.
- `span` _range_ - The span of the data.
- `data` _BackTestData_ - The backtesting data.
- `mt5` _MetaTrader_ - The MetaTrader5 instance.
- `task_queue` _TaskQueue_ - The task queue to handle the requests.
<a id="get_data.GetData.__init__"></a>
#### \_\_init\_\_
<a id="get_data.__init__"></a>
#### \__init\__
```python
def __init__(*,
start: datetime,
end: datetime,
symbols: Sequence[str],
timeframes: Sequence[TimeFrame],
name: str = "")
def __init__(*, start: datetime, end: datetime, symbols: Sequence[str],
timeframes: Sequence[TimeFrame], name: str = "")
```
Get the backtesting data from the MetaTrader5 terminal.
**Arguments**:
#### Parameters:
| Name | Type | Description |
|--------------|-----------------------|------------------------------------------------|
| `start` | `datetime` | The start date of the data |
| `end` | `datetime` | The end date of the data |
| `symbols` | `Sequence[str]` | The symbols to get the data for |
| `timeframes` | `Sequence[TimeFrame]` | The timeframes to get the data for |
| `name` | `str` | The name of the backtest data |
- `start` _datetime_ - The start date of the data.
- `end` _datetime_ - The end date of the data.
- `symbols` _Sequence[str]_ - The symbols to get the data for.
- `timeframes` _Sequence[TimeFrame]_ - The timeframes to get the data for.
- `name` _str_ - The name of the backtest data.
<a id="get_data.GetData.pickle_data"></a>
#### pickle\_data
<a id="get_data.pickle_data"></a>
#### pickle_data
```python
@classmethod
def pickle_data(cls, *, data: BackTestData, name: str | Path)
```
Pickle the data to a file.
**Arguments**:
#### Parameters:
| Name | Type | Description |
|--------|-------------------------|----------------------|
| `data` | `BackTestData` | The data to pickle |
| `name` | `str \| Path` | The name of the file |
- `data` _BackTestData_ - The data to pickle.
- `name` _str | Path_ - The name of the file to pickle the data to.
<a id="get_data.GetData.load_data"></a>
#### load\_data
<a id="get_data.load_data"></a>
#### load_data
```python
@classmethod
def load_data(cls, *, name: str | Path) -> BackTestData
```
Load the data from a file.
**Arguments**:
#### Parameters:
| Name | Type | Description |
|--------|-------------------------|----------------------|
| `name` | `str \| Path` | The name of the file |
- `name` _str | Path_ - The name of the file to load the data from.
<a id="get_data.GetData.save_data"></a>
#### save\_data
<a id="get_data.save_data"></a>
#### save_data
```python
def save_data(*, name: str | Path = "")
```
Save the data to a file.
**Arguments**:
#### Parameters:
| Name | Type | Description |
|--------|-------------------------|----------------------|
| `name` | `str \| Path` | The name of the file |
- `name` _str | Path_ - The name of the file to save the data to. If not provided, the name of the data is used.
<a id="get_data.GetData.get_data"></a>
#### get\_data
<a id="get_data.get_data"></a>
#### get_data
```python
async def get_data(workers: int = None)
```
Use the task queue to get the data from the MetaTrader5 terminal.
**Arguments**:
- `workers` _int_ - The number of workers to use in the task queue. If not provided, the default number of workers
is used.
#### Parameters:
| Name | Type | Description |
|-----------|-------|------------------------------------------------|
| `workers` | `int` | The number of workers to use in the task queue |