Example #1
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 #2
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 #3
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 #4
0
class HistoryTick(Trade):
    """
    Тиковые исторические данные, получаемые после команды subscribe_ticks.
    Дублирует Trade. Разница только в возможности получать старые сделки.
    """
    ROOT_NAME = 'tick'
    secid = IntegerField('secid')
    time = DateTimeField('trade_time', TIME_FORMAT)
Example #5
0
class NewsHeader(MyXmlObject):
    """
    Новостной заголовок.
    """
    ROOT_NAME = 'news_header'
    id = IntegerField('id')
    time = DateTimeField('timestamp', TIME_FORMAT)
    source = StringField('source')
    title = StringField('title')
Example #6
0
class Balance(LedgerXML):
    """https://github.com/dimagi/commcare-core/wiki/ledgerxml#balance-transactions
    """
    ROOT_NAME = REPORT_TYPE_BALANCE
    ROOT_NS = COMMTRACK_REPORT_XMLNS

    entity_id = StringField('@entity-id', required=True)
    date = DateTimeField('@date', required=True)
    section_id = StringField('@section-id', required=False)

    entry = NodeField('entry', Entry, required=True)
Example #7
0
class Transfer(LedgerXML):
    """https://github.com/dimagi/commcare-core/wiki/ledgerxml#transfer-transactions
    """
    ROOT_NAME = REPORT_TYPE_TRANSFER
    ROOT_NS = COMMTRACK_REPORT_XMLNS

    src = StringField('@src', required=False)
    dest = StringField('@dest', required=False)
    date = DateTimeField('@date', required=True)
    type = StringField('@type', required=False)
    section_id = StringField('@section-id', required=False)

    entry = NodeField('entry', Entry, required=True)
Example #8
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 #9
0
class TextMessage(Entity):
    """
    Текстовые сообщения, которые можно передавать через Транзак.
    """
    ROOT_NAME = 'message'
    # Дата
    id = date = DateTimeField('date', TIME_FORMAT)
    # Срочность
    urgent = SimpleBooleanField('urgent', 'Y', 'N')
    # Отправитель
    sender = StringField('from')
    # Содержимое
    text = StringField('text')
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 StopLoss(StopOrder):
    """Стоп лосс оредер"""
    # Использование кредита
    use_credit = SimpleBooleanField('stoploss/@usecredit', 'yes', 'no')
    # Цена активации
    activation_price = FloatField('stoploss/activationprice')
    # Рыночное исполнение
    bymarket = ItemField('bymarket')
    # Защитное время удержания цены
    # (когда цены на рынке лишь кратковременно достигают уровня цены активации,
    # и вскоре возвращаются обратно)
    guard_time = DateTimeField('stoploss/guardtime', TIME_FORMAT)
    # Примечание
    broker_ref = StringField('stoploss/brokerref')
    # Количество лотов
    quantity = IntegerField('stoploss/quantity')
    # Цена исполнения (отменяет bymarket)
    price = FloatField('stoploss/orderprice')
Example #12
0
class ClientTrade(Entity):
    """
    Клиентская сделка (т.е. успешно выполненная заявка).
    """
    ROOT_NAME = 'trade'
    # Id бумаги
    secid = IntegerField('secid')
    # Номер сделки на бирже
    id = trade_no = IntegerField('tradeno')
    # Номер заявки на бирже
    order_no = IntegerField('orderno')
    # Идентификатор борда
    board = StringField('board')
    # Код инструмента
    seccode = StringField('seccode')
    # Идентификатор клиента
    client = StringField('client')
    # B - покупка, S - продажа
    buysell = StringField('buysell', choices=('B', 'S'))
    # Время сделки
    time = DateTimeField('time', TIME_FORMAT)
    # Примечание
    broker_ref = StringField('brokerref')
    # Объем сделки
    value = FloatField('value')
    # Комиссия
    commission = FloatField('comission')
    # Цена
    price = FloatField('price')
    # Кол-во инструмента в сделках в штуках
    items = IntegerField('items')
    # Количество лотов
    quantity = IntegerField('quantity')
    # Доходность
    yld = IntegerField('yield')
    # НКД
    accrued_int = FloatField('accruedint')
    # тип сделки: ‘T’ – обычная ‘N’ – РПС ‘R’ – РЕПО ‘P’ – размещение
    trade_type = StringField('tradetype', choices=('T', 'N', 'R', 'P'))
    # Код поставки
    settle_code = StringField('settlecode')
    # Текущая позиция по инструменту
    current_position = IntegerField('currentpos')
