Получить последний стоп-ордер

Страницы: 1
RSS
Получить последний стоп-ордер
 
Доброго времени суток. Увы, ордера, полученные посредством getItem("stop_orders", i) идут по порядку начиная с первого и до последнего. В итоге чтобы получить последний ордер мне нужно как-то получить все стопы, пересчитать их и только затем уже ловить последний из них. Какие-то более цивилизованные методы существуют? Возможно я просто проморгал что-то в ФАКе. Спасибо.
 
Не совсем понятна задача: требуется среди имеющихся стопов найти последний или при появлении нового стопа (а он и будет на помент появления последним) как-то на это отреагировать?
Если первое - то только так, как вы написали.
Если второе - то просто добавить в скрипт обработчик OnStopOrder
 
Цитата
WennY написал:
Доброго времени суток. Увы, ордера, полученные посредством getItem("stop_orders", i) идут по порядку начиная с первого и до последнего. В итоге чтобы получить последний ордер мне нужно как-то получить все стопы, пересчитать их и только затем уже ловить последний из них. Какие-то более цивилизованные методы существуют? Возможно я просто проморгал что-то в ФАКе. Спасибо.
Есть как минимум два способа решения этой задачи.
1) Каждый раз делать полный перебор - поиск по таблице  (это Вы написали) - самый простой и самый затратный способ.
Самый затратный способ. Особенно, если стопы постоянно переставляются.  
--------------------------------
2) Использование OnStopOrder.
В этом случае Вы через OnStopOrder. получите новый стоп.
Но если запустите свой скрипт повторно при наличии активных  стопов,
то придется применить способ 1, так как OnStopOrder уже не сработает на существующие и ранее принятые квиком стопы.
========================
В том случае,
когда Вы не пользуете колбеки  (например при создании робота  в индикаторе) возможен лишь способ 1 из известных.
============================.
Рассмотрим мой алгоритм решения данной задачи. Этот алгоритм я разработал еще до внедрения VM LUA в КВИК и использовал его в QLUA.
Он в десятки и сотни раз повышает быстродействие роботов , работающих со следящими стопами на тиках.
В некоторых случаях без этого алгоритма Ваш робот просто перестанет работать, так как загрузит процессор переборам тысяч мертвых стопов.
-------------------------------
Пользуйтесь:
---------------------------------
3)  Алгоритм Николая Камынина(kamnik@mail.ru):
Полный перебор таблицы стопов делаем один раз при запуске скрипта.
В процессе этого перебора мы запоминаем в таблице (назовем ее списком активных стопов) номера строк активных стопов из таблицы стопов.
----------------------------------------
Таким образом мы получаем список строк с активными стопами.
Если у нас всегда лишь один активный стоп, то в списке будет лишь одна запись.
--------------------------------
Теперь посмотрим, каким образом мы будем работать дальше.
-----------------------------------
Чтобы проверить состояние последней стоп заявки мы всегда  читаем из таблицы стопов строку по ее номеру в списке.
-----------------------------------
Т е полный перебор мы делаем всего один раз при запуске.  после этого нет никаких переборов вообще.
----------------------
Кроме того, необходимо решить задачу обнаружения выставления новой стоп заявки.
---------------------------------------
Эта задача решается путем сравнения числа строк таблицы стоп-заявок на предыдущем тике и на текущем.
Если выставлена новая заявка, например вместо снятой или передвинутой, то число строк в таблице стоп заявок увеличится и это есть признак что есть новая стоп заявка , а ее номер строки определяется через число строк таблицы.
------------------------
Если активных стопов много, то мы периодически  проверяем по нашему списку их активность и  удаляем из списка неактивные.
-----------------------------------
Таким образом получаем следующее преимущество перед полным перебором:
Как правило  роботы  со следящими стопами порождают тысячи стоп-заявок,
которые все забивается в таблицу стоп-заявок.
при полном переборе мы на каждом тике перебираем эти тысячи.
В моем алгоритме такой перебор делается лишь при запуске робота.
В результате данный алгоритм в десятки и сотни раз быстрее полного перебора.
------------------------------------------------
На этом лекция на тему: "Как создать умного робота, который никогда не умрет"   завершена.
--------------------------
Всем спасибо, все свободны.
 
Опечатка :
Этот алгоритм я  разработал еще до внедрения VM LUA в КВИК и использовал его в QPILE.
 
Николай, скажите, пожалуйста, какие явные преимущества имеет робот, работающий именно "через" СТОП-приказы?
Страницы: 1
Читают тему (гостей: 1)
Наверх