Как отловить когда сработал стоп

Страницы: 1
RSS
Как отловить когда сработал стоп
 
Бьюсь уже вторую неделю и как то без успешно.

Логика такая.
Выставляется заявка на продажу, после сразу перевыставляется стоп(если он стоял ранее).

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

Как (пере)выставляется стоп:
При выставлении стопа, стопу присваивается уникальный trans_id который отслеживается при выставлении или изменении статуса заявок.
В OnStopOrder я вызываю свою функцию updateOrderNumber в  которой сравниваю trans_id который пришел с квичка и присваиваю номер заявки stopClass.array_stop.order_num

Всё бы хорошо, но я не могу отловить сам результат выполнения стоп заявки, когда стоп исполнился.
В моём понимании когда срабатывает стоп, создаётся новая заявка с новым номером заявки которая не равна номеру стопа.
Хотелось бы увидеть схему OnStopOrder -> ...  -> ...  -> здесь признак того что стоп сработал.

Стопы у меня перевыставляемые, как я писал выше и у меня происходит следующая ошибка, которая очень критичная.
Приходит информация о срабатывании стопа(заявки ///) -> стоп не снимается потому-что в информации об изменении статуса приходит изменённая информация не соответствующая number и так далее. в итоге робот перевыставляет стоп(потому что видит, что произошла продажа, но заявки висят не снятые), пока не упрётся в лимит по деньгам (лол) .
Не могу понять куда копать...

Как и где (OnOrder, OnStopOrder, OnTrade ), по какому окончательному признаку понять что стоп заявка поменяла статус?
 
Редактировать пост выше нельзя (( Дополню здесь

Корректно ли будет не выставлять стоп-заявки и помечать, что стоп в работе если
OnStopOrder flags == 15 (Идет расчет минимума-максимума) ??
 
Руководство пользователя интерпретатора языка Lua раздел 5.3. Флаги таблицы Стоп заявки

bit 0 Заявка активна, иначе не активна.

бит 1 Заявка снята. Если не установлен и значение бит0 равно 0, значит исполнена.

Сам пока не использовал, но думаю, копать надо здесь.
Дальше где-то откопать номер выставленной лимитированной заявки.
 
Цитата
xorax написал:
Редактировать пост выше нельзя (( Дополню здесь

Корректно ли будет не выставлять стоп-заявки и помечать, что стоп в работе если
OnStopOrder flags == 15 (Идет расчет минимума-максимума) ??
Когда идет расчет минимума максимума, номер заявки неизменный, её можно изменить запросто, много раз вручную это делал. При изменении заявки в таблице стоп заявок она меняет цвет с зеленого на красный (из расчета переходит в обычное состояние).
 
Цитата
Демидков Юрий написал:
Руководство пользователя интерпретатора языка Lua раздел 5.3. Флаги таблицы Стоп заявки

bit 0 Заявка активна, иначе не активна.

бит 1 Заявка снята. Если не установлен и значение бит0 равно 0, значит исполнена.

Сам пока не использовал, но думаю, копать надо здесь.
Дальше где-то откопать номер выставленной лимитированной заявки.
Вы не внимательно прочитали мои сообщения. У стоп-заявки много статусов, такие как расчёт цены, выставления лимитной заявки после расчёта цены и так далее.
Мне надо понять где правильнее отслеживать состояние и какое состояние является корректным при начале отработки стоп-заявки...

p.s. Слижу за Вашим творчеством, подписан давно на Ваш канал... Молодцы
 
Цитата
Демидков Юрий написал:
Цитата
xorax написал:
Редактировать пост выше нельзя (( Дополню здесь

Корректно ли будет не выставлять стоп-заявки и помечать, что стоп в работе если
OnStopOrder flags == 15 (Идет расчет минимума-максимума) ??
Когда идет расчет минимума максимума, номер заявки неизменный, её можно изменить запросто, много раз вручную это делал. При изменении заявки в таблице стоп заявок она меняет цвет с зеленого на красный (из расчета переходит в обычное состояние).
Стоп-заявка и лимитная заявка которая выставляется после расчёта цены они разные и логично что они должны иметь разный номер
 
Цитата
Демидков Юрий написал:
Дальше где-то откопать номер выставленной лимитированной заявки.
Пример для таблицы заявок.
linkedorder - в таблице стоп-заявок и есть номер лимитки.
Код
function CheckOrders() -- Функция проверяет таблицу заявок
   local gNOf = getNumberOf("orders")-1 -- Номер последней строки в таблице заявок
   for i = NumLineTO+1, gNOf, 1 do -- Перебирает строки в таблице заявок начиная от NumLineTO+1
      local orders = getItem("orders",i) -- Параметры заявки

      ...
   
      local num = 0 -- Номер заявки
      if bit.test(orders.flags, 0) then -- Заявка активна
         num = orders.order_num -- Контроль заявки
      end
      local stopNum = orders.linkedorder -- Номер стоп-заявки

      ...

   end
end
 
Цитата
Константин Рейм написал:
Цитата
Демидков Юрий написал:
Дальше где-то откопать номер выставленной лимитированной заявки.
Пример для таблицы заявок.
linkedorder - в таблице стоп-заявок и есть номер лимитки.
Код
   function   CheckOrders ()  -- Функция проверяет таблицу заявок 
    local  gNOf  =   getNumberOf ( "orders" ) -  1   -- Номер последней строки в таблице заявок 
    for  i  =  NumLineTO +  1 , gNOf,  1   do   -- Перебирает строки в таблице заявок начиная от NumLineTO+1 
       local  orders  =   getItem ( "orders" ,i)  -- Параметры заявки 

       .. .
   
       local  num  =   0   -- Номер заявки 
       if   bit.test (orders.flags,  0 )  then   -- Заявка активна 
         num  =  orders.order_num  -- Контроль заявки 
       end 
       local  stopNum  =  orders.linkedorder  -- Номер стоп-заявки 

       .. .

    end 
 end 
  
В какой лимитной заявке?
Когда выставляется стоп, ни какой лимитной заявки нет. Перечитайте мои сообщения.
Лимитная заявка выставляется только после того, как  условия выполнились согласно указанным условиям  в стоп заявке или в тейке.

Вопрос наверное больше к сапорту
Прикинул, мне надо видимо, согласно моим условиям, момент когда цена подошла к стопу и стоп-заявка именно рассчитывает, что стоп сработал и идёт расчёт цены где поставить лимитную заявку.
В каком callback методе API должен прийти расчёт с данными по заявке? и будут ли там присутствовать номер и id транкзакции?
Не может ли произойти ситуация когда информация о расчёте цены придёт позже того, как заявка на продажу/покупку по стопу выставлена и исполнена или просто же выставлена?
Лимитка которая выставляется при исполнения стоп приказа она имеет тот же trans_id, что и стоп приказ?
 
Цитата
xorax написал:
Перечитайте мои сообщения.
А может ответы на ваши вопросы внимательнее изучать?)))
Цитата
В какой лимитной заявке? Когда выставляется стоп, ни какой лимитной заявки нет. Лимитная заявка выставляется только после того, как  условия выполнились согласно указанным условиям  в стоп заявке или в тейке.
Все верно. Теперь нам нужно
Цитата
Всё бы хорошо, но я не могу отловить сам результат выполнения стоп заявки, когда стоп исполнился.
В моём понимании когда срабатывает стоп, создаётся новая заявка с новым номером заявки которая не равна номеру стопа.
Хотелось бы увидеть схему OnStopOrder -> ...  -> ...  -> здесь признак того что стоп сработал.
Сработала стоп-заявка - нужно это действие отследить, так?
В таблице стоп-заявок есть поля: Номер и Номер заявки. Поле Номер - это номер нашей стоп-заявки, поле Номер заявки - это номер лимитной заявки - данное поле при выставлении стоп-заявки пустое, как только наша стоп-заявка превратится в лимитную - это поле заполнится - номер лимитной заявки - все.
Страницы: 1
Читают тему (гостей: 1)
Наверх