Transaq

СБО "Transaq" => Подсистема ATF => Topic started by: nikolz on 16.03.2011, 14:48:14

Title: Работа с заявками и сделками
Post by: nikolz on 16.03.2011, 14:48:14
Добрый день!
Как следует из документации информацию о заявках и сделках получаем
функциями Get...(id).
Вопрос :
Как получить размер соответствующей таблицы (диапазон id),
 чтобы организовать просмотр всех заявок, стоп-заявок и сделок клиента.
Спасибо
Title: Re: Работа с заявками и сделками
Post by: Heller on 16.03.2011, 16:05:00
Пока организовать этого не получится - только по событиям onATFOrder/onClientOrder. Но добавим такие функции, раз спрашивают.
Title: Re: Работа с заявками и сделками
Post by: nikolz on 16.03.2011, 16:50:33
Heller!
Еще интересует
1)функция выбора заявок, стоп-заявок и сделок в виде коллекции
по ключам таким как код клиента, код инструмента, статус(активные).
Чтобы не перебирать всю таблицу, а получить сразу выборку по клиенту активных заявок (стоп-заявок).
2) Функция изменения параметра ордера.
Например , для активной стоп-заявки указываем "установить новую цену активации" и заявка автоматически установится на новую цену c неизменными остальными параметрами аналогично для take-profit
спасибо
Title: Re: Работа с заявками и сделками
Post by: Heller on 17.03.2011, 10:53:08
Функции выбора разных видов заявок по фильтрам будут сделаны. Насчет изменения параметров стоп-заявок - это не поддерживается сервером. То есть можно выставить новый стоп и снять старый последовательно, но всегда будет период проскальзывания. Насчет того, будет ли полноценная замена стоп-заявок пока сказать не могу.
Title: Re: Работа с заявками и сделками
Post by: nikolz on 19.03.2011, 12:20:49
Heller!
Какие функции ATF позволяют выставит стоп-заявку?
Дайте ссылку на описание и пример.
Спасибо
Title: Re: Работа с заявками и сделками
Post by: nikolz on 20.03.2011, 13:33:00
Heller!
Как следует из документации отменить одну заявку по ее id нельзя.
Можно только либо все на продажу, либо все на покупку, либо все.
Верно?
Спасибо
Title: Re: Работа с заявками и сделками
Post by: nikolz on 20.03.2011, 13:37:39
Heller!
Поясните плиз когда вызывается функция onATFOrderErr
на какие ошибки реагирует данная функция (ошибки обнаруженные сервером или это ошибки обнаруженные торговым терминалом и заявка на сервер не уходит).
При этом происходит ли вызов функции оnATFOrder.
Спасибо 
Title: Re: Работа с заявками и сделками
Post by: ddd323 on 21.03.2011, 01:19:40
Снять заяку можно: trade_action::cancelOrder(id)
Проверял на интре - работает.
Правда разработчики до сих пор эту функцию не описали в документации, несмотря на обещание  ;)
http://www.transaq.ru/forum/index.php?topic=295.0
Title: Re: Работа с заявками и сделками
Post by: nikolz on 21.03.2011, 10:23:42
ddd323!
Спасибо, попробуем
Title: Re: Работа с заявками и сделками
Post by: Heller on 21.03.2011, 10:44:10
Стоп-заявки доступны только начиная с версии ATF 1.9. Просто подготавливаете хеш с требуемыми полями, и запихиваете его в команду trade_action::transact.

OnATFOrderErr должна срабатывать при всех ошибках.
Title: Re: Работа с заявками и сделками
Post by: nikolz on 21.03.2011, 13:14:50
Heller!
какое поле в хеше определяет парамтры для стоп-лоса и таке профита
Как заявка обычная в хеше отличается от стоп заявке (какое поле)
И еще как установить время в условной заявке по условию время ( в каком поле)
Спасибо
Title: Re: Работа с заявками и сделками
Post by: Heller on 21.03.2011, 13:42:10
В хеше наличие стоп-лоса или тейк-профита определяется наличием полей sl_activationprice и tp_activationprice соответственно. Если хотя бы одно из них есть - выставляется стоп. Если нет - обычная заявка.

Условие на время - это order["condition"] = COND_TIME

