Example #1
0
class Order(BaseOrder):
    """Базовый класс ордера"""
    ROOT_NAME = 'order'
    # Биржевой номер заявки
    origin_order_no = IntegerField('origin_orderno')
    # Объем заявки в валюте инструмента
    value = FloatField('value')
    # НКД
    accrued_int = FloatField('accruedint')
    # Код поставки (значение биржи, определяющее правила расчетов)
    settle_code = StringField('settlecode')
    # Неудовлетворенный остаток объема заявки в лотах (контрактах)
    balance = IntegerField('balance')
    # Скрытое количество в лотах
    hidden = IntegerField('hidden')
    # Доходность
    yld = IntegerField('yield')
    # Условие
    condition = StringField('condition')
    # Цена для условной заявки, либо обеспеченность в процентах
    condition_value = FloatField('conditionvalue')
    # С какого момента времени действительна
    valid_after = DateTimeField('valid_after', TIME_FORMAT)
    # Максимальная комиссия по сделкам заявки
    max_commission = FloatField('maxcomission')
Example #2
0
class SecInfoUpdate(Entity):
    """
    Обновление информации по инструменту.
    """
    ROOT_NAME = 'sec_info_upd'
    secid = IntegerField('secid')
    # Код инструмента
    seccode = StringField('seccode')
    # Идентификатор рынка
    market = IntegerField('market')
    # Минимальная цена (только FORTS)
    minprice = FloatField('minprice')
    # Максимальная цена (только FORTS)
    maxprice = FloatField('maxprice')
    # ГО покупателя (фьючерсы FORTS, руб.)
    buy_deposit = FloatField('buy_deposit')
    # ГО продавца (фьючерсы FORTS, руб.)
    sell_deposit = FloatField('sell_deposit')
    # ГО покрытой позиции (опционы FORTS, руб.)
    bgo_c = FloatField('bgo_c')
    # ГО непокрытой позиции (опционы FORTS, руб.)
    bgo_nc = FloatField('bgo_nc')
    # Базовое ГО под покупку маржируемого опциона
    bgo_buy = FloatField('bgo_buy')
    # Стоимость пункта цены
    point_cost = FloatField('point_cost')
Example #3
0
class Security(Entity):
    """
    Ценная бумага.
    """
    ROOT_NAME = 'security'
    id = secid = IntegerField('@secid')
    active = SimpleBooleanField('@active', 'true', 'false')
    # Код инструмента
    seccode = StringField('seccode')
    # Тип бумаги
    sectype = StringField('sectype')
    # Идентификатор режима торгов по умолчанию
    board = StringField('board')
    # Идентификатор рынка
    market = IntegerField('market')
    # Наименование бумаги
    name = StringField('shortname')
    # Количество десятичных знаков в цене
    decimals = IntegerField('decimals')
    # Шаг цены
    minstep = FloatField('minstep')
    # Размер лота
    lotsize = IntegerField('lotsize')
    # Стоимость пункта цены
    point_cost = FloatField('point_cost')
    # Имя таймзоны инструмента
    timezone = StringField('sec_tz')
    # Флаги фичей
    credit_allowed = SimpleBooleanField('opmask/@usecredit', 'yes', 'no')
    bymarket_allowed = SimpleBooleanField('opmask/@bymarket', 'yes', 'no')
    nosplit_allowed = SimpleBooleanField('opmask/@nosplit', 'yes', 'no')
    immediate_allowed = SimpleBooleanField('opmask/@immorcancel', 'yes', 'no')
    cancelbalance_allowed = SimpleBooleanField('opmask/@cancelbalance', 'yes',
                                               'no')
Example #4
0
class CandleKind(Entity):
    """
    Периоды свечек.
    """
    ROOT_NAME = 'kind'
    id = IntegerField('id')
    name = StringField('name')
    period = IntegerField('period')
Example #5
0
class Schedule(XmlObject):
    ROOT_NAME = 'schedule'

    starts = IntegerField('@starts')
    expires = IntegerField('@expires')
    allow_unscheduled = StringField('@allow_unscheduled')

    visits = NodeListField('visit', ScheduleFixtureVisit)
