Transaq

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

Title: заявка отменена выставляем новую
Post by: daytrader on 10.08.2011, 14:14:50
что-то у меня никак не выходит переставить заявку.
проверить это как-то быстро невозможно, так что вот код.
id заявки у меня имеется

Code: [Select]
var order = getOrder(order_id);
var status = order["status"];
if (status != OS_INACTIVE){ // если статус заявки понятен
if (status == OS_CANCELLED) {
if (order["operation"] == OP_SELL) {
trade_action::sell(order["quantity"], ::lots,close-slip);
}
if (order["operation"] == OP_BUY) {
trade_action::buy(order["quantity"], ::lots,close+slip);
}
}
}

тут как-то трижды биржа снимала мои заявки (я так и не понял почему) но новые не переставлялись сразу же и вообще никак.

Код находится в calc ()

UPD
думаю что необходимо так же проверять на: OS_DENIED, OS_REJECTED,
OS_REMOVED, OS_REFUSED.
думаю поэтому и не выставлялись - не все условия были учтены.
Title: Re: заявка отменена выставляем новую
Post by: Heller on 11.08.2011, 10:48:48
Не вполне понятно что у вас происходит и что вы хотите сделать, да и код приведен не полностью - может быть ошибка и не в этом фрагменте, но в целом пока предварительно могу высказать следующие соображения:

1) Если заявка отклоняется брокером или биржей, то статус у нее будет OS_REJECTED или OS_DENIED. OS_CANCELLED - это статус заявки для случая, если вы сами сняли заявку.

2) Не понятно зачем вы делаете это в calc(). Логичнее делать это в onATFOrder/onClientOrder - эта функция вызывается при любом изменении статуса заявки.

3) Чтобы понять причину, по которой снимаются ваши заявки, найдите их в таблице заявок в терминале, и просто посмотрите их статус - там должна быть указана причина снятия заявки.

4) Не понятно зачем вы делаете дополнительную проверку на OS_INACTIVE. Если у вас статус заявки OS_CANCELLED, то он в любом случае не будет OS_INACTIVE - вы просто делаете лишние проверки.
Title: Re: заявка отменена выставляем новую
Post by: daytrader on 12.08.2011, 09:50:53
по поводу "зачем в calc" спасибо что подсказали, но я как-то все в калк пишу.

кенсел действительно не нужен. Так что я на || поставил все остальные.

Обычно биржа снимает что то ей не нравится - например цена. Хотя ни разу еще не было глюков с ценой.
Title: Re: заявка отменена выставляем новую
Post by: Heller on 12.08.2011, 10:08:59
Вы имеете ввиду биржа именно снимает уже выставленную заявку, или именно отклоняет ее и не хочет выставлять? Посмотрите в статус заявки в соответствующей таблице в терминале - это должно прояснить ситуацию.
Title: Re: заявка отменена выставляем новую
Post by: daytrader on 12.08.2011, 10:19:01
в тех что я смотрел была "снята" но я как-то не посмотрел причину - звонил брокеру - сказали что цена вне лимита - но в той же таблице цена была указана именно в лимите. Вот я и думаю может у брокера был сбой?

Поэтому хочу сразу на все отфильтровать и переставлять заявку, но уже по текущим рыночным ценам естественно.

но на ваш вопрос не отвечу - так как в таблице на тот момент ничего не нашел, а сейчас пока нет отмененных заявок
Title: Re: заявка отменена выставляем новую
Post by: Heller on 12.08.2011, 11:03:46
Ну вообще именно биржа заявки не снимает (лишь в конце торговой сессии) - это делает брокер. Но в любом случае ситуация странна и нетипичная - когда в следующий раз возникнет, посмотрите все же статус заявки и причину снятия. Должно стать понятнее что происходит.
Title: Re: заявка отменена выставляем новую
Post by: daytrader on 12.08.2011, 15:44:44
вот кажется была снята заявка - но не могу найти причину в таблице...

и еще - как писать правильно в кавычках или нет

if (status == OS_MATCHED)

или

if (status == "OS_MATCHED")
Title: Re: заявка отменена выставляем новую
Post by: nxz on 12.08.2011, 19:59:01
и еще - как писать правильно в кавычках или нет

if (status == OS_MATCHED)

или

if (status == "OS_MATCHED")

если эти коды могут сменниться, то я должен написать так
Code: [Select]
if (stz == OS_MATCHED ) 
Да, это оптимально.

http://www.transaq.ru/forum/index.php?topic=487.0 (http://www.transaq.ru/forum/index.php?topic=487.0)
Title: Re: заявка отменена выставляем новую
Post by: nikolz on 13.08.2011, 11:35:54
вот кажется была снята заявка - но не могу найти причину в таблице...

и еще - как писать правильно в кавычках или нет

if (status == OS_MATCHED)

или

if (status == "OS_MATCHED")
Надо писать так:
if (status == OS_MATCHED)
status - это код состояния,
OS_MATCHED - это имя константы

Title: Re: заявка отменена выставляем новую
Post by: Heller on 15.08.2011, 10:01:50
вот кажется была снята заявка - но не могу найти причину в таблице...

Кликните дважды на заявку в таблице заявок, и нажмите на кнопку "Статус".