Как загрузить робота в QUIK

Чтобы загрузить (установить) в QUIK написанный на языке QPILE портфель (он же робот, или скрипт, или программа) необходимо произвести следующие действия.

В разделе "Меню" "Таблицы" выбрать "Портфели" и "Задать портфель". Либо просто нажать одновременно две клавиши - Ctrl и F10.

Выбрать свой портфель и нажать кнопку "Загрузить локально". Нажать "Выход".

Затем необходимо создать таблицу для просмотра параметров портфеля. Для этого опять "Меню" "Таблицы" выбрать "Портфели" и "Просмотр портфеля" или Ctrl и F12. Выбираем свой портфель. Жмем "Добавить все" и "Да".

Именно после этого момента портфель начнет расчитываться!

Чтобы изменить время расчета портфеля идем в "Меню" "Таблицы" выбрать "Портфели" и "Доступные портфели" или Ctrl и F11. Меняем "Период расчета (сек)", жмем "Применить".

Если хотим удалить наш портфель из расчета жмем "Удалить".


64 комментария для “Как загрузить робота в QUIK”

  • 14 Июль, 2009, 12:48

    Добрый день, Иван!
    Читаю ваш блог так как меня сейчас очень интересуют торговые роботы.
    Не хотели бы Вы попробовать совместно поработать над новым роботом?
    Ваше программирование, моя торговая стратегия.

    Игорь.

  • Дмитрий
    15 Июль, 2009, 14:42

    Добрый день, Иван. Поссле нажатия "Добавить всё" - "Да" QUIK выдаёт ошибку. "Произошла ошибка при расчете портфеля "Gold_Rush", идентификатор организации "ALL_FIRMS", сообщение об ошибке "File: func_gr.txt, line: 132. Unknown identifier CLOSE_MA [ RESULT = CLOSE_MA ] "

  • Иван
    15 Июль, 2009, 18:03

    У вас открыт часовой график фьючерса на золото? На нем есть индикатор СС? Скользящая средняя имеет соответствующее название "MA_GOLD"?
    Если всё есть, то возможно, из-за несовершенства функции определения значения индикатора, что сегодня не было сделок, т.е. невозможно определить последний по времени CLOSE.

  • Виктор
    23 Июль, 2009, 23:02

    Иван, добрый вечер. При загрузке робота в Quick есть опция - Загрузить локально. Она у меня она не активна. Как ее можно активировать? И какие возможности дает? Есть еще проблемка. В моем роботе предусмотрена функция записи информации в файл с помощью *Writeln*. И вот в чем странность: когда загружаешь робота заново и он начинает расчет - все отлично, записи делаются. Однако, если оставить робота загруженным и на следующий день запустить его через Ctrl + 12 - все работат как надо, но никаких записей не происходит. Ты не сталкивался с такой проблемой? Спасибо, Виктор.

  • Виктор
    23 Июль, 2009, 23:03

    Косяк!...., хотел сказать *Загрузить на сервер*)))

  • Иван
    24 Июль, 2009, 16:28

    Загрузить на сервер - опция брокеров, мне кажется.
    Насчет записи в файл - не сталкивался. Я выключаю терминал не выгружая портфели. На след день всё просто само собой работает. Попробуйте спросить на официальном форуме либо выкладывайте код, посмотрим.

  • Виктор
    24 Июль, 2009, 21:40

    Я даже териминал не выключаю на ночь. Просто усыпляю комп, а утром он автоматом включается и терминал сам востанавливает связь. И портфель сам начинает расчет. Но вот только записей в файлы не делает. А стоит его выгрузить и загрузить заново - и записи появляются. Причем раньше все работало нормально, но вот только причину, по которой перестало - никак не вычислю. Попробую на официальном форуме спросить. Как починю - расскажу в чем дело. Да, кстати, есть еще вопросик. При отправке ордера на покупку или продажу формируется MAP массив. Однако, я так и не понял, как из него вытащить цену покупки/продажи. Можно ли это вообще сделать? Хотелось бы, чтобы при каждой покупке или продаже портфель делал запись в файл, содержащую цену покупки/продажи. Спасибо.

  • Михаил
    27 Июль, 2009, 22:20

    Возник вопрос. Код отслеживания соединения с сервером я написал, однако никак не могу найти, как в случае разрыва соединения, заставить терминал автоматом подключиться к серверу?

  • 20 Август, 2009, 10:11

    Михаил. В Меню "Связь - Доступные соединения" поставьте галочки "Восстанавливать связь" и "Использовать параметры последнего соединения". Очень часто помогает. Особенно, если оставлять компьютер на ночь - утром ничего не надо делать, соединяется автоматически.
    Хотя, конечно, когда падает сервер никуда уже не деться.

  • 20 Август, 2009, 10:14

    Виктор. Во время покупки/продажи я определяю текущую цену и уже её записываю в лог-файл. Из МАР массива ничего не вытаскиваю.

  • LexusMax
    25 Август, 2009, 9:03

    Здравствуйте! Парни подскажите пожалуйста (или дайте ссылочку) где можно почитать про язык qpile, чтобы ознакомиться с его структурой. Спасибо

  • LexusMax
    25 Август, 2009, 9:05

    Прошу прощения, какжется нашел на Вашем блоге. Но вслуйстае же если есть какие-либо источники, скажите пожалуйста

  • 25 Август, 2009, 13:14

    [это ссылка] - руководство пользователя.

  • SERGIOTRADER
    30 Август, 2009, 20:03

    Доброго времени суток! У меня к вам следующий вопрос.
    На сегодняшний день у меня возникла необходимость автоматизации торговли в квике по сигналам из метастока.

    Меня интересует следующее:
    1) автоматизация подкачки данных из квика в метасток10
    2) обработка уже имеющейся у меня системы и эксперта в метастоке10
    3) экспорт из метастока в квик заявки(сделки, стопы) на исполнение сделки
    4) контроль исполнения заявки, перестановка неисполненной заявки
    5) учет в заявке доли капитала и количества бумаг в лоте.

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

    Благодарю за потраченные секунды вашего драгоценного времени. )

  • Иван
    31 Август, 2009, 14:48

    Здравствуйте. Сразу скажу, что я не большой любитель метастока.
    1. Как подкачивать данные в метасток можно почитать в интернете http://www.finam.ru/analysis/exphelp/default.asp.
    2. Не понял. Что за обработка? Тестирование на истории?
    3. Тут нет проблем.
    4. Можно контролировать, но не просто.
    5. Нет проблем.
    Подобный опыт программирования есть, но как показала практика от метастока лучше избавиться. Хотя, всё зависит от реализуемой стратегии и потребностей. Времени на разработку, как правило, уходит от двух недель. Плата индивидуальна.
    Можете озвучить свою стратегию здесь. Можно будет оценить её работоспособность. Вдруг она заинтересует кого-то из читателей. Мне кажется делиться торговыми идеями не страшно. Ликвидности рынка хватит на всех.
    Самая большая концентрация программистов находится на официальном форуме квика quik.ru.

  • Дмитрий
    31 Август, 2009, 17:14

    "Иван
    15 Июль, 2009, 18:03У вас открыт часовой график фьючерса на золото? На нем есть индикатор СС? Скользящая средняя имеет соответствующее название «MA_GOLD»?
    Если всё есть, то возможно, из-за несовершенства функции определения значения индикатора, что сегодня не было сделок, т.е. невозможно определить последний по времени CLOSE."----
    Выставил, поместил. Не работает. Хотя сообщение об ошибке пропало. Тут такой момент:
    1. График СС - через правую на графике - "Добавить график (индикатор)" - "Мувинг эвередж"? Если "Да", то там переименовываем в MA_GOLD и всё? Если "Нет", то как его выводить?
    2. Робот сейчас только лонги выставляет?

  • Иван
    1 Сентябрь, 2009, 11:38

    1. Не переименовываем, а во вкладке "Дополнительно" вписываем "Идентификатор".
    2. Да, один лонг.

  • теска_Иван
    2 Сентябрь, 2009, 18:35

    Иван подскажите пожалуйста, а где производиться расчет Скользящей средней "ma_gold" ?

  • теска_Иван
    2 Сентябрь, 2009, 18:42

    а есть еще какие нить источники, книги может быть по qpile, то что есть на официальном сайте квика чертовски мало... я правдо ток ток начал знакомство, а так опыт программирования есть, но я не могу осознать строчку с ма_голд

  • Иван
    3 Сентябрь, 2009, 10:36

    СС вы строите на графике, т.е. добавляете индикатор. У этого индикатора устанавливаете соответствующий идентификатор. Строка с ма_голд обращается к функции, которая определяет значение индикатора СС в текущий момент времени. Функция обращается к уже рисующемуся индикатору и просто вытягивает его значение.

  • Антон
    4 Сентябрь, 2009, 18:26

    Иван, а как с Вами можно связаться? К примеру не могли бы Вы мне отправить письмо на мыло? antuan@rambler.ru

  • теска_Иван
    6 Сентябрь, 2009, 20:00

    Иван подскажите пожалуйста, а что это за файл fuck_gr? в нем я нашел ту самую фукцию которая мне покоя не дает "manow"

  • теска_Иван
    6 Сентябрь, 2009, 20:02

    Ой )))))))) перечитал "func_gr" *

  • Иван
    6 Сентябрь, 2009, 21:45

    Это файл с функциями. Их я просто вынес, так удобнее жить.

  • теска_Иван
    14 Сентябрь, 2009, 13:08

    функция ma_now

    FOR lineID FROM 0 TO LineCount-1
    line = Get_Collection_Item (lines, lineID)
    close_ma = 0 + Get_Value (line,"CLOSE")
    END FOR
    а зачем тут фор? если конечный результат всегда будет
    lineid=lineCount-1
    line = Get_Collection_Item (lines, lineID)
    close_ma = 0 + Get_Value (line,"CLOSE")
    а минус один нам нужен эт как бы значения предшествующие?

  • Иван
    14 Сентябрь, 2009, 15:39

    Всё верно. Просто данная функция иногда используется и для определения значений индикатора Болинджер Бэндс, где три линии.
    Можно и упростить.
    А минус один, т.к. счет начинается с нуля.

  • теска_Иван
    14 Сентябрь, 2009, 17:10

    Спасибо, верной доргой значит иду))

  • Павел
    21 Октябрь, 2009, 21:27

    а как будет выглядеть функция для определения значения RSI? как не мучаюсь, все ему не нравится. Можете подсобить подробным кодом?)
    В общем индикатор называется RSI. Его идентификатор RSI1. Пытался адаптировать вашу функцию со средней, но как не перелопачивал код, он все никак не хочет работать.

  • Сергей из Чебоксар
    21 Октябрь, 2009, 21:39

    LTime = FTime
    slice = Get_Candle_Ex ("RSI1", Date, LTime)
    LineCount = 0 + Get_Value (slice,"COUNT")
    LTime = Get_Value (slice,"LTime")
    lines = Get_Value (slice,"LINES")
    FOR lineID FROM 0 TO LineCount-1
    line = Get_Collection_Item (lines, lineID)
    RSI = 0 + Get_Value (line,"CLOSE")
    END FOR
    result = RSI

    === Возможно сайт поменяет кавычки.

  • Misha
    28 Октябрь, 2009, 17:10

    Здравстауйте!!! Когда вхожу в пошаговый режим отработки программы ,то у меня не активны нижние кнопки отладчика. Курсора ,покузывающего на какой строке нахожусь нету. Я просто могу видеть текст программы. Ошибок при открытии отладчика не выдается. "горячие" клавиши типа F10 не работают. Не могу понять в чем проблемма! Это ошибка или нет.Если ошибка, то как ее найти?
    Что делать?
    Спасибо!

  • Misha
    28 Октябрь, 2009, 18:48

    добавил новую функцию в текст программы .Когда вхожу в пошаговый режим отработки программы ,то у меня не активны нижние кнопки отладчика. Курсора ,покузывающего на какой строке нахожусь нету. Я просто могу видеть текст программы. Ошибок при открытии отладчика не выдается. "горячие" клавиши типа F10 не работают. Не могу понять в чем проблемма! Это ошибка или нет.Если ошибка, то как ее найти?
    Что делать?

  • Иван
    28 Октябрь, 2009, 18:51

    Какую программу вы отлаживаете?

  • Misha
    29 Октябрь, 2009, 0:01

    Я отлаживаю программу GOLD RUSH.
    Я написал новую функсию для автоматизации стоп лоса
    и добавил ее в текст. Юлок этой функции прописал в верхней части текста программы, а в нижней части текста там где цикл MA_GOLD вызываю эту функцию

  • Misha
    30 Октябрь, 2009, 16:06

    В чати проверки выставлена заявка или нет
    После выставления заявки , программа не видит прследнюю заявку толькл чnо выставленную, количество всех заявок (n) не увиличвается на +1 тоесть на последнюю заявку и когда я проверяю в цикле поиска установленнвых заявок с признаком "исполненная " .- переменная ispolneno остается равной =0.
    непонятно в чем дело!
    n = GET_NUMBER_OF ("ORDERS")
    FOR m FROM 1 TO n
    trade = GET_ITEM ("ORDERS", m)
    NUMBER = GET_VALUE (trade, "NUMBER") + 0
    IF order_key == NUMBER
    STATUS = GET_VALUE (trade, "STATUS")
    IF STATUS == "FILLED"
    ispolneno = 0
    vystavleno = 0

  • Misha
    30 Октябрь, 2009, 16:25

    Сейчас я еще раз проверил.
    1. Ставвлю заявку
    2.Она сразу исполняется
    2 Заявка появляется в таблице заявок как исполненная .я ее там вижу.
    3.перехожу к блоку проверок исполнения
    4 и когда перебираю все заяки за текущий день ищу исполнена она или нет, то n = GET_NUMBER_OF ("ORDERS") не увеличиласьна одну последнюю заявку и счетчик m вылетает из цикла поиска на дойдя до последней заявки.
    Что делать?
    Спб! всем

  • Павел
    31 Октябрь, 2009, 22:54

    Если заявка исполняется, то портфель узнает о том, что она исполнилась только при следующей интерации.

  • Иван
    1 Ноябрь, 2009, 12:07

    Да, при следующей.

  • Misha
    1 Ноябрь, 2009, 15:46

    Следующая итерация -это переход на следующую строчку кода программы или нет ?
    Например:
    1. Шаг №1 отправляю заявку на покупку send_oder()
    2. Шаг №2 n = GET_NUMBER_OF ("ORDERS")
    3. Шаг №3 проверяю в каком статусе эта заявка находиться.
    IF STATUS = GET_VALUE (trade, "STATUS")
    ....
    Если n не увеличиться на 1то я в цикле поиска последеней заявки не найду свою последнюю исполненную заявку , я это значет я на следующем шаге я поставлю еще одну заявку на покупку. А мне этого не надо! Что делать? Где начинается итерация и где заканчивается? Спасибо!

  • Павел
    1 Ноябрь, 2009, 17:28

    Интерация - полный просчёт кода портфеля с верхней строчки до нижней.

    Рекомендую сделать так:

    1) Проверять исполнилась ли заявка.
    2) Ставить заявку.

    То есть проверять исполнение заявки до того, как её ставить.

  • Misha
    1 Ноябрь, 2009, 21:36

    Спасибо!
    Завтра попробую.

  • Аноним
    7 Ноябрь, 2009, 17:42

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

  • Александр
    7 Ноябрь, 2009, 17:44

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

  • Сергей из Чебоксар
    7 Ноябрь, 2009, 20:21

    =) Аха. Дадут тебе реально работающего робота нахаляву. Как же. В инете только пробники.

  • Иван
    8 Ноябрь, 2009, 11:46

    Александр, что вы с ним будете делать?

  • Misha
    9 Ноябрь, 2009, 13:00

    Скажите плз.может квик одновременно работать с несколькими роботами. Тоесть могу ли я одновременно запустить скажем трех роботов по одному или нескольким инструментам...?
    спасибо!

  • 9 Ноябрь, 2009, 17:47

    Можно. Только они все должны назваться по разному.

  • Misha
    9 Ноябрь, 2009, 18:55

    Спасибо!

  • Misha
    9 Ноябрь, 2009, 19:02

    Спасибо за предыдущий комментарий1
    У меня еще один вопрос.
    Я пишу функцию стоп лоса
    и выставляю условие:
    trans_params = set_value (trans_params, "STOPPRICE_CONDITION","=<=")
    но при выставлении стопа у меня условие всегда "<=".
    Вопрос: Каким параметром (как он называется) и как правильно праписывается в программе условие активации стопа.
    Спасибо!

  • Misha
    9 Ноябрь, 2009, 19:04

    Неправильно указал
    Я пишу функцию стоп лоса
    и выставляю условие:
    trans_params = set_value (trans_params, "STOPPRICE_CONDITION","=>=")
    но при выставлении стопа у меня условие всегда "=<=".
    Вопрос: Каким параметром (как он называется) и как правильно праписывается в программе условие активации стопа.
    Спасибо!

  • Saboteur
    11 Ноябрь, 2009, 11:49

    Загружаю Вашего робота. Выдает ошибку "Произошла ошибка при расчете портфеля "Gold_Rush", идентификатор организации "ALL_FIRMS", сообщение об ошибке "File: func_gr.txt, line: 132. Unknown identifier CLOSE_MA [ RESULT = CLOSE_MA ] " Есть график GDZ9, есть мувинг со стандартными параметрами 9 периодов, експоненц. Что не так? Заранее спасибо.

  • игрок
    11 Ноябрь, 2009, 14:30

    Загружаю Вашего робота. Выдает ошибку "Произошла ошибка при расчете портфеля "Gold_Rush", идентификатор организации "ALL_FIRMS", сообщение об ошибке "File: func_gr.txt, line: 132. Unknown identifier CLOSE_MA [ RESULT = CLOSE_MA ] " так же теперь портфель взял квик теперь как у саботеура.

  • 11 Ноябрь, 2009, 16:13

    Мувинг должен иметь ИДЕНТИФИКАТОР MA_GOLD. Идентификатор находится во вкладке Дополнительно.

  • Saboteur
    12 Ноябрь, 2009, 10:47

    Да. да я просто забыл об этом написать. Он имеет идентификатор МА_GOLD.

  • игрок
    13 Ноябрь, 2009, 8:37

    Теперь нашел ошибку.Ваш робот грузится но не работает.

  • Misha
    16 Ноябрь, 2009, 21:47

    Спосбо всем за помощь!
    У меня получилось , но работает пока криво!
    Чем дальше разбираюсь тем больше вопросов:
    1. В квике есть функция получения инф по цене которая произошла например минуту назад. Если есть такой инструмент скажите плз как это описывается.(нужен пример функции)
    2. Могу я с помощью квика анализировать параметры "свечки" . Например получить данные по свече произошедшие минуту назад (открытие, закрытие, макс, мин)
    Спасибо.

  • игрок
    17 Ноябрь, 2009, 1:26

    переделал на ммвб втбр ваш робот не раб. .на фью чи нет доступа не открывал.и не хочу.читал кто то делал на сбер. подскажите плиз или отработайте на чужие аккаунты .т.е. на своем и вставим свои. что б работало.у меня на экселе на ма плохо работало.понятно что ма заденет большие таймфреймы.поэтому 5ти мин-ки на 15 ти.2 е скольз. средние.ПОЭТОМУ "ПРИКРУТИТЬ БЫ ТУДА СТОХАСТИК."

    есть AVTOSTOP [это ссылка]. они продают и это плохо.

  • Илья
    14 Декабрь, 2009, 0:50

    Иван, напишите мне, плиз, на мыло - есть несколько вопросов к Вам.
    спасибо

  • Ильдар
    17 Декабрь, 2009, 20:19

    Здравствуйте Иван! Сколько стоит у вас стоит заказать простейшего робота для квика , который лишь ориентируется относительно рыночной цены акций ( в частности акций банк ВТБ).?

  • игрок
    17 Декабрь, 2009, 23:22

    [это ссылка]
    попробуй здесь эту программу

  • Ильдар
    18 Декабрь, 2009, 12:16

    Спасибо, но всё-таки в голове такая путаница! Если не трудно напишите плз - как выставить заявку на покупку акций ВТБ в резмере 2 лотов через Qpile.
    И что изменится в заявке, если она исполнится . то есть как поставить условие IF, чтобы например после продажи с наценкой подать заявку на покупку по той же цене?

  • Андрей
    9 Апрель, 2010, 22:51

    Здравствуйте.
    Требуется написать робота для автоматического выставления заявок на покупку/продажу в торговом терминале QUIK на основании показаний различных индикаторов.
    8-916-186-61-40 Андрей
    Спасибо.

  • Изя Шниперсон
    17 Апрель, 2010, 14:44

    to Андрей-> индикаторы в квике находятся или в какой-либо внешней программе?

  • Василий
    23 Октябрь, 2010, 18:49

    Здравствуйте, Иван
    У меня есть идея (алгоритм) для написания робота в квике, но написать не смогу. Помощь окажете ? сот. 89226138627

  • Андрей
    12 Ноябрь, 2010, 23:54

    Есть робот-скальпер для работы на ММВБ по акциям Сбербанка.Александр