Example #6
0
    class _Security(MyXmlObject):
        # Id инструмента
        secid = IntegerField('@secid')
        # Id рынка
        market = IntegerField('market')
        # Обозначение инструмента
        seccode = StringField('seccode')
        # Текущая цена
        price = FloatField('price')
        # Входящая позиция, штук
        open_balance = IntegerField('open_balance')
        # Куплено, штук
        bought = IntegerField('bought')
        # Продано, штук
        sold = IntegerField('sold')
        # Текущая позиция, штук
        balance = IntegerField('balance')
        # Заявлено купить, штук
        buying = IntegerField('buying')
        # Заявлено продать, штук
        selling = IntegerField('selling')
        # Вклад бумаги в плановое обеспечение
        cover = FloatField('cover')
        # Плановая начальная маржа (риск)
        init_margin = FloatField('init_margin')
        # Cтавка риска для лонгов
        riskrate_long = FloatField('riskrate_long')
        # Cтавка риска для шортов
        riskrate_short = FloatField('riskrate_short')
        # Прибыль/убыток по входящим позициям
        pnl_income = FloatField('pnl_income')
        # Прибыль/убыток по сделкам
        pnl_intraday = FloatField('pnl_intraday')
        # Максимальная покупка, в лотах
        max_buy = IntegerField('maxbuy')
        # Макcимальная продажа, в лотах
        max_sell = IntegerField('maxsell')

        class _ValuePart(MyXmlObject):
            # Входящая позиция, штук
            register = StringField('@register')
            # Входящая позиция, штук
            open_balance = IntegerField('open_balance')
            # Куплено, штук
            bought = IntegerField('bought')
            # Продано, штук
            sold = IntegerField('sold')
            # Исполнено
            settled = IntegerField('settled')
            # Текущая позиция, штук
            balance = IntegerField('balance')
            # Заявлено купить, штук
            buying = IntegerField('buying')
            # Заявлено продать, штук
            selling = IntegerField('selling')

        value_parts = NodeListField('value_part', _ValuePart)
Example #7
0
class ScheduleFixtureVisit(IdNode):
    ROOT_NAME = 'visit'

    due = IntegerField('@due')
    starts = IntegerField('@starts')
    expires = IntegerField('@expires')

    repeats = StringField('@repeats')
    increment = IntegerField('@increment')
Example #8
0
 class _Security(MyXmlObject):
     # Id бумаги
     secid = IntegerField('@secid')
     # Внутренний код рынка
     market = IntegerField('market')
     # Код инструмента
     seccode = StringField('seccode')
     # Максимум купить (лотов)
     max_buy = IntegerField('maxbuy')
     # Максимум продать (лотов)
     max_sell = IntegerField('maxsell')
Example #9
0
class SecurityPit(MyXmlObject):
    """
    Питы - параметры инструмента в нестандартных режимах торгов.
    """
    ROOT_NAME = 'pit'
    board = StringField('@board')
    seccode = StringField('@seccode')
    market = IntegerField('market')
    decimals = IntegerField('decimals')
    minstep = FloatField('minstep')
    lotsize = IntegerField('lotsize')
    point_cost = FloatField('point_cost')
Example #10
0
class HistoryCandle(Entity):
    """
    Свечки OHLCV (open,high,low,close).
    """
    ROOT_NAME = 'candle'
    date = DateTimeField('@date', TIME_FORMAT)
    id = hash(date)
    open = FloatField('@open')
    high = FloatField('@high')
    low = FloatField('@low')
    close = FloatField('@close')
    volume = IntegerField('@volume')
    # только ФОРТС
    open_interest = IntegerField('@oi')
Example #11
0
class HistoryCandlePacket(Packet):
    """
    Пакет свечек |||.
    """
    ROOT_NAME = 'candles'
    # Идентификатор бумаги (постоянный внутри сессии)
    secid = IntegerField('@secid')
    # Борда (режим торгов)
    board = StringField('@board')
    # Тикер бумаги (постоянный)
    seccode = StringField('@seccode')
    # Параметр "status" показывает, осталась ли еще история
    status = IntegerField('@status')
    period = IntegerField('@period')
    items = NodeListField('candle', HistoryCandle)
