Главная > Начинающим, Торговый робот > Функция KILL ALL ORDERS в торговом роботе

Функция KILL ALL ORDERS в торговом роботе

1 мая 2009

killallordersСуществует мнение, что транзакции DELETE ALL, или на языке QPILE «KILL_ALL_ORDERS», негативно влияют на скорость работы торговой системы. В единичном случае это как комар для слона, но когда масса клиентов посылает подобную транзакцию возникают тормоза. Я не буду вдаваться в подробности этого процесса, тем более что существует очень простой и «правильный» способ отменить выставленные и активные заявки выборочно, как бы стреляя снайперской винтовкой, нежели палить из пушки по воробьям. Собственно код:

Код на QPILE доступен только зарегистрированным пользователям.

Используя эту функцию мы одновременно не тормозим систему, и действуем элегантно, удаляя лишь необходимое. Функцию можно скачать.

Евгений Начинающим, Торговый робот , ,

  1. Дмитрий
    1 Май 2009 в 22:54 | #1

    Спасибо!

  2. Евгений
    2 Май 2009 в 10:48 | #2

    Предлагайте темы, которые надо рассмотреть и доработать. Составим нашу библиотеку функций.

    Валерий Reply:

    Нужна функция пересечения на графике cross возвращает значение 1 если пересекла и 0 если нет. Направление пересечения сверху вниз cross (C,Var1)или снизу вверх cross (var1,C). Можно написать, но хотелось бы потверждение правильности моих мыслей. Причем должна быть универсальная :-)

    Евгений Reply:

    Ничего не понял... Кто кого пересекает?

    График — это последовательность цифр (читайте статью www.hirobot.ru/2009/04/in...orgovyx-robotax/), и пересечение, есть ни что иное как сравнение двух последовательных значений двух потоков данных. Например на предыдущем баре цена=10, скользящая средняя=11, а на текущем цена=11, а скользящая средняя=10, вот вам и пересечение.

    Уточните вопрос.

    Валерий Reply:

    все верно

    вот пример из метастока

    www.meta-formula.com/meta...ss-function.html

    Валерий Reply:

    Описание на русском

    СИНТАКСИС: 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:

    Насколько эта функция должна быть универсальна? Если речь идет только о пересечении OHLC и скользящей средней с какими-либо параметрами, то написать можно. В этом случае данные МА берутся не из графика, а рассчитываются внутри робота. Если же Вы хотите чтоб универсальность была при списке индикаторов — то такое тоже можно сделать, но это как строить ядерный реактор, чтоб на контуре охлаждения сосиски варить :)

    User Reply:

    Евгений, что то до конца не понятно, возможна ли функция Cross (MOV1&MOV2) в QPILE (без экселей и метастоков) и если да, то в каком виде?

    спасибо.

    Евгений Reply:

    Уверен что возможна. В виде кода :) А если серьезно, надо писать алгоритм и согласно нему делать код.

  3. Pulsarr
    2 Май 2009 в 12:35 | #3

    Не вставляются правильно функции...(((

    Евгений Reply:

    В смысле?

    Если есть проблема с копированием со страницы — скачайте в разделе скачать, там выложено в первоисточнике.

  4. Дмитрий
    2 Май 2009 в 14:00 | #4

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

    Скрипт очень востребован.

    Евгений Reply:

    Интересная тема.

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

    Через текстовый файл — возможно сделать. Пишите алгоритм — напишу функцию.

  5. Владимир
    2 Май 2009 в 17:42 | #5

    Здравствуйте , Хоть я и новичёк в программировании но чувствуется рука профессионала и особое отношение к работе. Итак, вопросы. Как отсортировать эмитентов объёмом меньше 10 млн. ? Как получать инф. по этим эм. в программированную таблицу постоянно и задать сравнение строковых переменных?

    Евгений Reply:

    Я хоть и не сосем понял о каких объемах идет речь, но чувствую что это выполнимо. Пишите алгоритм: какую переменную из какой таблицы берем, что с нем делаем и как ее сравниваем, и что выкладываем в программируемую таблицу (портфель) — напишу.

  6. roman-investor
    15 Сентябрь 2009 в 12:00 | #6

    Здравствуйте. Скачал готовую функцию «убить все заявки», при загрузке в Квик выдает: «Ошибка синтаксиса. Неверный формат файла в описании портфелей. Ошибка в строке 1».

    Хотел поправить код, но не могу разобраться, как редактировать код готового файла. Пока только начал осваивать Qpile и оч. плохо ориентируюсь. И не знаю, как написав код в блокноте, превратить это в портфель с расширением .qpl. Помогите, плз., где об этом можно почитать.

  7. Евгений
    15 Сентябрь 2009 в 23:08 | #7

    Расширение QPL для текстового файла можно назначить простым переименованием файла, указав после имени точку, и сами буквы qpl, например megasuperrobot.qpl и все! И потом, функция как таковая выложенная на этой странице это лишь функция, ее надо превратить в робот. Об этом можно почитать на этом сайте, только начать с самой первой публикации, тогда все станет понятно.

    roman-investor Reply:

    Спасибо за комментарий! Проблему решил редактированием в другом блокноте (SciTe). Но появилась другая: робот успешно загружается, настраивается, но заявки не снимает :(

    Евгений Reply:

    Значит где то ошибка, проверяйте результат отсылки транзакции.

Необходимо войти на сайт, чтобы написать комментарий.