Archive for the ‘QLUA’ Category

Хочу рассказать о новом конструкторе, который делаю для создания роботов.

Цель создания конструктора -максимально упростить разработку торговых роботов на основе торгового терминала QUIK и библиотеки QLUA.

Какие задачи можно решать на этом конструкторе.

  1. Написание алгоритмов торговых сигналов
  2. Тестирование алгоритма
  3. Оптимизация параметров
  4. Подключение в режиме реальных торгов

———————————
Конструктор выполнен в виде индикатора и минимум одного скрипта и предназначен для торговли акциями.
индикатор имеет имя nk_bot.

На его основе реализуются первые три пункта указанные выше.
Подключение к реальным торгам осуществляется с помощью специального скрипта.
В данной заметке я расскажу и покажу как написать алгоритм( генератор) торговых сигналов и посмотреть результаты его работы.
—————————
Для программирования любого алгоритма есть два файла
файл  initS.lua —  инициализация параметров робота
имя второго файла задается в файле initS.lua. По умолчанию его имя nk_test_sig.lua.
Этот файл содержит собственно алгоритм генерации торговых сигналов.
—————————-
Для примера напишем робот на основе алгоритма пересечения двух скользящих.
т е алгоритм генерации сигналов будет такой:
Берем две скользящие, назовем их Y1  и Y2 , с периодами N1 и N2 соответственно.
Если Y1 пересекает Y2 снизу вверх, то покупаем.
Если сверху вниз, то продаем.
Имена наших индикаторов должны начинаться с  символа подчеркивания  и далее любые алфавитно цифровые символы.
———————————
Рассмотрим подробнее содержимое файлов и добавим в них необходимые изменения для реализации нашего торгового алгоритма.
—————————————
файл initS.lua Имеет следующий вид:
Settings.nki=’EMA(Y1,C,N1);EMA(Y2,C,N2)’; — описание  индикаторов, через символ «;»
Settings.nks=’nk_test_sig.lua’; —генератор сигналов
———————-

EMA -индикатор скользящего среднего,

N1 — интервал расчета индикатора,

C  — параметр свечи, по которому вычисляется индикатор. В данном примере это close последней закрытой свечи.

В этот файл нам необходимо добавить периоды наших скользящих.
Для этого любым редактором текста (рекомендую SCITE) добавляем в конец файла следующие две строчки:
Settings.N1 =20; — период первой скользящей по умолчанию
Settings.N2 =100; — период второй скользящей по умолчанию
————————
Содержимое этого файла будет отображаться как параметры индикатора nk_bot.
Таким образом, в процессе работы можно их изменять и наблюдать влияние на результаты работы торговой стратегии.
Все индикаторы автоматически отображаются на графике
————————————
В файле initS.lua есть такая строка:
Settings.nks=’nk_test_sig.lua’; —генератор сигналов
т е свой алгоритм мы поместим в файл с именем nk_test_sig.lua.
Мы можем изменить имя файла, указав любой другой файл с новым алгоритмом.
————————-
В любом редакторе текста в файле nk_test_sig.lua пишем следующий текст нашего алгоритма:

=Cross(Y1,Y2); — пересечение. результат -1,0,1
Алгоритм записывается следующим образом. Пишем знак «=» и далее функцию или арифметическое выражение значения торгового сигнала.

Если выражение является логическим, то после знака равно пишем сначала значение сигнала, например 1, потом через запятую логику вычисления сигнала.

Например,  =1, x>20  — означает, что сигнал равен 1, если x>20, иначе равен 0.
В тексте программы может быть комментарий, который должен начинаться   двумя знаками минус.
Выше все комментарии  выделены зеленым цветом.
Вот и весь наш алгоритм.

Теперь посмотрим, что получилось:

160503_000

160503_001

 

 

 

 

 

————————————————————————————————-

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

Если текущая сделка убыточная, то информация о ней отображается красным цветом, иначе белым.

Свеча, на которой совершается сделка, отмечается стрелкой

зеленая стрелка — продажа

красная стрелка — покупка

Сделки совершаются на открытии свечи ,

на основе информации о закрытых свечах.

————————————————————————————————-

продолжение следует…

В этой заметке  кратко расскажу свое видение технологии исследования торговых алгоритмов, на основе которых я строю роботов.

Ранее я неоднократно обращал внимание, что торговый алгоритм или стратегия — это далеко еще не торговый робот.

В структуре прогнозирующего торгового робота (я делаю пока лишь такие)  всегда есть модуль генерации торговых сигналов (генератор сигналов) .

Если использовать в торговле этот модуль, то получим торгового советника.

Как правило, есть два типа сигналов, которые принципиально отличаются.

Я  строю алгоритмы,  которые всегда находятся в рынке.

Поэтому всегда есть открытая позиция.

Первый тип сигналов — это собственно торговые сигналы,

т е сигналы  -открыть лонг(Long), открыть  шорт(Short).

Эти сигналы генерируются на основе прогноза движения цен.

