Избранное трейдера dimaz07

по

QUIK+LUA - от чайника до гуру.

    • 10 декабря 2014, 12:16
    • |
    • Egorax
  • Еще

Наверно многие хотели бы научиться писать биржевых роботов или автоматизировать некоторые свои биржевые операции, но пугаются самого процесса программирования, считая его сложным. Но как говориться – было бы желание…

На сегодняшний день язык LUA самый удобный и доступный способ для программирования в ИТС QUIK для начинающих программистов. Lua достаточно мощный язык для быстрого написания от простых до сложных программ. Возможность писать скрипт на самом «низком» уровне позволяет очень гибко и тонко настраивать вашего робота под вашу стратегию.

Вы решили изучить программирование?
Предлагаю индивидуальный курс по изучению языка LUA и программированию под ИТС QUIK.
Курс рассчитан на 10 занятий по 2 часа и  охватывает практически все вопросы:
— основы языка LUA
— применение языка в QUIK
— на занятиях программируем робота.
Занятия проходят дистанционно — Skype + TeamViewer
Время проведения договорное.

Вопросы-ответы: egorax@gmail.com 


Видео с Алгочетверга: инфобиоз и опыт алготрейдера. Доклад Алексея Афанасьевского на Алгочетверге 4 декабря

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

1. самообучаемые игрушки-графы (практической пользы не приносят, но забавны)
2. топология транспортной системы Франции с составлением расписаний движения междугородных автобусов и железных дорог 
3. программа для авиадиспетчеров
4. собственно, трейдинг. 
Видео с Алгочетверга: инфобиоз и опыт алготрейдера. Доклад Алексея Афанасьевского на Алгочетверге 4 декабря
Конспект и видео

Фишка методов программирования искусственной жизни (ИЖ) весьма актуальна для трейдеров HFT и big data. Этот подход дает надежду найти успешное решение не полным перебором массы вариантов, а способами, похожими на эволюционную теорию Дарвина. Надо сказать, что применение биологических терминов несколько сбивает с толку: мутация, наследование, отбор. Конечно, за реализацию эволюционных процессов, включая борьбу за существование, отвечает программист, а предмет борьбы – не пища, а вычислительное время.

( Читать дальше )

ЛЧИ Viewer 2.0

Выложили новую версию просмоторщика сделок участников ЛЧИ на графике (писал об программе ранее).

ЛЧИ Viewer 2.0

Исправили ошибки, что написали ранее.

Добавили новые фичи:

  • Отображение кривой Эквити. На картинке с Bull видно ее «плавность». Если бы я лично не верил в честность торговли на бирже, подумал страшное слово — Инсайд.
  • График изменения позиции во времени.
  • Детальная статистика по сделкам (справа).
Качаем как и раньше — из группы ВКонтакте. Просьба дублировать сообщения на форум так как в прошлый раз оповещения на почту получил сразу в конце дня ото всех, и отвечать некоторым было не актуально.

ЛЧИ Viewer

Один из учеников прислал программу отображения сделок участников ЛЧИ на графике (для поиска Грааля) с индикаторами. Мы решили с согласия автора довести программу до потребительского уровня (красивые кнопочки, куда же без них?), и выложить для общего пользования.

Ниже сделки по Доллар-Рубль мега-участника нынешнего конкурса Bull (ответ на вопрос как заработать 12 млн. руб. за 1 день, где-то рядом):

ЛЧИ Viewer

Или, знаменитого Василия Олейника (ответ на вопрос как слить миллион, тоже где-то тут):

ЛЧИ Viewer

А вот как выглядят сделки HFT роботов на тиковом графике РИ (без комментариев):

ЛЧИ Viewer

ЛЧИ Viewer

Инструкция по установке и использованию.

Пользуйтесь, отписывайте о своем впечатлении. Кто хочет поправить или внести свои замечания - welcome на форум.

Познаем суть трейдинга через арбитраж и опционы

В опционах есть одна очень важная для понимания сути спекуляций вещь — справедливая стоимость актива.

Арбитраж это наиболее распространенные системы торговли — даже обычная направленная сделка есть арбитраж цены во времени.

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

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

( Читать дальше )

Macd.lua

    • 23 ноября 2014, 14:48
    • |
    • XXM
  • Еще
                                                       
                                                       Воскресное чтиво.
                                                       В образовательных целях.

------------------------------------------------------------------------
— Macd.lua, © hismatullin.h@gmail.com, 23.11.2014
— Короткий период: period1
— Длинный период: period2
— Количество периодов сигнальной скользящей средней: period3
— метод усреднения линий: Exponential
------------------------------------------------------------------------
Settings =
     {
          Name = «Macd»,
          period1 = 12, period2 = 26, period3 = 9,
          line=
               {
                    {Name = «Macd», Color = 8404992, Type = 1, Width = 2},
                    {Name = «Sign», Color = 32768, Type = 1, Width = 2}
               }
     }
-------------------------------
function Init()
     Macd = cached_Macd()
     return 2
end
-------------------------------
function OnCalculate(index)
     return Macd(index, Settings.period1, Settings.period2, Settings.period3)
end
-------------------------------
function average(_start, _end)
     local sum=0
     for i = _start, _end do
          sum=sum+C(i)
     end
     return sum/(_end-_start+1)