А в order["condvalue"] - само время условия.
Title: Re: Работа с заявками и сделками
Post by: AndreyD on 21.03.2011, 15:25:08
А можно на примере посмотреть как использовать sl_activationprice или tp_activationprice, хотя бы на самом простом  :)
Title: Re: Работа с заявками и сделками
Post by: Heller on 21.03.2011, 17:13:12
Code: [Select]
var stop = new_object("hash");
stop["operation"] = OP_SELL;
// Ниже параметры Stop Loss
stop["sl_activationprice"] = 2;
stop["sl_quantity"] = 1;
stop["sl_tpactivationprice"] = 1;
stop["sl_orderprice"] = 2.01;
// Ниже параметры Take Profit
stop["tp_activationprice"] = 3;
stop["tp_quantity"] = 1;
trade_action::transact(stop);
Title: Re: Работа с заявками и сделками
Post by: nikolz on 21.03.2011, 18:55:29
Heller!
Я так пробовал но время всегда показывает 00:00:05
и sl... параметры ставил но в таблице не увидел стоп-заявку а увидил лишь отложенную заявку
Вечером попробую снова.
Спасибо
Title: Re: Работа с заявками и сделками
Post by: nikolz on 21.03.2011, 19:10:32
Вернее условную
Title: Re: Работа с заявками и сделками
Post by: nikolz on 21.03.2011, 21:05:29
Heller!
1) Ваш пример стоп заявки
var stop = new_object("hash");
stop["operation"] = OP_SELL;
// Ниже параметры Stop Loss
stop["sl_activationprice"] = 2;
stop["sl_quantity"] = 1;
stop["sl_tpactivationprice"] = 1;
stop["sl_orderprice"] = 2.01;
// Ниже параметры Take Profit
stop["tp_activationprice"] = 3;
stop["tp_quantity"] = 1;
trade_action::transact(stop);

не отображается в таблице стоп-заявок . И вообще не видно никакой заявки. Может быть каких-нибудь параметров не хватает?
2) условная заявка с условием по цене работает нормально
3)условная по времени работает не правильно отображает время 00:00:05
Напишите для примера время 23:00.
Спасибо
Title: Re: Работа с заявками и сделками
Post by: nxz on 21.03.2011, 21:17:08
Стоп-заявки доступны только начиная с версии ATF 1.9. Просто подготавливаете хеш с требуемыми полями, и запихиваете его в команду trade_action::transact.

OnATFOrderErr должна срабатывать при всех ошибках.
Title: Re: Работа с заявками и сделками
Post by: Heller on 22.03.2011, 10:46:35
Приведите код целиком, чтобы было понятно, что не работает. Ну а вообще дело вероятно в том, что может быть например по инструменту просто другой уровень цен, например, хотя не понятно в этом случае почему ATF не ругается. В общем надо видеть код целиком.
Title: Re: Работа с заявками и сделками
Post by: nxz on 22.03.2011, 11:22:03
Так в Интре уже можно тестировать стоп-заявки или надо версию ATF 1.9?
Title: Re: Работа с заявками и сделками
Post by: Heller on 22.03.2011, 11:26:43
Стоп-заявки доступны только начиная с версии 1.9.
Title: Re: Работа с заявками и сделками
Post by: nxz on 22.03.2011, 11:35:32
Стоп-заявки доступны только начиная с версии 1.9.

Тогда где и как nikolz пытается проверить работу скрипта? Ведь в примере код работы со стоп-заявкой.
Title: Re: Работа с заявками и сделками
Post by: nikolz on 28.03.2011, 20:32:17
Уважаемые разработчики!
1) Прошу пояснить, где ошибка:
Написал вот такую условную заявку:
var order = new_object("hash");
order["operation"] = OP_SELL;
order["condition"] = COND_TIME;
order["quantity"] = 1;
order["condvalue"] ="23:00:00";
order["price"] = 1000;
trade_action::transact(order);
получил сообщение условие, время "00:00:05"
2) Прошу уточнить заявки с условиями типа sl_activationprice (стоп-заявки) нельзя задать в версии ATF 1.8. Верно?
Спасибо
Title: Re: Работа с заявками и сделками
Post by: nikolz on 29.03.2011, 20:48:30
Heller!
Что-то как-то Вы не решительно
поясняете вопросы с выставлением условных заявок.
Вернее сказать, держите паузу, т.е. воздерживаетесь от пояснений.
Или вопрос я не ясно изложил?
Или ответ еще почтальон до меня не донес?
А может Вы ответ с нарочным из Москвы в Самару отправили?
Спасибо
Title: Re: Работа с заявками и сделками
Post by: Heller on 30.03.2011, 11:31:46
condvalue должно быть числом в секундах от начала 1970 года. Его можно получить с помощью функции getTimeObject. Ваш случай будет выглядеть так:

order["condvalue"] = getTimeObject(23, 0, 0);
Title: Re: Работа с заявками и сделками
Post by: nikolz on 30.03.2011, 13:46:38
Благодарю за ответ
Еще вопросы.
1) Как указать число и время , например 1.05.2011 23:00:00
2) Можно ли указать условие по цене и по времени одновременно
3) можноли в версии 1.8 работать с операторами типа
stop["sl_activationprice"] = 2;
stop["sl_quantity"] = 1;
stop["sl_tpactivationprice"] = 1;
stop["sl_orderprice"] = 2.01;
и
stop["tp_activationprice"] = 3;
stop["tp_quantity"] = 1;

