Робот.

Простейший, вариант робота работающего через Quik API


Общие понятия.

Робот использует 2 плагина Робот работает в Автоматическом Анализаторе АА. Это позволяет смотреть в Ами любые графики, менять таймфрейм и вообще меньше беспокоиться надежной работе робота. Категорически запрещено только открывать другую БД. Робот работает через API терминала Quik. В отличии от Версии Механизатора и последующей моей модификации этот робот не просто кидает заявку в пустоту, а отправляет её при помощи функции API SEND_SYNC_TRANSACTION. Эта функция обеспечивает получение ответа от Квика по поводу судьбы отправленной заявки. Т.е. после отправки заявки Квик сразу отвечает удалось ли произвести действия указанные в этой заявке. В связи с этим в роботе так же используется библиотека AS_File. Эта библиотека помогает запоминать роботу в какой позиции он в данный момент находится.
Поясню.
Допустим поступил сигнал системы на покупку. Робот через API отправляет Квику заявку на покупку. Если Квик ответил, что заявка удовлетворена, то робот записывает в файл состояния робота (robot.ini) величину открытой позиции и при следующем срабатывании скрипта робота, когда робот вновь видит сигнал на покупку этот сигнал будет проигнорирован. Если же на поданную заявку Квик ответил, что заявка не прошла, то в файл состояния ничего записано не будет и робот снова попытается открыть позицию. В дальнейшем, при поступлении сигнала системы на закрытие позиции робот посмотрит своё состояние в файле состояния робота и если позиция открыта, то он закроет её. При чем размер лота закрываемой позиции возьмёт из файла состояния. Таким образом возможно варьирование размера открываемой позиции и при этом нет необходимости заботиться о том, чтобы размер заявки на закрытие соответствовал размеру заявки на открытие позиции.

Краткая инструкция.

Перед запуском робота не забудьте включить в Квике обработку внешних транзакций
Настройка импорта транзакции через API осуществляется в диалоге «Обработка внешних транзакций» (меню Торговля / Внешние транзакции). Обработка внешних транзакций начинается после нажатия на кнопку «Начать обработку».При установленном флажке «Запускать процесс обработки внешних транзакций автоматически» сервис обработки внешних транзакций запускается автоматически при загрузке Рабочего места QUIK.
  1. Создаете базу с бумагами которые собираете торговать при помощи робота. Лучше, если база будет иметь временной интервал на котором будет торговаться система
  2. Подключаете её к Квику при помощи плагина
  3. Протестированную систему, которую собираетесь торговать при помощи робота вставляете в код робота
  4. В коде робота прописываете общие настройки, тикеры которые будете торговать и соответствующие настройки для каждого тикера.
Общие настройки аккаунта и системы
TimeFrame= 60*15;// таймфрейм в секундах.
Account= "NL0011100043";// Номер счета
Client_Code= "10133";// Код Клиента
Quik= "C:\\Program Files\\QUIK";// путь к Квику
Торгуемые символы
Tickers = "LKOH,SBER"; // торгуемые символы через запятую без пробелов. Для контроля ошибок. Так, как они называются в Ами
Настройки символов
if(Name()== "LKOH") {//Символ как он называется в Ами
SecCode= "LKOH";
Class= "EQBR";
Lots= 5;// число торгуемых лотов символа LKOH
TickS= 0.1;// Минимальный шаг цены торгуемой бумаги
Otstup= 20;// Заявка будет выставлена хуже текущей цены на Otstup рублей
}
else if(Name()== "SBER") {//Символ как он называется в Ами
SecCode= "SBER";
Class= "EQBR";
Lots= 2;// число торгуемых лотов символа SBER
TickS= 0.01;// Минимальный шаг цены торгуемой бумаги
Otstup= 1;// Заявка будет выставлена хуже текущей цены на Otstup рублей
}
  1. Код робота с системой засовываете в Автоматический Анализатор АА
  2. В АА в Apply to устанавливаете бумаги которые собрались торговать (либо All, либо Curent, либо Use Filter)
  3. В settings в Periodicity: устанавливаем временной интервал на котором работает система
  4. Range устанавливаем n-last quotations n = 1
  5. Отмечаем опцию Run every: и пишем 1sec (например). Это обозначает, что робот будет сканировать торгуемые бумаги с такой переодичностью. (Run every запустит робота на бесконечное сканирование. Для начал лучше несколько раз прогнать робота в АА с выключенной опцией Run every)
  6. Топчем Explore
  7. Проверяете работу робота
  8. Выключить робота можно просто сняв "галку" с Run every
В таблице АА робот выводит информацию о своих действиях. Кроме того робот записывает все свои действия в файл Robot_quik.log который робот создаст в папке в которую установлен AmiBroker

Примеры работы робота












Некоторые подробности




СКАЧАТЬ КОД


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


Удачи.