Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/ invest-robot-contest_investRobot-master/docs/strategy.md
5925 views

Модуль strategy

Содержит классы стратегии торгового робота.

TradeStrategyBase

Интерфейс стратегии торгового робота. Содержит в себе логику обработки обновлений биржевых данных. Пользователь может использовать одну из представленных реализаций (RandomStrategy, MAEStrategy) или реализовать собственную.

Торговый робот использует bidirectional-stream Тинькофф Инвестиций для получения информации о событиях. Для настройки событий, на которые стратегии необходима подписка следует использовать параметры стратегии candle_subscription_interval, order_book_subscription_depth, trades_subscription

Подробнее см. примеры использования.

Представленные реализации

RandomStrategy - Случайная стратегия

С каждым обновлением данных принимает решение о покупке / продаже рандомного числа лотов исходя из параметров, имеющихся лотов и баланса. Не имеет потенциала, может использоваться для тестирования и в качестве примера стратегии.

MAEStrategy - Стратегия скользящего среднего

Данная стратегия основана на индикаторе скользящей средней. Раз в минуту (при получении новой минутной свечи) рассчитывает два скользящих средних, длины которого можно задать в конструкторе. При изменении знака их разницы (пересечении линии скользящих средних) считает, что текущий тренд цены изменился и отдает распоряжение на покупку / продажу, если "короткое" среднее выше или ниже "длинного" соответственно. Покупает и продает каждый раз фиксированное число, изначально заданное в конструкторе, при условии, что это возможно.

Свойства

FieldTypeDescription
candle_subscription_intervaltinkoff.invest.SubscriptionIntervalПериод свечей для подписки
order_book_subscription_depthOptional[int]Глубина стакана для подписки
trades_subscriptionboolПодписка на обезличенные операции
strategy_idstrid стратегии (используется логгером)

Методы

load_instrument_info

Запись информации об инструменте. Метод вызывается классом TradeRobotFabric.

Входные данные:

FieldTypeDescription
instrument_infotinkoff.invest.InstrumentИнформация об инструменте

load_candles

Загрузка исторических свечей. Вызывается роботом при начале торгов. Может быть переопределена пользователем для настройки параметров стратегии.

Входные данные:

FieldTypeDescription
candleslist[tinkoff.invest.HistoricCandle]Список исторических свечей

decide

Данный метод вызывается при получении новых биржевых данных. Возвращает объект, содержащий поручения торговому роботу.

Входные данные:

FieldTypeDescription
market_datatinkoff.invest.MarketDataResponseБиржевые данные
paramsTradeStrategyParamsТекущие параметры робота

Выходные данные: StrategyDecision - решения о действиях торгового робота.

decide_by_candle

Данный метод аналогичен методу decide, однако у него входные данные содержат только обновления свечей. Данный метод необходим для бэктеста стратегии, так как получение исторических данных по стаканам и обезличенным операциям не предоставляется возможным.

Входные данные:

FieldTypeDescription
candletinkoff.invest.MarketDataResponseСвеча
paramsTradeStrategyParamsТекущие параметры робота

Выходные данные: StrategyDecision - решения о действиях торгового робота.

Структуры данных

TradeStrategyParams

Структура данных, передаваемая на вход стратегии при обновлении данных.

FieldTypeDescription
instrument_balanceintКоличество лотов инструмента на счету
currency_balancefloatБаланс счета
pending_orderslist[tinkoff.invest.OrderState]Список нереализованных биржевых заявок

RobotTradeOrder

Структура данных, содержащая получение торговому роботу на выставление рыночной заявки.

FieldTypeDescription
quantityintКоличество лотов
directiontinkoff.invest.OrderDirectionНаправление заявки (покупка / продажа)
priveOptional[Money]Цена заявки (при отсутствии - рыночная цена)
order_typetinkoff.invest.OrderTypeТип заявки

StrategyDecision

Структура данных, возвращаемая стратегией и содержащая решение о действиях торгового робота.

FieldTypeDescription
robot_trade_orderOptional[RobotTradeOrder]Поручение роботу
cancel_orderslist[OrderState]Список биржевых заявок, которые необходимо отменить