Example #12
0
class TakeProfit(StopOrder):
    """Тейк профит ордер"""
    # Цена активации
    activation_price = FloatField('takeprofit/activationprice')
    # Защитное время удержания цены
    # (когда цены на рынке лишь кратковременно достигают уровня цены активации,
    # и вскоре возвращаются обратно)
    guard_time = DateTimeField('takeprofit/guardtime', TIME_FORMAT)
    # Достигнутый максимум
    extremum = FloatField('takeprofit/extremum')
    # Уровень исполнения?
    level = FloatField('takeprofit/level')
    # Коррекция
    # Позволяет выставить на Биржу заявку,
    # закрывающую позицию в момент окончания тренда на рынке.
    correction = FloatField('takeprofit/correction')
    # Защитный спрэд
    # Для определения цены заявки, исполняющей TP на покупку,
    # защитный спрэд прибавляется к цене рынка.
    # Для определения цены заявки, исполняющей TP на продажу,
    # защитный спрэд вычитается из цены рынка.
    guard_spread = FloatField('takeprofit/guardspread')
    # Примечание
    broker_ref = StringField('takeprofit/brokerref')
    # Количество лотов
    quantity = IntegerField('takeprofit/quantity')
Example #13
0
class ClientPosition(Entity):
    """
    Базовый класс позиции по инструменту.
    """
    # Идентификатор клиента
    client = StringField('client')
    # Внутренний код рынка
    market = IntegerField('market')
    # Регистр учета
    register = StringField('register')
    # Наименование вида средств
    name = StringField('shortname')
    # Код вида средств
    asset = StringField('asset')
    # Входящий остаток
    saldo_in = FloatField('saldoin')
    # Текущее сальдо
    saldo = FloatField('saldo')
    # Куплено
    bought = FloatField('bought')
    # Продано
    sold = FloatField('sold')
    # В заявках на покупку
    order_buy = FloatField('ordbuy')
    # В заявках на продажу
    order_sell = FloatField('ordsell')
Example #14
0
class NewsBody(MyXmlObject):
    """
    Тело новости.
    """
    ROOT_NAME = 'news_body'
    id = IntegerField('id')
    text = StringField('text')
Example #15
0
class CmdResult(MyXmlObject):
    """
    Результат отправки команды (но не исполнения на серваке).
    """
    ROOT_NAME = 'result'
    success = SimpleBooleanField('@success', 'true', 'false')
    text = StringField('message')
    id = IntegerField('@transactionid')
Example #16
0
class HistoryTick(Trade):
    """
    Тиковые исторические данные, получаемые после команды subscribe_ticks.
    Дублирует Trade. Разница только в возможности получать старые сделки.
    """
    ROOT_NAME = 'tick'
    secid = IntegerField('secid')
    time = DateTimeField('trade_time', TIME_FORMAT)
Example #17
0
class Entry(LedgerXML):
    ROOT_NAME = 'entry'

    id = StringField('@id', required=True)
    section_id = StringField('@section-id', required=False)
    quantity = IntegerField('@quantity', required=True)

    value = NodeField('value', Value, required=False)
Example #18
0
class SecInfo(Entity):
    """
    Доп. информация по инструменту.
    """
    ROOT_NAME = 'sec_info'
    id = secid = IntegerField('@secid')
    # Полное наименование инструмента
    secname = StringField('secname')
    # Код инструмента
    seccode = StringField('seccode')
    # Идентификатор рынка
    market = IntegerField('market')
    # Единицы измерения цены
    pname = StringField('pname')
    # Дата погашения
    mat_date = DateTimeField('mat_date', TIME_FORMAT)
    # Цена последнего клиринга (только FORTS)
    clearing_price = FloatField('clearing_price')
    # Минимальная цена (только FORTS)
    minprice = FloatField('minprice')
    # Максимальная цена (только FORTS)
    maxprice = FloatField('maxprice')
    # ГО покупателя (фьючерсы FORTS, руб.)
    buy_deposit = FloatField('buy_deposit')
    # ГО продавца (фьючерсы FORTS, руб.)
    sell_deposit = FloatField('sell_deposit')
    # ГО покрытой позиции (опционы FORTS, руб.)
    bgo_c = FloatField('bgo_c')
    # ГО непокрытой позиции (опционы FORTS, руб.)
    bgo_nc = FloatField('bgo_nc')
    # Текущий НКД, руб
    accruedint = FloatField('accruedint')
    # Размер купона, руб
    coupon_value = FloatField('coupon_value')
    # Дата погашения купона
    coupon_date = DateTimeField('coupon_date', TIME_FORMAT)
    # Период выплаты купона, дни
    coupon_period = IntegerField('coupon_period')
    # Номинал облигации или акции, руб
    facevalue = FloatField('facevalue')
    # Тип опциона Call(C)/Put(P)
    put_call = StringField('put_call', choices=('C', 'P'))
    # Маржинальный(M)/премия(P)
    opt_type = StringField('opt_type', choices=('M', 'P'))
    # Количество базового актива (FORTS)
    lot_volume = IntegerField('lot_volume')