Example #13
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 #14
0
def CustomDateTimeField(*args, **kwargs):
    # As of at least CommCare 2.20, the phone does not parse microseconds
    # in this particular handler (though it does everywhere else).
    # For now, we're going to continue sending down without microseconds
    return DateTimeField(format='%Y-%m-%dT%H:%M:%SZ', *args, **kwargs)
Example #15
0
class Quotation(Entity):
    """
    Котировки по инструменту.
    """
    ROOT_NAME = 'quotation'
    id = secid = IntegerField('@secid')
    # Идентификатор режима торгов по умолчанию
    board = StringField('board')
    # Код инструмента
    seccode = StringField('seccode')
    # Стоимость пункта цены
    point_cost = FloatField('point_cost')
    # НКД на дату торгов в расчете на одну бумагу, руб.
    accrued = FloatField('accruedintvalue')
    # Цена первой сделки
    open = FloatField('open')
    # Средневзвешенная цена
    waprice = FloatField('waprice')
    # Кол-во лотов на покупку по лучшей цене
    bid_depth = IntegerField('biddepth')
    # Совокупный спрос
    demand = IntegerField('biddeptht')
    # Заявок на покупку
    numbids = IntegerField('numbids')
    # Кол-во лотов на продажу по лучшей цене
    offer_depth = IntegerField('offerdepth')
    # Совокупное предложение
    suply = IntegerField('offerdeptht')
    # Заявок на продажу
    numoffers = IntegerField('numoffers')
    # Лучшая котировка на покупку
    best_bid = FloatField('bid')
    # Лучшая котировка на продажу
    best_offer = FloatField('offer')
    # Кол-во сделок
    numtrades = IntegerField('numtrades')
    # Объем совершенных сделок в лотах
    volume_today = IntegerField('voltoday')
    # Общее количество открытых позиций(FORTS)
    open_positions = IntegerField('openpositions')
    # Изм.открытых позиций(FORTS)
    delta_positions = IntegerField('deltapositions')
    # Цена последней сделки
    last_price = FloatField('last')
    # Время заключения последней сделки
    last_time = DateTimeField('time', TIME_FORMAT)
    # Объем последней сделки, в лотах
    last_quantity = IntegerField('quantity')
    # Изменение цены последней сделки по отношению к цене
    # последней сделки предыдущего торгового дня
    change = FloatField('change')
    # Цена последней сделки к оценке предыдущего дня
    change_wa = FloatField('priceminusprevwaprice')
    # Объем совершенных сделок, млн. руб
    value_today = FloatField('valtoday')
    # Доходность, по цене последней сделки
    yld = FloatField('yield')
    # Доходность по средневзвешенной цене
    yld_wa = FloatField('yieldatwaprice')
    # Рыночная цена по результатам торгов сегодняшнего дня
    market_price_today = FloatField('marketpricetoday')
    # Наибольшая цена спроса в течение торговой сессии
    highest_bid = FloatField('highbid')
    # Наименьшая цена предложения в течение торговой сессии
    lowest_offer = FloatField('lowoffer')
    # Максимальная цена сделки
    high = FloatField('high')
    # Минимальная цена сделки
    low = FloatField('low')
    # Цена закрытия
    close = FloatField('closeprice')
    # Доходность по цене закрытия
    close_yld = FloatField('closeyield')
    # Статус «торговые операции разрешены/запрещены»
    status = StringField('status')
    # Состояние торговой сессии по инструменту
    trade_status = StringField('tradingstatus')
    # ГО покупок/покр
    buy_deposit = FloatField('buydeposit')
    # ГО продаж/непокр
    sell_deposit = FloatField('selldeposit')
    # Волатильность
    volatility = FloatField('volatility')
    # Теоретическая цена
    theory_price = FloatField('theoreticalprice')
Example #16
0
def CustomDateTimeField(*args, **kwargs):
    return DateTimeField(format='%Y-%m-%dT%H:%M:%SZ', *args, **kwargs)