Transaq
СБО "Transaq" => Подсистема ATF => Topic started by: nikolz on 16.03.2011, 14:48:14
-
Добрый день!
Как следует из документации информацию о заявках и сделках получаем
функциями Get...(id).
Вопрос :
Как получить размер соответствующей таблицы (диапазон id),
чтобы организовать просмотр всех заявок, стоп-заявок и сделок клиента.
Спасибо
-
Пока организовать этого не получится - только по событиям onATFOrder/onClientOrder. Но добавим такие функции, раз спрашивают.
-
Heller!
Еще интересует
1)функция выбора заявок, стоп-заявок и сделок в виде коллекции
по ключам таким как код клиента, код инструмента, статус(активные).
Чтобы не перебирать всю таблицу, а получить сразу выборку по клиенту активных заявок (стоп-заявок).
2) Функция изменения параметра ордера.
Например , для активной стоп-заявки указываем "установить новую цену активации" и заявка автоматически установится на новую цену c неизменными остальными параметрами аналогично для take-profit
спасибо
-
Функции выбора разных видов заявок по фильтрам будут сделаны. Насчет изменения параметров стоп-заявок - это не поддерживается сервером. То есть можно выставить новый стоп и снять старый последовательно, но всегда будет период проскальзывания. Насчет того, будет ли полноценная замена стоп-заявок пока сказать не могу.
-
Heller!
Какие функции ATF позволяют выставит стоп-заявку?
Дайте ссылку на описание и пример.
Спасибо
-
Heller!
Как следует из документации отменить одну заявку по ее id нельзя.
Можно только либо все на продажу, либо все на покупку, либо все.
Верно?
Спасибо
-
Heller!
Поясните плиз когда вызывается функция onATFOrderErr
на какие ошибки реагирует данная функция (ошибки обнаруженные сервером или это ошибки обнаруженные торговым терминалом и заявка на сервер не уходит).
При этом происходит ли вызов функции оnATFOrder.
Спасибо
-
Снять заяку можно: trade_action::cancelOrder(id)
Проверял на интре - работает.
Правда разработчики до сих пор эту функцию не описали в документации, несмотря на обещание ;)
http://www.transaq.ru/forum/index.php?topic=295.0
-
ddd323!
Спасибо, попробуем
-
Стоп-заявки доступны только начиная с версии ATF 1.9. Просто подготавливаете хеш с требуемыми полями, и запихиваете его в команду trade_action::transact.
OnATFOrderErr должна срабатывать при всех ошибках.
-
Heller!
какое поле в хеше определяет парамтры для стоп-лоса и таке профита
Как заявка обычная в хеше отличается от стоп заявке (какое поле)
И еще как установить время в условной заявке по условию время ( в каком поле)
Спасибо
-
В хеше наличие стоп-лоса или тейк-профита определяется наличием полей sl_activationprice и tp_activationprice соответственно. Если хотя бы одно из них есть - выставляется стоп. Если нет - обычная заявка.
Условие на время - это order["condition"] = COND_TIME
А в order["condvalue"] - само время условия.
-
А можно на примере посмотреть как использовать sl_activationprice или tp_activationprice, хотя бы на самом простом :)
-
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);
-
Heller!
Я так пробовал но время всегда показывает 00:00:05
и sl... параметры ставил но в таблице не увидел стоп-заявку а увидил лишь отложенную заявку
Вечером попробую снова.
Спасибо
-
Вернее условную
-
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.
Спасибо
-
Стоп-заявки доступны только начиная с версии ATF 1.9. Просто подготавливаете хеш с требуемыми полями, и запихиваете его в команду trade_action::transact.
OnATFOrderErr должна срабатывать при всех ошибках.
-
Приведите код целиком, чтобы было понятно, что не работает. Ну а вообще дело вероятно в том, что может быть например по инструменту просто другой уровень цен, например, хотя не понятно в этом случае почему ATF не ругается. В общем надо видеть код целиком.
-
Так в Интре уже можно тестировать стоп-заявки или надо версию ATF 1.9?
-
Стоп-заявки доступны только начиная с версии 1.9.
-
Стоп-заявки доступны только начиная с версии 1.9.
Тогда где и как nikolz пытается проверить работу скрипта? Ведь в примере код работы со стоп-заявкой.
-
Уважаемые разработчики!
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. Верно?
Спасибо
-
Heller!
Что-то как-то Вы не решительно
поясняете вопросы с выставлением условных заявок.
Вернее сказать, держите паузу, т.е. воздерживаетесь от пояснений.
Или вопрос я не ясно изложил?
Или ответ еще почтальон до меня не донес?
А может Вы ответ с нарочным из Москвы в Самару отправили?
Спасибо
-
condvalue должно быть числом в секундах от начала 1970 года. Его можно получить с помощью функции getTimeObject. Ваш случай будет выглядеть так:
order["condvalue"] = getTimeObject(23, 0, 0);
-
Благодарю за ответ
Еще вопросы.
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;
Спасибо
-
1) Та же функция, только с большим количеством параметров: getTimeObject(час, минута, секунда, число, месяц, год)
2) По цене и по времени одновременно - нельзя.
3) Нет, работа со стоп-заявками доступна только начиная с версии 1.9
-
Heller!
Каким образом в поле stop["tp_quantity"] = 1; при выставлении стоп-заявки из хэша указать что количество у меня в лотах, а не %.
Т.к в данном случае заявка попадает в таблицу "Стоп-заявок" в поле "TP:колличество" со значением 0,01%.
-
nxz, это баг, поправили уже, в ближайшее время будет апдейт.
-
nxz, это баг, поправили уже, в ближайшее время будет апдейт.
Heller!
А когда наступит "ближайшее время", может есть уже патчик, чтоб его можно было накатить на версию 1.10?
-
утречка всем. Хочу проконсультироватся по поводу трейла.
Пока примера кода не нашел, есть решение?
и к стати как обновиться тогда на версию выше чем 1.7?
Спасибо.
-
nxz, там обнаружились еще баги в других местах, сейчас правим их и делаем новую версию. На днях.
daytrader, не очень понял вопроса. Вроде бы все уже довольно успешно программируют стопы на ATF - примеры тоже были на форуме.
-
все все по поводу трейла разобрался в соседней ветке. росто я сразу спросил везде где можно :)
UPD
Я правильно понимаю что на "сегодня" в количестве нужно указывать %? Это из сообщения nxz.
Ждем обновления.
-
Да, на сегодня, увы, это так.
-
Уважаемые разработчики, хотел бы поинтересоваться Вашими прогнозами по реализации функционала, описанного nikolz'ом в начале этой темы.
В частности:
1) функция выбора заявок, стоп-заявок и сделок в виде коллекции
по ключам таким как код клиента, код инструмента, статус(активные).
Чтобы не перебирать всю таблицу, а получить сразу выборку по клиенту активных заявок (стоп-заявок).
Это что:
1) - ближайшее время - а-ля 12 реализация ATF (пара месяцев)
2) или в четко прописанных планах, но не так быстро, т.к. базовый функционал массивов нужно расширить (в пределах полугода)
3) или это пока не приоритет (когда-то точно будет, но когда сами не знаете)?
Будете кстати делать аналогичные функции по сделкам? (на случай разрывов связи оба запроса по фильтрам (и по заявкам и по сделкам) будут очень полезны.)
-
ddd323, это "1) - ближайшее время - а-ля 12 реализация ATF (пара месяцев)". Если успеем. Можем не успеть, но постараемся.
-
Включая запрос-фильтр и по сделкам?
-
Сделки после заявок будем делать видимо, либо чуть позже. По обстоятельствам.
-
Heller!
Указываю в хэше стоп-заявки поле order["tp_level"] = 1; что ожидаемый уровень коррекции равен 1.
В таблице "Стоп-заявок" в поле "Уровень коррекции" пусто.
Что это баг или я что-то делаю не так?
Или в таблице "Стоп-заявок" нет столбца отображающего "ожидаемый уровень коррекции"
-
Это поле доступно только когда стоп уже вошел в режим коррекции и оно показывает на каком уровне тейк профит как ожидается сработает. То есть доступно только при статусе стопа SS_TP_CORRECTION (сейчас обнаружил, что этого нет в документации - сейчас добавлю в раздел констант).
-
Heller!
Указываю в хэше стоп-заявки поле ["tp_guardspread"] = 1;; что защитный спрэд равен 1.
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
-
Да, есть ошибка. В ближайшей сборке будет исправлено.
На данный момент при выставлении заявки поле tp_corretion вычитывается из поля "correction". Если хотите, можете временно использовать последнее (с новой сборке оно будет просто игнорироваться, так что как решение, которое будет работать и после обновления, можно использовать заполнение обоих полей).
-
Heller, подскажите какой параметр в хэше стоп-заявки убирает галочку "по рынку", я так понимаю, если эту галочку убрать, то при достижении величины коррекции, заявка будет выставлять не по рынку, а лимитированная с ценой равной "tp_level".
-
Для того, чтобы заявка выставлялась не по рынку, надо указать "tp_spread", если речб идет о Take Profit и "sl_orderprice" если речь о Stop Loss.
tp_level нельзя задавать руками - это расчетная величина, которую обычно вы можете видеть в таблице "стоп-заявки". Она рассчитывается как раз из величины коррекции + спрэд, по которому будет выставлена заявка при достижении этого уровня коррекции. А спрэд задается уже соответственно в tp_spread.
-
Про "tp_spread" в документации нет ни слова, дополните пожалуйста.
Попробовал в хэше заявки указать "tp_spread", но заявка все равно выставляется по рынку.
-
Про "tp_spread" в документации нет ни слова, дополните пожалуйста.
Попробовал в хэше заявки указать "tp_spread", но заявка все равно выставляется по рынку.
А все-таки кто-нибудь пробовал использовать по совету Хеллера этот недокументированный "tp_spread", чтобы TP получался не рыночный, а лимитированный?
Достаточно ли просто написать "tp_spread = 0", чтобы заявка выставилась не по рынку а по цене активации тейк-профита?
-
Достаточно ли просто написать "tp_spread = 0", чтобы заявка выставилась не по рынку а по цене активации тейк-профита?
Я тестировал этот вариант в Интре (1.18) - не работало, разработчики обещали исправить, но Интра на данный момент осталась в старой версии с ATF 1.18
Так что ждем обновлений.
-
Достаточно ли просто написать "tp_spread = 0", чтобы заявка выставилась не по рынку а по цене активации тейк-профита?
Я тестировал этот вариант в Интре (1.18) - не работало, разработчики обещали исправить, но Интра на данный момент осталась в старой версии с ATF 1.18
Так что ждем обновлений.
У меня Интра тоже 1.18, боевая-то уже 1.19. Получается, что там должно работать. Но я тут совсем недавно торговал роботом и там как раз пытался использовать эту фишку (выставление TP не по рынку), но оно не работало, все равно TP выставлялся по рынку. Потому-то и поднял этот вопрос.
Но вроде бы "tp_spread = 0" я там тогда еще не писал (не знал про это).
Сегодня воскресенье, вчера была суббота, торгов нет, попробовать нет возможности.
Может кто-нибудь уже пробовал?