end
-------------------------------
function cached_Macd()
     local cache_EMA_long={}
     local cache_EMA_short={}
     local cache_MACD={}
     local cache_Sign={}
     return function(ind, _p01, _p02, _p03)
          local n_ema_short = 0 --теущий EMA короткий
          local p_ema_short = 0 --предыдущий EMA короткий
          local n_sign = 0 --теущий sign
          local p_sign = 0 --предыдущий sign
          local period_short = _p01
          local period_long = _p02
          local period_sign = _p03
          local index = ind
          local k_short = 2/(period_short+1)
          local k_long = 2/(period_long+1)
          local k_sign = 2/(period_sign+1)
          if index == 1 then
               cache_EMA_long = {}
               cache_EMA_short = {}
               cache_MACD = {}
               cache_Sign={}
          end
          -----------------------------------------------
          if index < period_long then
               cache_EMA_long[index] = average(1,index)
               return nil
          end
          p_ema_long = cache_EMA_long[index-1] or C(index)
          n_ema_long = k_long*C(index)+(1-k_long)*p_ema_long
          cache_EMA_long[index] = n_ema_long
          -----------------------------------------------
          if index < period_short then
               cache_EMA_short[index] = average(1,index)
               return nil
          end
          p_ema_short = cache_EMA_short[index-1] or C(index)
          n_ema_short = k_short*C(index)+(1-k_short)*p_ema_short
          cache_EMA_short[index] = n_ema_short
          -----------------------------------------------
          --считаем сигнальную
          cache_MACD[index] = n_ema_short-n_ema_long
          p_sign = cache_Sign[index-1] or cache_MACD[index]
          n_sign = k_sign*cache_MACD[index]+(1-k_sign)*p_sign
          cache_Sign[index] = n_sign
          -----------------------------------------------
          return n_ema_short-n_ema_long, n_sign
     end
end
------------------------------------------------------------------------ 

Идея простого робота для интрадея в fRTS. Опережающий индикатор движений.

    • 22 ноября 2014, 14:12
    • |
    • Romanio
  • Еще
Всем привет. 

     Думаю многие новички начинают строить роботов исходя из простых индикаторов, цены инструмента и поиска параметров скользящих средних. Но оказывается, что в движении фьючерса РТС слишком много шума, и ложных сигналов. А при увеличении периода скользящих, при попытке ловить только сильные движения неизбежно возникает сильное запаздывание при срабатывании индикатора, и сделки открываются когда движение уже подходит к концу.    

    Идея — анализировать не цену инструмента, а таблицу всех сделок. Получаем ОПЕРЕЖАЮЩИЙ ИНДИКАТОР.
 
Рассмотрим таблицу всех сделок для RIZ4

Идея простого робота для интрадея в fRTS. Опережающий индикатор движений. 

Непрерывно суммируем количество всех новых сделок — если сделка КУПЛЯ — то прибавляем, если ПРОДАЖА — то вычитаем.
В итоге получаем график дельты. И его отличие от графика цены в том, что он более сглажен, и двигается он с небольшим опережением к графику цены, что позволяет наложив на него простой индикатор тренда всегда предсказывать движения цены заранее.

( Читать дальше )

Qlua для чайников. Часть 6. Модуль торговли. Остатки по бумагам на фондовом рынке. Удаление заявок

    • 18 ноября 2014, 16:27
    • |
    • orekton
  • Еще
Закончим писать робота, который мы начали на предыдущих уроках. Напомню, что мы пишем робота-спредера. Он будет выставлять заявки на покупку и на продажу, если в стакане достаточно большой спред. На данный момент наша заготовка робота может корректно определять крайние цены в стакане с учетом уже выставленных заявок. Настало время написать модуль, который будет торговать.Qlua для чайников. Часть 1Qlua для чайников. Часть 2. ЦиклыQlua для чайников. Часть 3. Работа со стаканомQlua для чайников. Часть 4. Анализ информации из стакана и работа с заявкамиQlua для чайников. Часть 5. Работа с таблица Quik. Поиск заявок. Искусство отладкиКакие функции должен выполнять этот модуль торговли? Сейчас я перечислю их:
  • Проверять размер спреда, если он больше заданной величины, то это сигнал на совершение сделки.
  • Выставлять заявки, если есть сигнал.
  • Следить затем, чтобы не было выставлено лишних заявок – если заявка выставлена но еще не сработала, то новую заявку не выставляем.
  • Переставлять заявки, если изменились крайние цены в стакане.
  • Следить за количеством инструмента – если, например, мы выставили заявку на покупку и на продажу, одна из них сработала или частично сработала, а потом изменились цены, то при перевыставлении заявок надо учесть этот факт.


( Читать дальше )

SuperScalp. Первая звезда на погонах.

    • 17 ноября 2014, 13:27
    • |
    • XXM
  • Еще
SuperScalp, версия 1.1. (начало здесь: http://smart-lab.ru/blog/207666.php)
 
SuperScalp. Первая звезда на погонах.

1. написан на QLUA, для ФОРТС, с исходным кодом, приправлен комментариями;
2. бесплатен, без ограничения сроков, «Free software». 
3. без графики и хоткеев всяких.

Настройки — в строках кода:

function getInitParameter()
       account = 'SPBFUT00995'
       classCode = 'SPBFUT'
       secCode = 'SRZ4'
       workSize = 10
       OpenSlippage = 50
       Frequency = 500
end


Скачать: SuperScalp.lua

RIZ4 Nov (17 ноября. утро)

Еще в пятницу вечером я зайнейтралил позу:
RIZ4 Nov (17 ноября. утро) 
теперь интерес только к процессу экспирации — как поведет себя софт приуменьшении времени до нуля, и собственно пройдет ли гладко исполнение.
Фин рез, еще пока не окончательный:

( Читать дальше )

....все тэги
UPDONW
Новый дизайн