Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Октября 09, 2024, 04:38:36 pm
Начало Помощь Поиск Войти Регистрация
Новости:

Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Прямая связь идентификатора заявки и ее хэша « предыдущая тема следующая тема »
Страниц: [1] Печать
Автор Тема: Прямая связь идентификатора заявки и ее хэша  (Прочитано 6621 раз)
Anatoly Utkin
Newbie
*
Сообщений: 36


Просмотр профиля Email
« : Июля 02, 2012, 05:36:17 pm »

Хочется после совершения команды trade_action::transact(хэш) сразу иметь какую-то ссылку на выставляемую заявку. Пока я смог это реализовать только через функцию onATFOrder, но это неудобно при наличии сложного многозаявочного робота. Ниже привожу код, присваивающий глобальной переменной trnid_order значение идентификатора заявки, выставленной функцией onNewCandle. Хотелось бы того же, но напрямую, без функции onATFOrder. То есть некой команды типа что-то(хэш)=идентификатор. Может, есть такие команды? Мой брокер--финам, ATF 1.8

static trnid_order=0;

function onNewCandle()
{
var order=new_object("hash");
if (trnid_order==0)
   {
   order["operation"]=OP_SELL;
   order["quantity"]=1;
   order["price"]=137000;
   trade_action::transact(order);   
   }
}

function onATFOrder(var id)
{
var help1=getOrder(id);

if (trnid_order==0)
   {
   trnid_order=help1["trnid"];
   }
}



Записан
Олег
Hero Member
*****
Сообщений: 849



Просмотр профиля Email
« Ответ #1 : Июля 05, 2012, 10:47:40 am »

Наверно, Heller в отпуске :)
Записан

Коллеги!
МТС фокусничает!
Будьте бдительны сами и предупредите всех своих хороших знакомых!
Я тоже на днях вляпался.
Схема "фокуса" описана вот здесь:
http://www.forum.sib.mts.ru/viewtopic.php?f=344&t=11381
klimov
Разработчики
Hero Member
*****
Сообщений: 815


Просмотр профиля Email
« Ответ #2 : Июля 05, 2012, 10:54:04 am »

да, именно так
Записан
Олег
Hero Member
*****
Сообщений: 849



Просмотр профиля Email
« Ответ #3 : Июля 05, 2012, 11:05:15 am »

да, именно так

Ну тогда от лица всех форумчан желаю ему приятного полноценного отдыха!
Записан

Коллеги!
МТС фокусничает!
Будьте бдительны сами и предупредите всех своих хороших знакомых!
Я тоже на днях вляпался.
Схема "фокуса" описана вот здесь:
http://www.forum.sib.mts.ru/viewtopic.php?f=344&t=11381
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #4 : Июля 10, 2012, 11:38:15 am »

На данный моментально получить номер транзакции для заявки сразу же - нереально в ATF. Скрипт сейчас работает таким образом:

1. Приходит порция рыночных данных от сервера.
2. Эта порция данных обрабатывается всеми окнами и скриптами ATF. Если в ATF выставляются какие-то заявки, они откладываются в отдельную очередь.
3. После обработки всех данных заявки одним махом отправляются на биржу.
4. Получается новая порция рыночных данных.

Если бы заявки выставлялись на шаге 2, то это могло бы привести к тормозам в обработке данных. В принципе технически сделать еще один флаг и отдавать пользователю сразу идентификатор транзакции, оставляя на его страх и риск возможную проблему тормозов - не сложно. В общем-то желание иметь сразу этот идентификатор справедливо, так что в одной из ближайших версий сделаем.
Записан
Олег
Hero Member
*****
Сообщений: 849



Просмотр профиля Email
« Ответ #5 : Июля 10, 2012, 05:22:58 pm »

На данный моментально получить номер транзакции для заявки сразу же - нереально в ATF. Скрипт сейчас работает таким образом:

1. Приходит порция рыночных данных от сервера.
2. Эта порция данных обрабатывается всеми окнами и скриптами ATF. Если в ATF выставляются какие-то заявки, они откладываются в отдельную очередь.
3. После обработки всех данных заявки одним махом отправляются на биржу.
4. Получается новая порция рыночных данных.

Если бы заявки выставлялись на шаге 2, то это могло бы привести к тормозам в обработке данных. В принципе технически сделать еще один флаг и отдавать пользователю сразу идентификатор транзакции, оставляя на его страх и риск возможную проблему тормозов - не сложно. В общем-то желание иметь сразу этот идентификатор справедливо, так что в одной из ближайших версий сделаем.
Правильно я понял, что на даннном этапе развития ATF нет возможности снять конкретную заявку, выставленную данным роботом, поскольку невозможно получить ее номер и можно снимать только одновременно сразу все заявки по данной бумаге, выставленные и этим же роботом, и другими роботами, и клиентом, и экселем?

Записан

Коллеги!
МТС фокусничает!
Будьте бдительны сами и предупредите всех своих хороших знакомых!
Я тоже на днях вляпался.
Схема "фокуса" описана вот здесь:
http://www.forum.sib.mts.ru/viewtopic.php?f=344&t=11381
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #6 : Июля 10, 2012, 07:34:41 pm »

Возможно. Почитайте http://www.transaq.ru/dokuwiki/atf:заявки_и_сделки про "снятие заявок" и "информация о сделках и заявках". Хотя это конечно несколько не напрямую все.
« Последнее редактирование: Июля 10, 2012, 07:42:35 pm от Heller » Записан
Anatoly Utkin
Newbie
*
Сообщений: 36


Просмотр профиля Email
« Ответ #7 : Июля 11, 2012, 01:54:36 pm »

To Heller:

Понял, спасибо. Еще вопрос: onATFOrder срабатывает при изменении статуса любой заявки транзака или любой заявки, рожденной текущим скриптом?

To Олег:

Снять конкретную заявку, выставленную конкретным роботом, можно. Для этого следует наладить взаимодействие между функцией, из которых выставляется заявка (например, onNewCandle) и onATFOrder. onATForder срабатывает всегда при изменении любой заявки. Поэтому следует охарактеризовать некой глобальной переменной текущее состояние робота, а затем раздавать в функции onATFOrder нужные номера нужным переменным. Простейший пример этого приведен в начале топика, в роли глобальной переменной выступает trnid_order, она же выступает и в роли номера заявки. В случае многих заявок эта схема также реализуема, но следует использовать отдельные переменные состояния робота. 
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #8 : Июля 13, 2012, 10:25:09 am »

onATFOrder() предполагалось что должен срабатывать только при изменении статуса заявки, выставленной из данного скрипта. Однако в ходе расследования багов, о которых сообщали пользователи, стало понятно, что на данный момент мы не можем реализовать эту функцию в полной мере из-за системы взаимодействия клиента-сервера-биржи. Так что я бы избежал использования этой функции.

В ближайших планах впрочем протащить примечание к заявкам ATF, а заодно возвращать сразу же номер транзакции. Это будет в ближайшей версии.
Записан
Страниц: [1] Печать 
Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: Прямая связь идентификатора заявки и ее хэша « предыдущая тема следующая тема »
Перейти в:  


Войти

Powered by MySQL Powered by PHP Powered by SMF 2.0.10 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!