Path: blob/master/ invest-robot-contest_tinkoffSDK-master/my_signal_executor_base.py
5925 views
from tinkoff.invest import OrderDirection, OrderType1from tinkoff.invest.services import Services2from tinkoff.invest.strategies.base.signal import (3CloseLongMarketOrder,4CloseShortMarketOrder,5OpenLongMarketOrder,6OpenShortMarketOrder,7)8from tinkoff.invest.strategies.base.signal_executor_interface import ISignalExecutor9from tinkoff.invest.strategies.base.strategy_settings_base import StrategySettings10import uuid111213class SignalExecutor(ISignalExecutor):14def __init__(15self,16services: Services,17settings: StrategySettings,18):19self._services = services20self._settings = settings2122def execute_open_long_market_order(self, signal: OpenLongMarketOrder) -> None:23self._services.orders.post_order(24figi=self._settings.share_id,25quantity=signal.lots,26#Сгенирируем ордер id для сигнала, без него запрос может выдать ошибку27order_id = str(uuid.uuid4()),28direction=OrderDirection.ORDER_DIRECTION_BUY,29account_id=self._settings.account_id,30order_type=OrderType.ORDER_TYPE_MARKET,31)3233def execute_close_long_market_order(self, signal: CloseLongMarketOrder) -> None:34self._services.orders.post_order(35figi=self._settings.share_id,36quantity=signal.lots,37#Сгенирируем ордер id для сигнала, без него запрос может выдать ошибку38order_id = str(uuid.uuid4()),39direction=OrderDirection.ORDER_DIRECTION_SELL,40account_id=self._settings.account_id,41order_type=OrderType.ORDER_TYPE_MARKET,42)4344def execute_open_short_market_order(self, signal: OpenShortMarketOrder) -> None:45self._services.orders.post_order(46figi=self._settings.share_id,47quantity=signal.lots,48#Сгенирируем ордер id для сигнала, без него запрос может выдать ошибку49order_id = str(uuid.uuid4()),50direction=OrderDirection.ORDER_DIRECTION_SELL,51account_id=self._settings.account_id,52order_type=OrderType.ORDER_TYPE_MARKET,53)5455def execute_close_short_market_order(self, signal: CloseShortMarketOrder) -> None:56self._services.orders.post_order(57figi=self._settings.share_id,58quantity=signal.lots,59#Сгенирируем ордер id для сигнала, без него запрос может выдать ошибку60order_id = str(uuid.uuid4()),61direction=OrderDirection.ORDER_DIRECTION_BUY,62account_id=self._settings.account_id,63order_type=OrderType.ORDER_TYPE_MARKET,64)656667