class CreditAbility(MyXmlObject): """ Режим кредитования. """ ROOT_NAME = 'overnight' # Ночной overnight = SimpleBooleanField('@status', 'true', 'false') # Дневной intraday = SimpleBooleanField('@status', 'false', 'true')
class CmdResult(MyXmlObject): """ Результат отправки команды (но не исполнения на серваке). """ ROOT_NAME = 'result' success = SimpleBooleanField('@success', 'true', 'false') text = StringField('message') id = IntegerField('@transactionid')
class RemoteRequestQuery(OrderedXmlObject, XmlObject): ROOT_NAME = 'query' ORDER = ('data', 'prompts') url = StringField('@url') storage_instance = StringField('@storage-instance') template = StringField('@template') data = NodeListField('data', QueryData) prompts = NodeListField('prompt', QueryPrompt) default_search = SimpleBooleanField("@default_search", "true", "false")
class Lookup(OrderedXmlObject): ROOT_NAME = 'lookup' ORDER = ('auto_launch', 'extras', 'responses', 'field') name = StringField("@name") auto_launch = SimpleBooleanField("@auto_launch", "true", "false") action = StringField("@action", required=True) image = StringField("@image") extras = NodeListField('extra', Extra) responses = NodeListField('response', Response) field = NodeField('field', Field)
class MarketOrderAbility(MyXmlObject): """ Возможность рыночных заявок. """ ROOT_NAME = 'marketord' # Id бумаги secid = IntegerField('@secid') # Код бумаги seccode = StringField('@seccode') # Флаг доступности permitted = SimpleBooleanField('@permit', 'yes', 'no')
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')
class TextMessage(Entity): """ Текстовые сообщения, которые можно передавать через Транзак. """ ROOT_NAME = 'message' # Дата id = date = DateTimeField('date', TIME_FORMAT) # Срочность urgent = SimpleBooleanField('urgent', 'Y', 'N') # Отправитель sender = StringField('from') # Содержимое text = StringField('text')
class SessionDatum(IdNode, OrderedXmlObject): ROOT_NAME = 'datum' ORDER = ( 'id', 'nodeset', 'value', 'function', 'detail_select', 'detail_confirm', 'detail_persistent', 'detail_inline', 'autoselect', ) nodeset = XPathField('@nodeset') value = StringField('@value') function = XPathField('@function') detail_select = StringField('@detail-select') detail_confirm = StringField('@detail-confirm') detail_persistent = StringField('@detail-persistent') detail_inline = StringField('@detail-inline') autoselect = SimpleBooleanField('@autoselect', true="true", false="false")
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')
class ClientAccount(Entity): """ Данные клиентсткого аккаунта. """ ROOT_NAME = 'client' id = StringField('@id') active = SimpleBooleanField('@remove', 'false', 'true') # Возможные типы клиента: spot (кассовый), # leverage (плечевой), margin_level (маржинальный) type = StringField('type', choices=('spot', 'leverage', 'mct')) # Валюта фондового портфеля currency = StringField('currency', choices=('NA', 'RUB', 'EUR', 'USD')) # Идентификатор рынка market = IntegerField('market') # код Единого Портфеля, в который включен данный клиент union = StringField('union') # счет FORTS клиента forts_acc = StringField('forts_acc')
class ServerStatus(Entity): """ Состояние соединения. """ ROOT_NAME = 'server_status' connected = StringField('@connected', choices=('true', 'false', 'error')) timezone = StringField('@server_tz') # Атрибут recover – необязательный параметр. Его наличие означает, что # коннектор пытается восстановить потерянное соединение с сервером recover = SimpleBooleanField('@recover', 'true', None) text = StringField('text()') def __repr__(self): if self.connected != 'error': return "ServerStatus(id=%d,tz=%s,conn=%s)" % \ (self.id, self.timezone, self.connected) else: return "ServerStatus(ERROR, text=%s)" % self.text
class Action(ActionMixin): """ For CC < 2.21 """ display = NodeField('display', Display) auto_launch = SimpleBooleanField("@auto_launch", "true", "false") redo_last = SimpleBooleanField("@redo_last", "true", "false")
class MediaResource(AbstractResource): ROOT_NAME = 'media' path = StringField('@path') lazy = SimpleBooleanField('resource/@lazy', true="true", false="false")