Example #19
0
class StopOrder(BaseOrder):
    """Стоп заявка"""
    ROOT_NAME = 'stoporder'
    # номер заявки Биржевой регистрационный номер заявки,
    # выставленной на рынок в результате исполнения cтопа
    order_no = IntegerField('activeorderno')
    # Идентификатор трейдера, который отменил стоп
    canceller = StringField('canceller')
    # Биржевой  регистрационный  номер  сделки,
    # явившейся основанием для перехода стопа в текущее состояние
    alltrade_no = IntegerField('alltradeno')
    # Афтар заявки
    author = StringField('author')
    # Привязка к стандартной заявке
    linked_order_no = IntegerField('linkedorderno')
    # У стопов почему то нет времени активации
    time = None
Example #20
0
class Board(Entity):
    """
    Режим торгов (борда). Сочетание типа торгов и рынка.
    TQBR - T+ для акций.
    """
    ROOT_NAME = 'board'
    # Идентификатор режима торгов
    id = StringField('@id')
    # Наименование режима торгов
    name = StringField('name')
    # Внутренний код рынка
    # 1 - ММВБ
    market = IntegerField('market')
    # Тип режима торгов 0=FORTS, 1=Т+, 2=Т0
    type = IntegerField('type')

    def __str__(self):
        return self.name
Example #21
0
class NewsHeader(MyXmlObject):
    """
    Новостной заголовок.
    """
    ROOT_NAME = 'news_header'
    id = IntegerField('id')
    time = DateTimeField('timestamp', TIME_FORMAT)
    source = StringField('source')
    title = StringField('title')
Example #22
0
class Entity(MyXmlObject):
    """
    Абстрактный класс сущностей, имеет идентификатор.
    """
    # Entity id, unique in the same class
    id = IntegerField('@id')

    def __eq__(self, other):
        return isinstance(self, type(other)) and self.id == other.id
Example #23
0
class SecurityPosition(ClientPosition):
    """Клиентская позиция"""
    ROOT_NAME = 'sec_position'
    # Код инструмента
    id = secid = IntegerField('secid')
    # Код инструмента
    seccode = asset = StringField('seccode')
    # Неснижаемый остаток
    saldo_min = FloatField('saldomin')
Example #24
0
class AbstractResource(OrderedXmlObject):
    ORDER = ('id', 'version', 'local', 'remote')
    LOCATION_TEMPLATE = 'resource/location[@authority="%s"]'

    local = StringField(LOCATION_TEMPLATE % 'local', required=True)
    remote = StringField(LOCATION_TEMPLATE % 'remote', required=True)

    version = IntegerField('resource/@version')
    id = StringField('resource/@id')
    descriptor = StringField('resource/@descriptor')
Example #25
0
class MarketOrderAbility(MyXmlObject):
    """
    Возможность рыночных заявок.
    """
    ROOT_NAME = 'marketord'
    # Id бумаги
    secid = IntegerField('@secid')
    # Код бумаги
    seccode = StringField('@seccode')
    # Флаг доступности
    permitted = SimpleBooleanField('@permit', 'yes', 'no')
