Files
Ichinga Samuel 4f0150a552 v3.23
2024-10-29 13:04:45 +01:00

78 lines
2.4 KiB
Markdown

## <a id="executor"></a> Executor
```python
class Executor
```
Executor class for running multiple strategies on multiple symbols concurrently.
### Attributes:
| Name | Type | Description | Default |
|----------------|---------------------|------------------------------------------------|----|
| **executor** |**ThreadPoolExecutor** | The default thread executor. |None|
| **workers** |**list** | List of strategies. |[]|
| **coroutines** |**dict** | Dictionary of coroutines and keyword arguments | {} |
| **functions** |**dict** | Dictionary of functions and keyword arguments | {} |
### add\_workers
```python
def add_workers(strategies: Sequence[type(Strategy)])
```
Add multiple strategies at once
#### Arguments:
|Name|Type|Description|
|---|---|---|
|**strategies**|**Sequence[type(Strategy)]**|A sequence of strategies.|
### remove\_workers
```python
def remove_workers(*symbols: Sequence[Symbol])
```
Removes any worker running on a symbol not successfully initialized.
#### Arguments:
|Name|Type|Description|
|---|---|---|
|**symbols**|**Sequence[Symbol]**|A sequence of symbols.|
### add\_worker
```python
def add_worker(strategy: type(Strategy))
```
Add a strategy instance to the list of workers
#### Arguments:
|Name|Type|Description|
|---|---|---|
|**strategy**|**type(Strategy)**|A strategy instance.|
### run
```python
@staticmethod
def run(func: Callable|Coroutine, kwargs: dict)
```
Wrap the input coroutine function with 'asyncio.run' so that it can be executed in a threadpool executor.
#### Arguments:
| Name | Type |Description|
|------------|------------|---|
| **func** | **Callable |Coroutine**|A coroutine function.|
| **kwargs** | **Dict** |Keyword arguments to pass to the function.|
### trade
```python
def trade(strategy: Strategy)
```
Wrap the input coroutine function trade method of each strategy with 'asyncio.run'.
#### Arguments:
|Name|Type|Description|
|---|---|---|
|**strategy**|**Strategy**|A strategy instance.|
### execute
```python
async def execute(workers: int = 0)
```
Run the strategies with a threadpool executor.
#### Arguments:
|Name|Type|Description|
|---|---|---|
|**workers**|**int**|Number of workers to use in executor pool. Defaults to zero which uses all workers.|
#### Notes:
No matter the number specified, the executor will always use a minimum of 5 workers.