ПоискПоиск  ПравилаПравила  ПользователиПользователи  ПрофильПрофиль  РегистрацияРегистрация  ВходВход
Форум «Техническая поддержка»
Форум для разработчиков и пользователей программного обеспечения, использующегося на бирже.

Раздел тех.поддержки | Форма обратной связи Тех.поддержка ОАО Московская Биржа: +7 (495) 733-9507, 287-7691
любые вопросы по TWIME
Новая тема   Ответить на тему
На страницу Пред.  1, 2, 3 ... , 39, 40, 41  След.
 Предыдущая тема :: Следующая тема 
 Автор  Сообщение 
Physic
Стаж: 1 год 7 месяцев
Сообщений: 41
Вт Янв 24, 2017 19:05 (спустя 1 год 1 месяц 15 дней) Ответить с цитатой Получить постоянный адрес сообщения
ALEXEYKARPOV писал(а):
Цитата:
первый фрагмент при запуске не приводит к возникновению исключения, а второй почему то приводит. Не понятно почему?  

по причине написанной в исключении 


К сожалению, в исключении толком ничего не написано, по крайней мере, для меня - ещё плохо знакомого с Питоном и с протоколом TWIME:



Я извиняюсь, что так и не смог нормально вставить принтскрин с возникающим исключением, что бы не нарушить стиля принятого на форуме. 
 
Последний раз редактировалось автором 24.01.2017 19:16, всего редактировалось 5 раз
ALEXEYKARPOV
Стаж: 5 лет 1 месяц
Сообщений: 267
Вт Янв 24, 2017 19:46 (спустя 1 год 1 месяц 15 дней) Ответить с цитатой Получить постоянный адрес сообщения
пытаетесь запаковать строку, в то время как согласно формату ('fmt') ожидается число. 
 
Physic
Стаж: 1 год 7 месяцев
Сообщений: 41
Ср Янв 25, 2017 03:05 (спустя 1 год 1 месяц 16 дней) Ответить с цитатой Получить постоянный адрес сообщения
ALEXEYKARPOV писал(а):
пытаетесь запаковать строку, в то время как согласно формату ('fmt') ожидается число. 


Если Вы пытаетесь отвечать, значит очевидно в этом разбираетесь, но, тогда, пожалуйста, объясните, чем принципиально отличается определение класса для которого такого исключения не возникает:

class NewOrderSingle(Serializer):
 
    def __init__(self):
        tag = 6000
 
        fields = [
            {'name':'blockLength',          'fmt':'H'},
            {'name':'templateId',           'fmt':'H'},
            {'name':'schemaId',             'fmt':'H'},
            {'name':'version',              'fmt':'H'},
 
            {'name':'ClOrdID',              'fmt':'Q'},
            {'name':'ExpireDate',           'fmt':'Q'},
            {'name':'Price',                'fmt':'q'},
            {'name':'SecurityID',           'fmt':'i'},
            {'name':'ClOrdLinkID',          'fmt':'i'},
            {'name':'OrderQty',             'fmt':'I'},
            {'name':'TimeInForce',          'fmt':'B'},
            {'name':'Side',                 'fmt':'B'},
            {'name':'CheckLimit',           'fmt':'B'},
            {'name':'Account',              'fmt':'7s'}
        ]
 
        Serializer.__init__(self, tag, fields)


от моего, по моему, аналогичного определения немного другого класса (для отмены заявок) и для которого такое исключение возникает:
class OrderCancelRequest(Serializer):
 
    def __init__(self):
        tag = 6002
 
        fields = [
            {'name':'blockLength',          'fmt':'H'},
            {'name':'templateId',           'fmt':'H'},
            {'name':'schemaId',             'fmt':'H'},
            {'name':'version',              'fmt':'H'},
 
            {'name':'ClOrdID',              'fmt':'Q'},
            {'name':'OrderID',              'fmt':'q'},
            {'name':'Account',              'fmt':'7s'}
        ]
 
        Serializer.__init__(self, tag, fields)


Ведь, метод "serialize" из базового класса "Serializer", определяемого в файле "serializer.py", для всех производных от него классов должен совершенно одинаково отрабатываться. 
 
Последний раз редактировалось автором 25.01.2017 03:09, всего редактировалось 1 раз
karat
Стаж: 1 год 7 месяцев
Сообщений: 137
Ср Янв 25, 2017 11:28 (спустя 1 год 1 месяц 16 дней) Ответить с цитатой Получить постоянный адрес сообщения
Вон же у вас в исключении прям пишет "cannot convert argument to integer" 
 