Example #26
0
class Quote(Entity):
    """
    Глубина рынка по инструменту.
    """
    ROOT_NAME = 'quote'
    id = secid = IntegerField('@secid')
    # Идентификатор режима торгов по умолчанию
    board = StringField('board')
    # Код инструмента
    seccode = StringField('seccode')
    # Цена
    price = FloatField('price')
    # Источник котировки (маркетмейкер)
    source = StringField('source')
    # Доходность облигаций
    yld = IntegerField('yield')
    # Количество бумаг к покупке
    buy = IntegerField('buy')
    # Количество бумаг к продаже
    sell = IntegerField('sell')
Example #27
0
class BaseOrder(Entity):
    """
    Базовый класс ордеров (обычных и стопов) с общими аттрибутами.
    """
    # идентификатор транзакции сервера Transaq
    id = IntegerField('@transactionid')
    # Биржевой номер заявки
    order_no = IntegerField('orderno')
    # идентификатор бумаги
    secid = IntegerField('secid')
    # Идентификатор борда
    board = StringField('board')
    # Код инструмента
    seccode = StringField('seccode')
    # Цена
    price = FloatField('price')
    # Время регистрации заявки биржей
    time = DateTimeField('time', TIME_FORMAT)
    # Идентификатор клиента
    client = StringField('client')
    # Cтатус заявки
    status = StringField('status')
    # Покупка (B) / Продажа (S)
    buysell = StringField('buysell', choices=('B', 'S'))
    # Дата экспирации (только для ФОРТС)
    exp_date = DateTimeField('expdate', TIME_FORMAT)
    # Примечание
    broker_ref = StringField('brokerref')
    # Время регистрации заявки сервером Transaq (только для условных заявок)
    accept_time = DateTimeField('accepttime', TIME_FORMAT)
    # До какого момента действительно
    valid_before = DateTimeField('validbefore', TIME_FORMAT)
    # Количество лотов
    quantity = IntegerField('quantity')
    # Время снятия заявки, 0 для активных
    withdraw_time = DateTimeField('withdrawtime', TIME_FORMAT)
    withdraw_time.mapper = NullableDateTimeMapper(TIME_FORMAT)
    # Сообщение биржи в случае отказа выставить заявку
    result = StringField('result')
Example #28
0
class Suite(XmlObject):
    ROOT_NAME = 'suite'

    version = IntegerField('@version')

    xform_resources = NodeListField('xform', XFormResource)
    locale_resources = NodeListField('locale', LocaleResource)
    media_resources = NodeListField('locale', MediaResource)

    details = NodeListField('detail', Detail)
    entries = NodeListField('entry', Entry)
    menus = NodeListField('menu', Menu)

    fixtures = NodeListField('fixture', Fixture)
Example #29
0
class Trade(Entity):
    """
    Сделка по инструменту на рынке (внешняя).
    """
    ROOT_NAME = 'trade'
    secid = IntegerField('@secid')
    # Наименование борда
    board = StringField('board')
    # Код инструмента
    seccode = StringField('seccode')
    # Биржевой номер сделки
    id = trade_no = IntegerField('tradeno')
    # Время сделки
    time = DateTimeField('time', TIME_FORMAT)
    # Цена сделки
    price = FloatField('price')
    # Объём в лотах
    quantity = IntegerField('quantity')
    # Покупка (B) / Продажа (S)
    buysell = StringField('buysell', choices=('B', 'S'))
    open_interest = IntegerField('openinterest')
    # Период торгов (O - открытие, N - торги, С - закрытие)
    trade_period = StringField('period',
                               choices=('O', 'N', 'C', 'F', 'B', 'T', 'L'))
Example #30
0
class Suite(OrderedXmlObject):
    ROOT_NAME = 'suite'
    ORDER = ('version', 'descriptor')

    version = IntegerField('@version')
    descriptor = StringField('@descriptor')

    xform_resources = NodeListField('xform', XFormResource)
    locale_resources = NodeListField('locale', LocaleResource)
    media_resources = NodeListField('locale', MediaResource)

    details = NodeListField('detail', Detail)
    entries = NodeListField('entry', Entry)
    menus = NodeListField('menu', Menu)
    remote_requests = NodeListField('remote-request', RemoteRequest)

    fixtures = NodeListField('fixture', Fixture)