Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/ invest-robot-contest_tinkoffSDK-master/my_signal_executor_base.py
5925 views
1
from tinkoff.invest import OrderDirection, OrderType
2
from tinkoff.invest.services import Services
3
from tinkoff.invest.strategies.base.signal import (
4
CloseLongMarketOrder,
5
CloseShortMarketOrder,
6
OpenLongMarketOrder,
7
OpenShortMarketOrder,
8
)
9
from tinkoff.invest.strategies.base.signal_executor_interface import ISignalExecutor
10
from tinkoff.invest.strategies.base.strategy_settings_base import StrategySettings
11
import uuid
12
13
14
class SignalExecutor(ISignalExecutor):
15
def __init__(
16
self,
17
services: Services,
18
settings: StrategySettings,
19
):
20
self._services = services
21
self._settings = settings
22
23
def execute_open_long_market_order(self, signal: OpenLongMarketOrder) -> None:
24
self._services.orders.post_order(
25
figi=self._settings.share_id,
26
quantity=signal.lots,
27
#Сгенирируем ордер id для сигнала, без него запрос может выдать ошибку
28
order_id = str(uuid.uuid4()),
29
direction=OrderDirection.ORDER_DIRECTION_BUY,
30
account_id=self._settings.account_id,
31
order_type=OrderType.ORDER_TYPE_MARKET,
32
)
33
34
def execute_close_long_market_order(self, signal: CloseLongMarketOrder) -> None:
35
self._services.orders.post_order(
36
figi=self._settings.share_id,
37
quantity=signal.lots,
38
#Сгенирируем ордер id для сигнала, без него запрос может выдать ошибку
39
order_id = str(uuid.uuid4()),
40
direction=OrderDirection.ORDER_DIRECTION_SELL,
41
account_id=self._settings.account_id,
42
order_type=OrderType.ORDER_TYPE_MARKET,
43
)
44
45
def execute_open_short_market_order(self, signal: OpenShortMarketOrder) -> None:
46
self._services.orders.post_order(
47
figi=self._settings.share_id,
48
quantity=signal.lots,
49
#Сгенирируем ордер id для сигнала, без него запрос может выдать ошибку
50
order_id = str(uuid.uuid4()),
51
direction=OrderDirection.ORDER_DIRECTION_SELL,
52
account_id=self._settings.account_id,
53
order_type=OrderType.ORDER_TYPE_MARKET,
54
)
55
56
def execute_close_short_market_order(self, signal: CloseShortMarketOrder) -> None:
57
self._services.orders.post_order(
58
figi=self._settings.share_id,
59
quantity=signal.lots,
60
#Сгенирируем ордер id для сигнала, без него запрос может выдать ошибку
61
order_id = str(uuid.uuid4()),
62
direction=OrderDirection.ORDER_DIRECTION_BUY,
63
account_id=self._settings.account_id,
64
order_type=OrderType.ORDER_TYPE_MARKET,
65
)
66
67