Функция KILL ALL ORDERS в торговом роботе
Существует мнение, что транзакции DELETE ALL, или на языке QPILE «KILL_ALL_ORDERS», негативно влияют на скорость работы торговой системы. В единичном случае это как комар для слона, но когда масса клиентов посылает подобную транзакцию возникают тормоза. Я не буду вдаваться в подробности этого процесса, тем более что существует очень простой и «правильный» способ отменить выставленные и активные заявки выборочно, как бы стреляя снайперской винтовкой, нежели палить из пушки по воробьям. Собственно код:
Код на QPILE доступен только зарегистрированным пользователям.
Используя эту функцию мы одновременно не тормозим систему, и действуем элегантно, удаляя лишь необходимое. Функцию можно скачать.
Спасибо!
Предлагайте темы, которые надо рассмотреть и доработать. Составим нашу библиотеку функций.
Валерий Reply:
мая 2, 2009 at 15:22
Нужна функция пересечения на графике cross возвращает значение 1 если пересекла и 0 если нет. Направление пересечения сверху вниз cross (C,Var1)или снизу вверх cross (var1,C). Можно написать, но хотелось бы потверждение правильности моих мыслей. Причем должна быть универсальная
Евгений Reply:
мая 2, 2009 at 18:43
Ничего не понял... Кто кого пересекает?
График — это последовательность цифр (читайте статью www.hirobot.ru/2009/04/in...orgovyx-robotax/), и пересечение, есть ни что иное как сравнение двух последовательных значений двух потоков данных. Например на предыдущем баре цена=10, скользящая средняя=11, а на текущем цена=11, а скользящая средняя=10, вот вам и пересечение.
Уточните вопрос.
Валерий Reply:
мая 3, 2009 at 14:50
все верно
вот пример из метастока
www.meta-formula.com/meta...ss-function.html
Валерий Reply:
мая 3, 2009 at 15:18
Описание на русском
СИНТАКСИС: cross ( DATA ARRAY 1, DATA ARRAY 2 )
ФУНКЦИЯ: Возвращает значение «+1» в день, когда DATA ARRAY 1 пересекает вверх DATA ARRAY 2. В противном случае возвращается значение «0». Если необходимо выяснить, когда DATA ARRAY 1 пересекает DATA ARRAY 2 вниз, используйте формулу «cross ( DATA ARRAY 2, DATA ARRAY 1)»
ПРИМЕР: cross ( close, mov (close,9,e) ) — возвращает «1» при пересечении ценой закрытия вверх 9-дневную экспоненциальную скользящую среднюю.
Евгений Reply:
мая 3, 2009 at 17:10
Насколько эта функция должна быть универсальна? Если речь идет только о пересечении OHLC и скользящей средней с какими-либо параметрами, то написать можно. В этом случае данные МА берутся не из графика, а рассчитываются внутри робота. Если же Вы хотите чтоб универсальность была при списке индикаторов — то такое тоже можно сделать, но это как строить ядерный реактор, чтоб на контуре охлаждения сосиски варить
User Reply:
июня 25, 2009 at 15:34
Евгений, что то до конца не понятно, возможна ли функция Cross (MOV1&MOV2) в QPILE (без экселей и метастоков) и если да, то в каком виде?
спасибо.
Евгений Reply:
июня 25, 2009 at 20:29
Уверен что возможна. В виде кода
А если серьезно, надо писать алгоритм и согласно нему делать код.
Не вставляются правильно функции...(((
Евгений Reply:
мая 2, 2009 at 18:36
В смысле?
Если есть проблема с копированием со страницы — скачайте в разделе скачать, там выложено в первоисточнике.
Например, восстановление в след. торговую сессию заявок, снятых брокером после завершения текущей или при клиринге. Определить подобные заявки можно по времени снятия (>=завершение сессии или клиринга), само время можно задать через текстовый файл, как и хранить подобные завки.
Скрипт очень востребован.
Евгений Reply:
мая 2, 2009 at 18:46
Интересная тема.
Вот только я не припоминаю, чтоб на следующий торговый день в таблице заявок были прошлые снятые, по-моему таблица очищается.
Через текстовый файл — возможно сделать. Пишите алгоритм — напишу функцию.
Здравствуйте , Хоть я и новичёк в программировании но чувствуется рука профессионала и особое отношение к работе. Итак, вопросы. Как отсортировать эмитентов объёмом меньше 10 млн. ? Как получать инф. по этим эм. в программированную таблицу постоянно и задать сравнение строковых переменных?
Евгений Reply:
мая 2, 2009 at 18:49
Я хоть и не сосем понял о каких объемах идет речь, но чувствую что это выполнимо. Пишите алгоритм: какую переменную из какой таблицы берем, что с нем делаем и как ее сравниваем, и что выкладываем в программируемую таблицу (портфель) — напишу.
Здравствуйте. Скачал готовую функцию «убить все заявки», при загрузке в Квик выдает: «Ошибка синтаксиса. Неверный формат файла в описании портфелей. Ошибка в строке 1».
Хотел поправить код, но не могу разобраться, как редактировать код готового файла. Пока только начал осваивать Qpile и оч. плохо ориентируюсь. И не знаю, как написав код в блокноте, превратить это в портфель с расширением .qpl. Помогите, плз., где об этом можно почитать.
Расширение QPL для текстового файла можно назначить простым переименованием файла, указав после имени точку, и сами буквы qpl, например megasuperrobot.qpl и все! И потом, функция как таковая выложенная на этой странице это лишь функция, ее надо превратить в робот. Об этом можно почитать на этом сайте, только начать с самой первой публикации, тогда все станет понятно.
roman-investor Reply:
сентября 16, 2009 at 13:16
Спасибо за комментарий! Проблему решил редактированием в другом блокноте (SciTe). Но появилась другая: робот успешно загружается, настраивается, но заявки не снимает
Евгений Reply:
сентября 22, 2009 at 17:30
Значит где то ошибка, проверяйте результат отсылки транзакции.