Второй тип сигналов — это аварийные сигналы.

Т е это сигналы,  которые генерируются на основе контроля убытков, т е потери капитала.

Появление этих сигналов, как правило, связано c гепами рынка против открытой позиции .

Эти сигналы нельзя прогнозировать с доступным объемом информации,

поэтому они создаются с учетом текущих потерь.

При исследовании алгоритмов на исторических данных существенно по-разному реализуется механизм исполнения торговых и аварийных сигналов.

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

Рассмотрим эти особенности

Особенности генерации и исполнения торговых сигналов.

Сигналы 1-го и 2-го типов отличаются по исполнению следующим образом.

Торговый сигнал, как правило, исполняется на краю свечи.

Ошибочно исполнять его на close текущей свечи.

В реальности Вы никогда не сможете это реализовать.

Но на истории можно это сделать и это называется — заглядывание в будущее.

Поэтому исполнение сигналов надо осуществлять как минимум на открытии новой свечи, а торговый сигнал формировать по предыдущим закрытым свечам.

Я именно так и делаю.

В реальности при открытии новой свечи появляется и сигнал закрытия предыдущей.

При исследовании алгоритмов на истории,

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

на сколько быстро в реальности мы успеем совершить сделку по цене открытия свечи.

Действительно, цена открытия — это тоже уже совершенная сделка.

Есть два приема, которые я использую в своих исследованиях.

Во-первых, я торгую лишь высоколиквидным инструментом — Сбербанк обычка.

Во-вторых, при исследовании истории,  вычисляю хороший и наихудший результаты.

Хороший результат -это совершение сделки по цене открытия свечи. Не факт, что он будет обязательно хорошим, но меня это устраивает.

Наихудший результат— это совершение сделки, поHigh свечи — для Long и по Low свечи -для Short.

Так как  мои алгоритмы работаю на таймах 5 минут, то наихудший результат предполагает, что очередную сделку я могу совершить за очередные 5 минут.

При этом фортуна повернется ко мне спиной и я всегда буду совершать сделки по самой худшей цене в эти 5 минут.

Т е покупать буду всегда на максимальной цене в 5 минутах,

а продавать всегда на минимальной.

Согласитесь, что хуже ситуацию придумать сложно.

Вот  результат такого стресс тестирования:

160101_001

160101_000

 

 

 

 

 

————————————————————————————-

На втором графике — увеличен масштаб, чтобы показать последнюю сделку в прошедшую пятницу.

текст около стрелки сделки содержит следующую информацию:

0.42,93.9/39%,127.17/62.38,200.

которая расшифровывается так:

0.42% — прибыль в сделке (позиция закрыта на открытии свечи)

т е не самый лучший вариант для этой свечи

93.9%  — число выигрышных сделок при совершении сделки на открытии

39% — число выигрышных сделок при совершении сделки по самой худшей цене за пять минут

127.17%  -прибыль за 3000 свечей при совершении сделки на открытии свечи

62.38% — прибыль за 3000 свечей при совершении сделки по самой худшей цене за пять минут

200  — количество смены позиции ( 100 -Long, 100- Short).

200 — получилось не специально

Резюме:

В худшем варианте мы потеряем половину прибыли.

На основе стресс-тестирования можно ожидать,

что данный алгоритм является прогнозирующим

и в следующие 3000 свечей будет прибыльным.

————————————

Об особенностях исследования аварийных сигналов расскажу в будущем

 

Курс 1: Программа  консультационного самообучения

—————————-

Тема 1: Язык Lua. Основы разработки алгоритмов

Тема 2:  QUIK. Библиотека QLua. Основы разработки индикаторов

Тема 3:  QUIK. Библиотека QLua. Основы разработки скриптов

Тема 4: Основы разработки торгового советника

Тема 5: Основы разработки торгового робота

——————————————

Стоимость консультаций по курсу от 25 тыс руб

Стоимость консультаций по каждой  теме  от 5 тыс руб в неделю

Минимальный срок консультаций по теме 1 неделя

——————————————

Продолжительность консультирования по теме определяется учениками самостоятельно.

——————————————

Условия консультирования в каждом конкретном случае и по каждой конкретной теме оговариваются индивидуально.

—————————-

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

———————————————

Переход на следующую тему происходит при условии наличия знаний и оплаты по предыдущим темам.

======================================

P.S: В настоящее время проводится изучение спроса  на следующие возможные курсы консультационного самообучения:

————————————-

Курс 2:  Язык AFL. Основы тестирования торговых стратегий на исторических данных

—————————————-

Курс 3: Цифровая обработка 

Тема:  Теория цифровой фильтрации. Основы применения цифровых фильтров в роботах

Тема:  Теория цифровой фильтрации. Основы применения спектрального анализа в роботах

——————————————-

Курс 4: Искусственный интеллект

Тема : МАТЛАБ. Основы применения нейронных сетей в роботах 

 

Страница 1 из 6123456