karat
Стаж: 1 год 7 месяцев
Сообщений: 137
Ср Янв 25, 2017 11:31 (спустя 1 год 1 месяц 16 дней) Ответить с цитатой Получить постоянный адрес сообщения
Physic" писал(а):
но, тогда, пожалуйста, объясните, чем принципиально отличается определение класса для которого такого исключения не возникае 

ничего не понимаю в Питоне, но на лицо, в вашем классе гораздо меньше полей

наверняка пытается переконвертить значение совершенно другого поля (например ExpireDate) и выпадает исключение 
 
Последний раз редактировалось автором 25.01.2017 11:33, всего редактировалось 2 раза
Physic
Стаж: 1 год 7 месяцев
Сообщений: 41
Ср Янв 25, 2017 15:08 (спустя 1 год 1 месяц 16 дней) Ответить с цитатой Получить постоянный адрес сообщения
karat писал(а):
Physic" писал(а):
но, тогда, пожалуйста, объясните, чем принципиально отличается определение класса для которого такого исключения не возникае 

ничего не понимаю в Питоне, но на лицо, в вашем классе гораздо меньше полей

наверняка пытается переконвертить значение совершенно другого поля (например ExpireDate) и выпадает исключение 


Может быть я бы и мог с Вами согласиться на счёт разности кол-ва полей и их типов в этих двух классах, но дело в том, что в файле "schema.py" описывается целый ряд разных классов, наследующих однотипно от класса "Serializer", описанного в файле "serializer.py". И отличаются эти классы тоже количеством определённых в них полей и типами этих полей. Вот примеры из файла "schema.py":
#    <message name="EstablishmentReject" id="5002">
#        <field name="RequestTimestamp"      id="20207" type="TimeStamp" />
#        <field name="EstablishmentRejectCode"   id="20209" type="EstablishmentRejectCodeEnum" />
#    </message>

class EstablishmentReject(Serializer):

    def __init__(self):
        tag = 5002

        fields = [
            {'name':'blockLength',          'fmt':'H'},
            {'name':'templateId',           'fmt':'H'},
            {'name':'schemaId',             'fmt':'H'},
            {'name':'version',              'fmt':'H'},

            {'name':'RequestTimestamp',         'fmt':'Q'},
            {'name':'EstablishmentRejectCode',  'fmt':'B'}
        ]

        Serializer.__init__(self, tag, fields)

#    <message name="SessionReject" id="5008">
#        <field name="ClOrdID"             id="11"     type="UInt64"/>
#        <field name="RefTagID"            id="371"    type="UInt32"/>
#        <field name="SessionRejectReason" id="373"    type="SessionRejectReasonEnum"/>
#    </message>

class SessionReject(Serializer):

    def __init__(self):
        tag = 5008

        fields = [
            {'name':'blockLength',          'fmt':'H'},
            {'name':'templateId',           'fmt':'H'},
            {'name':'schemaId',             'fmt':'H'},
            {'name':'version',              'fmt':'H'},

            {'name':'ClOrdID',              'fmt':'Q'},
            {'name':'RefTagID',             'fmt':'I'},
            {'name':'SessionRejectReason',  'fmt':'B'}
        ]

        Serializer.__init__(self, tag, fields)


Из файла "schema.py" таких, надеюсь валидных, примеров (т.к. это официальный пример Мос. Биржи) разных классов, однотипно наследующих от базового класса "Serializer", можно привести целый широкий ряд, отличающихся по количеству и типу полей. 
 
Последний раз редактировалось автором 25.01.2017 15:13, всего редактировалось 3 раза
ALEXEYKARPOV
Стаж: 5 лет 1 месяц
Сообщений: 267
Ср Янв 25, 2017 19:42 (спустя 1 год 1 месяц 16 дней) Ответить с цитатой Получить постоянный адрес сообщения
Цитата:
чем принципиально отличается определение класса для которого такого исключения не возникает 

Ничем, причем тут эти классы? С классом у вас все ок, я же написал, в чем проблема.

PS. Почитал ваши темы, уважаемый "ФИЗИК", и понял, что вы местный тролль (особенно порадовала эпопея с FAST протоколом)) , так что от общения с вами в дальнейшем воздержусь ))) Laughing  
 