Спасибо

Title: Re: Работа с заявками и сделками
Post by: Heller on 30.03.2011, 15:21:53
1) Та же функция, только с большим количеством параметров: getTimeObject(час, минута, секунда, число, месяц, год)
2) По цене и по времени одновременно - нельзя.
3) Нет, работа со стоп-заявками доступна только начиная с версии 1.9
Title: Re: Работа с заявками и сделками
Post by: nxz on 24.04.2011, 13:07:47
Heller!
Каким образом в поле stop["tp_quantity"] = 1; при выставлении стоп-заявки из хэша указать что количество у меня в лотах, а не %.
Т.к в данном случае заявка попадает в таблицу "Стоп-заявок" в поле "TP:колличество" со значением 0,01%.
Title: Re: Работа с заявками и сделками
Post by: Heller on 25.04.2011, 13:20:39
nxz, это баг, поправили уже, в ближайшее время будет апдейт.
Title: Re: Работа с заявками и сделками
Post by: nxz on 27.04.2011, 17:54:07
nxz, это баг, поправили уже, в ближайшее время будет апдейт.
Heller!
А когда наступит "ближайшее время", может есть уже патчик, чтоб его можно было накатить на версию 1.10?
Title: Re: Работа с заявками и сделками
Post by: daytrader on 28.04.2011, 09:08:34
утречка всем. Хочу проконсультироватся по поводу трейла.
Пока примера кода не нашел, есть решение?

и к стати как обновиться тогда на версию выше чем 1.7?
Спасибо.
Title: Re: Работа с заявками и сделками
Post by: Heller on 28.04.2011, 09:49:55
nxz, там обнаружились еще баги в других местах, сейчас правим их и делаем новую версию. На днях.

daytrader, не очень понял вопроса. Вроде бы все уже довольно успешно программируют стопы на ATF - примеры тоже были на форуме.
Title: Re: Работа с заявками и сделками
Post by: daytrader on 28.04.2011, 13:52:01
все все по поводу трейла разобрался в соседней ветке. росто я сразу спросил везде где можно :)
UPD
Я правильно понимаю что на "сегодня" в количестве нужно указывать %? Это из сообщения nxz.

Ждем обновления.
Title: Re: Работа с заявками и сделками
Post by: Heller on 28.04.2011, 16:01:54
Да, на сегодня, увы, это так.
Title: Re: Работа с заявками и сделками
Post by: ddd323 on 15.05.2011, 15:48:10
Уважаемые разработчики, хотел бы поинтересоваться Вашими прогнозами по реализации функционала, описанного nikolz'ом в начале этой темы.
В частности:
1) функция выбора заявок, стоп-заявок и сделок в виде коллекции
по ключам таким как код клиента, код инструмента, статус(активные).
Чтобы не перебирать всю таблицу, а получить сразу выборку по клиенту активных заявок (стоп-заявок).

Это что:
1) - ближайшее время - а-ля 12 реализация ATF (пара месяцев)
2) или в четко прописанных планах, но не так быстро, т.к. базовый функционал массивов нужно расширить (в пределах полугода)
3) или это пока не приоритет (когда-то точно будет, но когда сами не знаете)?

Будете кстати делать аналогичные функции по сделкам? (на случай разрывов связи оба запроса по фильтрам (и по заявкам и по сделкам) будут очень полезны.)
Title: Re: Работа с заявками и сделками
Post by: Heller on 16.05.2011, 11:38:13
ddd323, это "1) - ближайшее время - а-ля 12 реализация ATF (пара месяцев)". Если успеем. Можем не успеть, но постараемся.
Title: Re: Работа с заявками и сделками
Post by: ddd323 on 16.05.2011, 13:16:33
Включая запрос-фильтр и по сделкам?
Title: Re: Работа с заявками и сделками
Post by: Heller on 16.05.2011, 16:58:09
Сделки после заявок будем делать видимо, либо чуть позже. По обстоятельствам.
Title: Re: Работа с заявками и сделками
Post by: nxz on 31.05.2011, 20:00:17
Heller!
Указываю в хэше стоп-заявки поле order["tp_level"] = 1; что ожидаемый уровень коррекции равен 1.
В таблице "Стоп-заявок" в поле "Уровень коррекции" пусто.
Что это баг или я что-то делаю не так?

