Избранное трейдера Андрей Вячеславович (Ganesh)

по

Опыт доработки QLua-скриптов для QUIK 8.5.2

    • 15 мая 2020, 16:29
    • |
    • _sk_
  • Еще
В новой версии терминала QUIK 8.5.2 произведён апгрейд языка Lua для написания торговых скриптов с версии 5.1 до версии 5.3. Это нужно для того, чтобы корректно обрабатывать 19-значные номера заявок и сделок на срочном рынке МосБиржи. Типа number в Lua 5.1 не подходит: там все числа хранятся как double, соответственно целые числа до 2^53 = 9 007 199 254 740 992 записываются без потери точности, а 19-значные номера заявок и сделок будут больше этой границы.

Версия Lua 5.3 обратно несовместима с Lua 5.1. Я почти не использовал внешние библиотеки и для меня было два важных изменения: отказ от module (это было сделано в версии 5.2) и введение целочисленной арифметики (версия 5.3).

Для избавления от использования module пришлось переработать много кода, хотя изменения были несложные. Приведу пример. Раньше был такой код Arrays.lua для работы с массивами:

--
-- Выполнение действий с массивами.
--

local pairs = pairs
local type = type

module(...)

--- Создать копию массива (таблицы)
-- @return копию массива (таблицы)
function copy(array)
    local copy_array = {}
    if type(array) ~= "table" then
        return array
    end
    for k, v in pairs(array) do
        if type(v) == "table" then
            copy_array[k] = copy(v)
        else
            copy_array[k] = v
        end
    end
    return copy_array
end

--- Узнать, начинается ли индексация в массиве с нуля или с единицы.
-- @return 0 или 1
function base(array)
    if array[0] ~= nil then
        return 0
    else
        return 1
    end
end

--- Вычислить число элементов в массиве.
-- @return число элементов в массиве
function size(array)
    local n = 0
    for _, _ in pairs(array) do
        n = n + 1
    end
    return n
end

--- Проверить пустой или нет массив.
-- @return true/false
function isEmpty(array)
    for _, _ in pairs(array) do
        return false
    end
    return true
end

--- Получить первый индекс массива, где ничего не записано. Поиск начинается с 1.
-- @return первый индекс массива, где ничего не записано
function firstEmptyIndex(array)
    local i = 1
    while array[i] ~= nil do
        i = i + 1
    end
    return i
end


( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Идеальная "торговая система" А. Г. в реалиях нашего рынка

А. Г. интересную идеальную штуку описывает у себя в видео.

Прогоним эту систему без заглядывания в будущее на нашем рынке по следующим правилам:
Buy at open[m] if close[m-1]>OPEN[d] and HIGH*[m-1]+LOW*[m-1]>HIGH[d-1]+LOW[d-1].
Sell at open[m] if close[m-1]<OPEN[d].

Пояснения:
Расчеты делаются по минуткам opn, high, low, close.
m — текущая минута, которая только началась.
OPEN, HIGH, LOW это дневные значения. 
d — текущий день.
HIGH* и LOW* это максимум и минимум текущего дня с открытия и по завершившуюся минуту m-1.

Далее будут эквити без учета издержек.

Si (8% годовых при срсделке 0,01%):
Идеальная "торговая система" А. Г. в реалиях нашего рынка





























RI (22% годовых при срсделке 0,05%):
Идеальная "торговая система" А. Г. в реалиях нашего рынка

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

Как не стать Коровиным?

Доброе утро, страна.

В эфире опционный уголок и сегодня мы ответим на вопрос нашего читателя:

Как не стать Коровиным?

Дополню также вопрос про Коровина наглядным эквити Кубатая и спрошу, а как не стать Кубатаем?

Как не стать Коровиным?

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

Бесплатный робот на quik XoraX боковик на lua, нефть Brent

    • 13 мая 2020, 22:26
    • |
    • XoraX
  • Еще
Робот очень хорошо держит боковик в определённом диапазоне. Точку входа соответственно надо искать самому, желательно если вы уверены что рынок уже будет в боковике и идти ему некуда. Робот будет совершать покупку и выставлять заявку на продажу с установленным профитом в панели управления. Можно установить чтобы он покупал только по 2 или 3 контракта, просто устанавливаете 3 контракта «add» и он будет покупать и продавать 3 контракта, но не более того что разрешено. На последнем скрине например установлено покупать до 10 контрактов. 
При падении, если тренд пошел вниз, робот совершает так же покупку, но постоянно старается увеличить промежуток покупки.
Если робот ранее покупал на текущем участке(промежутке) то он не будет покупать здесь, пока не продаст.


Бесплатный робот на quik XoraX боковик на lua, нефть Brent
Бесплатный робот на quik XoraX боковик на lua, нефть Brent

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

Коронавирус пора заканчивать.

Да, на законодательном уровне пора с ним завязывать, население устало, пластинка износилась. И вот после 12 мая произошло знаменательное событие, выпуски недоновостей теперь начинают со слов «количество выздоровевших составило», а ведь раньше начинали их с подсчёта умерших… Манипуляция сознанием налицо! 2212 человек погибло от пандемии на данный момент в РФ. Запомнили число? А теперь самое время вернуться на 10 лет назад, аккурат в 2010й..
Коронавирус пора заканчивать.
Эх, Обама… Ну да ладно… Знакомая картинка?! А вот с другого ракурса:
Коронавирус пора заканчивать.

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

Принцип "Покупай на слухах, продавай по факту" работает очень хорошо на бирже

Как ожидается, 15 января США и Китай подпишут «первую фазу» торгового соглашения — и это станет самым заметным шагом к сближению между ними с начала полномасштабной торговой войны в июле 2018 года. С тех пор стороны предприняли несколько раундов взаимного повышения торговых пошлин. Для сделки вице-премьер Госсовета КНР Лю Хэ 13 января прибудет в Вашингтон.

 

Это старое сообщение со СМИ от 13 января 2020 года. Тогда все радовались, что наконец-то, заключено соглашение! А по факту началось жуткое падение на фонде.

 Принцип "Покупай на слухах, продавай по факту" работает очень хорошо на бирже 

Что интересно — нас начали валить первых, потому что менее ликвидные. Сперва выходят из неликвидных рынков

А потом уже начали валиться американцы



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

писец котёнку и 19ти значные номера

Комбо из quik-8.4.х+tslab всплыла пузом вверх. Повезло, что на выходные системы ушли без позиции, а то-бы я сейчас скакал как зайчик. tslab + smartcom выглядит вполне живым, что называется вот вам матожидание. Смартком регулярно имеет мозг обрывами, зато бесшовно пережил обновление движка биржи. Квик пахал годами без единого разрыва (тм) и раскорячился при серьезной встряске. Что интересно, обновление вроде как было заявлено на 8 июня, я с чистой совестью собирался подождать пару недель, пока всё утрясется, но не судьба. Хотя, скажу честно, что-то меня настораживает 'бесшовность' смарткома. Чудес-то не бывает....

p.s. quiksharp.lua под 8.5 не запускается… еще искать его где-то надо.
  • обсудить на форуме:
  • TSLab

Моделирование Торговых Систем на Python. 2.

    • 12 мая 2020, 10:29
    • |
    • 3Qu
  • Еще

Тем, кто не читал предыдущий топик этой темы, рекомендую для начала ознакомиться с ним [1].

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

Ну, а сейчас мы займемся разработкой и тестированием индикаторов. Для начала нам нужна простейшая стратегия с использованием МА — его и построим. Самой лучшей по характеристикам МА является ЕМА. Формула ЕМА:



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

Zoppo - гений !!! По мотивам одноименной книги от Набиржеон

Доброе утро, коллеги!

Не успел я проснуться, как выяснил, что биржевой код взломан.
Это означает, что все мы (ну м.б. после окончания карантина) сразу становимся безработными. А это уже неприятно.

Познакомившись с трудами Zoppo/Набиржеон повнимательнее, я нашел в них пару умных мыслей. Собственно, только 2 эти мысли и были опубликованы )))

1. На коротких таймфреймах оптимальная стратегия очевидна
2. На длинных таймфреймах ее нет, и быть не может

Это уже совсем не такая абсолютная чушь, как тотальный взлом рынка. Мои личные исследования показывают, что на коротких таймфреймах действительно присутствуют супердоходные стратегии, которые стремительно теряют доходность при удлинении интервала квантования. При таймфрейме 10-36 часов эти extra fee уходят в никуда и мы приближаемся в хотелках к безрисковой ставке с некоей премией.

ОДНАКО: Активные (HFT?) стратегии несут в себе большие издержки. Довольно просто придумать стратегию (на любом активе), которая будет показывать идеальную эквити (Шарп больше 100, к примеру) при торговле без комиссий. При этом доход на сделку у типичной системы такого класса держится примерно на уровне половины спрэда, что полностью убивает потенциальную прибыль. Впервые такие плюшки я придумал в 1999, но, ввиду практически полной трейдинговой бесполезности, до сих пор использую их как некие индикаторы.

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

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