Последний раз редактировалось автором 25.01.2017 19:42, всего редактировалось 1 раз
Physic
Стаж: 1 год 7 месяцев
Сообщений: 41
Чт Янв 26, 2017 01:37 (спустя 1 год 1 месяц 17 дней) Ответить с цитатой Получить постоянный адрес сообщения
ALEXEYKARPOV писал(а):
Цитата:
чем принципиально отличается определение класса для которого такого исключения не возникает 

Ничем, причем тут эти классы? С классом у вас все ок, я же написал, в чем проблема.

PS. Почитал ваши темы, уважаемый "ФИЗИК", и понял, что вы местный тролль (особенно порадовала эпопея с FAST протоколом)) , так что от общения с вами в дальнейшем воздержусь ))) Laughing  


В упор не понял, почему и за, что вы пишите обо мне с иронией и обвиняете меня в троллинге! На сколько я понимаю этот жаргонный термин в инете: тролль - это человек, который наполняет форум не относящимися к основной тематике форума информационными, бессодержательными, "мусорными" постами и топиками. Но все мои топики и посты я писал от того, что действительно имел и имею в настоящее время (касательно TWIME) проблемы с воспроизводством на своей машине ваших современных IT достижений в области биржевой торговли. Я готов признать, что мои познания в современной IT индустрии сильно уступают вашим познаниям. Но между прочим, при правильном, грамотном составлении документации ко всем вашим биржевым протоколам на IT профессиональном, грамотном Русском языке, и такой острой необходимости в этом форуме, и необходимости в тех. поддержке Мос. биржи в таком объёме, в котором она у вас, подозреваю сейчас завалена, просто не было бы необходимости.

В Вашем первом ответе на мой вопрос вы ответили т.о. что стало не намного понятнее, чем было до этого. Например, перелистав кучу документации по протоколу TWIME, я так и не нашёл, что означает аббревиатура ('fmt') и почему тогда правильно определённый мною класс по подобию аналогичных классов генерирует исключение при попытке вызвать стандартно определённые методы (ocr.deserialize(ocr.serialize())) для целой серии классов выполняющих базовые задачи протокола "TWIME":

ocr = OrderCancelRequest()
ocr.populate("ClOrdID", "3")              
ocr.populate("OrderID", "550650239")
ocr.populate("Account", "*******")

print ocr.deserialize(ocr.serialize())

c.send(ocr)
 
 
Последний раз редактировалось автором 26.01.2017 01:47, всего редактировалось 2 раза
ALEXEYKARPOV
Стаж: 5 лет 1 месяц
Сообщений: 267
Чт Янв 26, 2017 10:15 (спустя 1 год 1 месяц 17 дней) Ответить с цитатой Получить постоянный адрес сообщения
Цитата:
бессодержательными, "мусорными" постами и топиками. 

Ну вообще ваши темы выглядят так, будто вы первый день программируете и учились по самоучителю 'С++ за 21 день' (а теперь наверное по новой книге - 'Питон для самых маленьких')

Цитата:
ко всем вашим биржевым протоколам 

ахахах, вы думаете я работаю на мосбирже?)))

Цитата:
Но между прочим, при правильном, грамотном составлении документации ко всем вашим биржевым протоколам на IT профессиональном, грамотном Русском языке, и такой острой необходимости в этом форуме, и необходимости в тех. поддержке Мос. биржи в таком объёме, в котором она у вас, подозреваю сейчас завалена, просто не было бы необходимости. 


Хоть и считаю, что мосбиржа делает часто говеные доки, но это не про твайм. Тут похоже не в доке проблема( Плохой танцор, скажем так))

ЗЫ. Извините, если я ошибаюсь, и вы не тролль)) Но тогда похоже у вас проблемы)))
ЗЗЫ. Чтобы наполнить сообщение смыслом, скажу, что проблема у вас в этих строчках
ocr.populate("ClOrdID", "3")
ocr.populate("OrderID", "550650239") 
 
karat
Стаж: 1 год 7 месяцев
Сообщений: 137
Чт Янв 26, 2017 14:53 (спустя 1 год 1 месяц 17 дней) Ответить с цитатой Получить постоянный адрес сообщения
Physic писал(а):
перелистав кучу документации по протоколу TWIME, я так и не нашёл, что означает аббревиатура ('fmt') и почему тогда правильно определённый мною класс по подобию аналогичных классов генерирует исключение при попытке вызвать стандартно определённые методы
 


