Избранное трейдера Ramil Shahattudinov
Я вижу, как сейчас рынок акций валится вниз, но за черной полосой всегда наступит белая. Паника — плохой советчик для депо. Думаю, мощные индикаторы технического анализа для QUIK, которых нет в коробке, помогут вам принять взвешенное инвестиционное решение.
Встроенный набор индикаторов в QUIK не менялся, кажется, со времен палеозоя. Пока весь мир пишет роботов, мы до сих пор вынуждены руками настраивать базовые вещи. Короче, мне надоело, я сел и перенес на Lua три отличных инструмента. Ловите индикаторы! Код полностью открыт, забирайте «как есть».
Что в коробке? Разбор и интерпретацияВся базовая тройка настроена и протестирована на графике Сбера. Они идеально работают в связке: один фильтрует глобальный тренд, второй смотрит объемы, третий ловит локальный импульс.
Классика, которой почему-то нет в стандартном QUIK в виде единого файла. Рисуется прямо на графике цены.
Как читать: Зеленая линия — быстрая (50), красная — медленная (200).
Просадка — не трагедия, а диагноз. После сильного падения портфеля важно не «отыграться», а перестроить систему управления рисками. Ниже — разбор практик, которые применяются в профессиональной среде: от декомпозиции убытка до стресс-моделирования и реконфигурации позиций. Без теории ради теории — только рабочие подходы и реальные примеры.

Сильная просадка отрезвляет лучше любого учебника. Пока кривая капитала ползёт вверх, риск кажется чем-то абстрактным — цифрой в отчёте брокера. Но когда портфель теряет 25–40% за квартал, разговоры про волатильность перестают быть умными словами.
В такие моменты у многих включается режим импровизации: закрыть всё, усредниться, увеличить плечо, чтобы быстрее восстановиться. Именно здесь совершается вторая ошибка — первая уже в графике.
Системное управление рисками начинается не с новых сделок, а с холодного аудита того, что произошло.
Первое, что делают профессионалы — декомпозируют убыток. Не «рынок был плохой», а конкретные источники потерь.


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

Тенденция — это, попросту говоря, направление рыночного движения.… Рынки зачастую движутся между двумя параллельными линиями
Джон Мэрфи
Алгоритмические стоп-лоссы и тейк-профиты всегда можно визуализировать. То же можно проделать и с другими алгосигналами открытия и закрытия. Главное преимущество человека над торговым роботом — визуальное восприятие картинки торгов, как текущей, так и в прошлой истории. Так почему бы этим не воспользоваться?
Как-то упоминал о своем любимом индикаторе SavMeter, основанном на линиях двух SAR. Одна линия — трендовая. По ней открывается позиция. Другая, более быстрая, — замена трейлинг-стопа. При ее пробитии, позиция закрывается. Глядя на историю можно легко отрегулировать расстояние линий так, чтобы не было слишком много ложных сигналов. Это проще и быстрее, чем гонять тестера на истории.
Что особенно важно, индикатор SavMeter несет в себе эффект синергии. Объединяет сразу несколько инструментов. Объединенный график становится более сглаженными, это тоже уменьшает ложные сигналы. Корректировать параметры на одном графике проще, чем заниматься оптимизацией на графиках каждого отдельного инструмента.
-- График должен быть открыт в Quik'е
Class = "SPBFUT" -- "CETS_MTL" "CETS"
SecId="BRK4" -- "NGJ4" "GLDRUB_TOM" "USD000UTSTOM" "SiZ3"
Intrvl = INTERVAL_H1 -- D1 -- M5
Header = "<TICKER>;<PER>;<DATE>;<TIME>;"..
"<OPEN>;<HIGH>;<LOW>;<CLOSE>;<VOL>"
Period = "60" -- Дневки - 0, W1, MN1, H4, H2 - недопустимо
function Log (i)
local t = DS:T(i)
local ymd = string.format ("%04d%02d%02d", t.year, t.month, t.day)
local hms = string.format ("%02d%02d%02d", t.hour, t.min, t.sec);
if not (IniDt <= ymd and ymd <= FinDt) or
not (IniTm <= hms and hms <= FinTm) then return end
local str = string.format ("%s;%s;%s;%s;%.4f;%.4f;%.4f;%.4f;%.0f\n"
,SecId, Period, ymd, hms
,DS:O(i), DS:H(i), DS:L(i), DS:C(i), DS:V(i))
F:write (str)
end -- Log()
function OnInit (scriptPath)
qu = require ("QuikUtil(qu)") -- lu,qc,tu
ScriptDir, ScriptName = lu.