Или в таблице "Стоп-заявок" нет столбца отображающего "ожидаемый уровень коррекции"
Title: Re: Работа с заявками и сделками
Post by: Heller on 01.06.2011, 10:17:43
Это поле доступно только когда стоп уже вошел в режим коррекции и оно показывает на каком уровне тейк профит как ожидается сработает. То есть доступно только при статусе стопа SS_TP_CORRECTION (сейчас обнаружил, что этого нет в документации - сейчас добавлю в раздел констант).
Title: Re: Работа с заявками и сделками
Post by: nxz on 08.03.2013, 14:14:15
Heller!
Указываю в хэше стоп-заявки поле ["tp_guardspread"] = 1;; что защитный спрэд равен 1.

Code: [Select]
var order1 = new_object("hash");
order1["operation"] = OP_SELL;
order1["tp_activationprice"] = pr+hi;
order1["tp_correction"] = 1; //Величина коррекции
order1["tp_guardspread"] = 1; //Защитный спрэд
order1["tp_quantity"] = lot;
order1["tp_guardtime"] = 1; //Защитное время в секундах
trade_action::transact(order1);

Но, когда заявка выставляется, то в параметрах стоп-заявки в поле "Защитный cпрэд" - пусто
В таблице поле "Спрэд", так же пусто.

(http://upload.akusherstvo.ru/thumbs/492342.jpg) (http://upload.akusherstvo.ru/image492342.jpg)

Почему поле "Спрэд" не заполняется из хэша и работает ли этот параметр не видно?

ATF 1.18
Title: Re: Работа с заявками и сделками
Post by: Heller on 11.03.2013, 07:24:58
Да, есть ошибка. В ближайшей сборке будет исправлено.

На данный момент при выставлении заявки поле tp_corretion вычитывается из поля "correction". Если хотите, можете временно использовать последнее (с новой сборке оно будет просто игнорироваться, так что как решение, которое будет работать и после обновления, можно использовать заполнение обоих полей).
Title: Re: Работа с заявками и сделками
Post by: nxz on 11.03.2013, 19:13:39
Heller, подскажите  какой параметр в хэше стоп-заявки убирает галочку "по рынку", я так понимаю, если эту галочку убрать, то при достижении величины коррекции, заявка будет выставлять не по рынку, а лимитированная с  ценой равной "tp_level".
Title: Re: Работа с заявками и сделками
Post by: Heller on 12.03.2013, 10:12:32
Для того, чтобы заявка выставлялась не по рынку, надо указать "tp_spread", если речб идет о Take Profit и "sl_orderprice" если речь о Stop Loss.

tp_level нельзя задавать руками - это расчетная величина, которую обычно вы можете видеть в таблице "стоп-заявки". Она рассчитывается как раз из величины коррекции + спрэд, по которому будет выставлена заявка при достижении этого уровня коррекции. А спрэд задается уже соответственно в tp_spread.
Title: Re: Работа с заявками и сделками
Post by: nxz on 12.03.2013, 18:40:03
Про "tp_spread" в документации нет ни слова, дополните пожалуйста.
Попробовал в хэше заявки указать "tp_spread", но заявка все равно выставляется по рынку.
Title: Re: Работа с заявками и сделками
Post by: Олег on 13.07.2013, 22:16:47
Про "tp_spread" в документации нет ни слова, дополните пожалуйста.
Попробовал в хэше заявки указать "tp_spread", но заявка все равно выставляется по рынку.

А все-таки кто-нибудь пробовал использовать по совету Хеллера этот недокументированный "tp_spread",  чтобы TP получался не рыночный, а лимитированный?
Достаточно ли просто написать "tp_spread = 0", чтобы заявка выставилась не по рынку а по цене активации тейк-профита?
Title: Re: Работа с заявками и сделками
Post by: nxz on 14.07.2013, 10:41:52
Достаточно ли просто написать "tp_spread = 0", чтобы заявка выставилась не по рынку а по цене активации тейк-профита?

Я тестировал этот вариант в Интре (1.18) - не работало, разработчики обещали исправить, но Интра на данный момент осталась в старой версии с ATF 1.18

Так что ждем обновлений.
Title: Re: Работа с заявками и сделками
Post by: Олег on 14.07.2013, 18:53:21
Достаточно ли просто написать "tp_spread = 0", чтобы заявка выставилась не по рынку а по цене активации тейк-профита?

Я тестировал этот вариант в Интре (1.18) - не работало, разработчики обещали исправить, но Интра на данный момент осталась в старой версии с ATF 1.18

Так что ждем обновлений.

У меня Интра тоже 1.18, боевая-то уже 1.19.  Получается, что там должно работать. Но я тут совсем недавно торговал роботом и там как раз пытался использовать эту фишку (выставление TP не по рынку),  но оно не работало, все равно TP выставлялся по рынку. Потому-то и поднял этот вопрос.

Но вроде бы "tp_spread = 0" я там тогда еще не писал (не знал про это).
Сегодня воскресенье, вчера была суббота,  торгов нет,  попробовать нет возможности.
Может кто-нибудь уже пробовал?