проверка статуса стопзаявки по битовым флагам

Страницы: 1
RSS
проверка статуса стопзаявки по битовым флагам, доступ к таблице "stop_orders"
 
Добрый день,

вот такой код

Total = getNumberOf("stop_orders")
for Index = 0, Total - 1 do
OrderNumber = getItem("stop_orders",Index).order_num +0

перебирает стопзаявки в таблице далее желательно найти среди них активную. Для этого изобрёл во такой код

if bit.band(getItem("stop_orders",Index)["flags"],1)>0 then
message("заявка  активна",1)
end

пытался обратиться к заявке не по индексу, а по номеру OrderNumber, полученному при переборе, но ничего не получается. А каждый раз перебирать не хочется.
Как написать обращение к стопзаявке по её номеру с проверкой статуса?

Спасибо.
 
O! Сам нашёл. Пытался передать в числовой тип таблицу с параметрами стопордера )))
Нужно  получать значения стопордера из "stop_orders" в какую-нибудь таблицу..

any = { }
Total = getNumberOf("stop_orders")
for Index = 0, Total - 1 do
any = getItem("stop_orders",Index)
if bit.band(any.flags, 1) > 0
OrderNumber =  any.order_num
message("Стопзаявка  № = "..tostring(OrderNumber).."  активна",1)
end
end

В понедельник попробую, если квик заработает..
 
немного поправим:
------------------
for Index = 0,getNumberOf("stop_orders") - 1 do  
local any = getItem("stop_orders",Index)
if any and bit.band(any.flags, 1) > 0  then
local OrderNumber =  any.order_num
message("Стопзаявка  № = "..tostring(OrderNumber).."  активна",1)
end
end
 
Теперь я пытаюсь снять активную заявку и вызываю вот эту функцию

function KILL_STOP_ORDER(_MARKET, _TICKER, _ACCOUNT, _NUMBER)
TRANS_ID = TRANS_ID + 1
t =
  {
     ["TRANS_ID"]= tostring(TRANS_ID),
     ["ACCOUNT"] = tostring(_ACCOUNT),
     ["CLASSCODE"] = tostring(_MARKET),
     ["SECCODE"] = tostring(_TICKER),
     ["ACTION"] = "KILL_ORDER",
     ["ORDER_KEY"] = tostring(_NUMBER)
  }
res=sendTransaction(t)
end

Квик мне отвечает в окне сообщений, что

"Вы не можете снять данную заявку"

Вручную снимается.. Что тут такое?

Спасибо.
 
Оказывается, что тут на форуме в ответах "продвинутых" можно набраться ошибок, которые поставят вас в тупик.. что и случилось. Неработающий  код был собран из ответов на вопросы заданные в других темах. Там я почерпнул ложное знание о параметрах, передаваемых в транзакцию для снятия стопзаявок.

Привожу здесь правильный код, что бы другие могли это найти.
Для снятия стопа в транзакции важно правильно заполнить два поля

["ACTION"] = "KILL_STOP_ORDER",
["STOP_ORDER_KEY"] = tostring(_NUMBER)

...
 
Цитата
Роман Романов написал:
Там я почерпнул ложное знание о параметрах, передаваемых в транзакцию для снятия стопзаяво

Роман, но Вы же сами ничего не говорили про стоп заявки:

Цитата
Роман Романов написал:
Теперь я пытаюсь снять активную заявку и вызываю вот эту функцию

Вот и произошел конфуз.
В QUIK стоп заявки и обычные заявки снимаются по разному.
Так что "продвинутых" можно не ругать
 
Цитата
Роман Романов написал:
["STOP_ORDER_KEY"] = tostring(_NUMBER)
Имхо, надежней
Код
["STOP_ORDER_KEY"] = string.format("%d", _NUMBER)
т.к. tostring имеет обыкновение возвращать числа вещественной форме 0.00000
Страницы: 1
Читают тему
Наверх