биржа доку более менее нормальную делает. Порой вчитываться надо, но в целом нормальную.
А то что вы написали, они не обязаны писать. Это все ложится на плечи программиста. 
 
Physic
Стаж: 1 год 7 месяцев
Сообщений: 41
Пт Янв 27, 2017 16:12 (спустя 1 год 1 месяц 18 дней) Ответить с цитатой Получить постоянный адрес сообщения
ALEXEYKARPOV писал(а):

ЗЗЫ. Чтобы наполнить сообщение смыслом, скажу, что проблема у вас в этих строчках
ocr.populate("ClOrdID", "3")
ocr.populate("OrderID", "550650239") 


В конечном счёте, ваши подсказки помогли, поэтому спасибо Вам, ALEXEYKARPOV. Мой класс OrderCancelRequest вроде заработал и исключения не появляются. Достаточно оказалось выполнить правильно инициализацию объекта 'ocr'.

ALEXEYKARPOV писал(а):

Ну вообще ваши темы выглядят так, будто вы первый день программируете и учились по самоучителю 'С++ за 21 день' (а теперь наверное по новой книге - 'Питон для самых маленьких')
 

Smile Я действительно не профессиональный программист, но с языком С++ знаком давно, а вот что касается языка Питона, то, что бы максимально быстро разобраться именно с протоколом TWIME, а не с новым (очередным) языком, который, возможно, мне больше для других целей никогда и не понадобится, я, действительно, прочитал в инете краткий вводный курс по Питону: Язык программирования Python — подробно для начинающих. Smile
Если Вы, ALEXEYKARPOV, считаете себя достаточно компетентным специалистом в современной IT индустрии, которая быстро развивается, и считаете, что для успешного использования протокола TWIME подобного краткого курса по Питону не достаточно, я был бы благодарен, если бы Вы посоветовали достойный источник с Вашей точки зрения. 
 
Последний раз редактировалось автором 27.01.2017 16:28, всего редактировалось 5 раз
ALEXEYKARPOV
Стаж: 5 лет 1 месяц
Сообщений: 267
Пт Янв 27, 2017 17:09 (спустя 1 год 1 месяц 18 дней) Ответить с цитатой Получить постоянный адрес сообщения
Цитата:
для успешного использования протокола TWIME подобного краткого курса по Питону не достаточно 

Для УСПЕШНОГО использования протокола твайм компетентно заявляю вам, что писать на питоне не самая лучшая идея )))) Раз вы знакомы с cpp, то его и используйте. 
 
spocher
Стаж: 6 месяцев 15 дней
Откуда: Пермь
Сообщений: 3
Вс Мар 12, 2017 17:20 (спустя 1 год 3 месяца 1 день) Ответить с цитатой Получить постоянный адрес сообщения
Подскажите начинающему. Решил я писать робота на c++ . Планировал через plaza2. До этого писал роботов только через transaq connector. Но тут узнал про TWIME. Решил буду писать робота через этот бинарный протокол.
Перечитал руководство и эту ветку форума. Как я понял twime предназначен только для отправки заявок. А каким образом, или лучше так, в связке с чем применять twime для получения рыночных данных (сделки, вариационную маржу и т.д). Из сообщений на форуме нашёл что можно применять twime в связке с FIX .

Подскажите какой способ максимально быстрый, TWIME+FIX, TWIME+CGate? Или существуют другие решения? 
 
Zeddeadbabyzedde
ad
Стаж: 4 года 5 месяцев
Сообщений: 342
Пн Мар 13, 2017 15:44 (спустя 1 год 3 месяца 2 дня) Ответить с цитатой Получить постоянный адрес сообщения
spocher писал(а):
Подскажите начинающему.  

twime+cgate 
 
spocher
Стаж: 6 месяцев 15 дней
Откуда: Пермь
Сообщений: 3
Чт Мар 16, 2017 15:12 (спустя 1 год 3 месяца 5 дней) Ответить с цитатой Получить постоянный адрес сообщения
А еще вопрос как будет работать быстрее под Linux или Windows? 
 
Показать сообщения:   
Новая тема   Ответить на тему
Список разделов форума -> Техническая поддержкаНа страницу Пред.  1, 2, 3 ... , 39, 40, 41  След.
Страница 40 из 41

Rambler's Top100 Rambler's Top100
Рейтинг@Mail.ru
Copyright © Московская биржа, 2006-2017.
Ваши предложения, замечания и вопросы
по работе форума направляйте на email: