Открыть на GitHub

Схема стратегии «Стохастик ночной сессии»

Стохастический осциллятор на четырёхчасовых свечах, которому разрешено действовать только ночью. Интересна здесь не формула осциллятора, а часы: ночная сессия начинается вечером и заканчивается на следующее утро, поэтому её начало приходится на более позднее время суток, чем окончание, и один блок Working time такой интервал описать не может. Поэтому схема собирает ночь из двух половин — одна до полуночи, другая после — и сводит их в один ответ прежде, чем на него посмотрит что-либо ещё.

Обзор стратегии

  • Всей схемой управляют завершённые четырёхчасовые свечи, так что каждое решение принимается по закрытому бару и ничто не реагирует на ещё формирующийся бар.
  • По этим свечам считается осциллятор Stochastic с 14-барным %K и 3-барным %D, а Converter вынимает из его значения линию %K; %D только рисуется и в торговле не участвует.
  • Два блока Working time читают момент открытия каждой свечи: один охватывает 21:00 — 23:59:59, другой 00:00 — 06:00. Ни один из них по отдельности ночью не является.
  • Блок Logical condition, настроенный на Exclusive or, соединяет две половины в один ночной сигнал. Половины не пересекаются, поэтому открытой одновременно может быть ровно одна из них, и блок даёт ответ один раз на свечу, имея на руках обе половины.
  • Два блока Comparison сравнивают %K с уровнями перепроданности и перекупленности, ещё два сравнивают позицию с нулём, что говорит схеме, вне рынка она, в лонге или в шорте.
  • Четыре вентиля And на блоках Logical condition сводят эти три факта — ночь, осциллятор, позиция — в два входа и два выхода, так что ни один вентиль не сработает, пока с ним не согласятся часы.
  • Входы — это блоки Position modify с условием Open position: рыночная заявка на Order Volume уходит только тогда, когда позиция ровно нулевая, — именно это не даёт одному сигналу превратиться в поток заявок.
  • Блок Chart panel рисует свечи, осциллятор и каждую заявку и сделку, которые порождает схема, так что ночные окна читаются прямо с картинки.

Правила входа и выхода

  • Вход в лонг: Пока ночь открыта, позиция нулевая, а %K ниже уровня перепроданности, срабатывает вентиль лонга, и Position modify покупает Order Volume по рынку. Условие Open position на этом блоке означает, что повторение того же показания ничего не меняет, пока позиция снова не будет закрыта.
  • Вход в шорт: Зеркальное отражение: открытая ночь, нулевая позиция и %K выше уровня перекупленности заставляют сработать вентиль шорта, и Position modify продаёт Order Volume по рынку по тому же условию Open position.
  • Выход: Здесь нет ни take-profit, ни stop-loss, ни закрытия по времени. Лонг закрывается противоположным экстремумом — %K выше уровня перекупленности при длинной позиции, — а шорт закрывается, когда %K уходит ниже уровня перепроданности при короткой позиции; оба выхода идут через блок Position modify с условием Close position, который сам берёт открытый объём. Выходы тоже находятся внутри ночного окна, поэтому позиция, открытая ночью, проносится через день и отпускается следующей ночью. Закрытие и переворот — два разных события: экстремум, закрывающий лонг, лишь обнуляет позицию, а шорт открывает уже следующее показание того же рода.

Параметры

Параметр По умолчанию Описание
Candles 04:00:00 Четырёхчасовой таймфрейм, собранный из более мелких свечей, доступных в данных. Обрабатываются только завершённые свечи, и каждая из них датируется моментом своего открытия — именно это решает, к какой сессии она относится.
%K Length 14 Глубина просмотра назад для линии %K: по скольким свечам осциллятор оценивает цену закрытия.
%D Length 3 Длина сглаживания линии %D. Она рисуется на панели и не входит ни в одно условие.
Evening Half From 21:00:00 Начало той половины ночи, что лежит до полуночи. Половины нужно держать раздельно: им положено встречаться в полночь, а не перекрываться.
Evening Half Until 23:59:59 Окончание вечерней половины. Одна секунда до полуночи закрывает её, не давая коснуться следующей половины.
Morning Half From 00:00:00 Начало той половины ночи, что лежит после полуночи, — сама полночь.
Morning Half Until 06:00:00 Окончание утренней половины, а вместе с ней и конец ночи. После этого часа ни один вентиль схемы не сработает, пока снова не откроется вечерняя половина.
Oversold Level 30 Уровень, ниже которого %K считается перепроданностью: он открывает лонг при нулевой позиции и закрывает шорт, если тот открыт.
Overbought Level 70 Уровень, выше которого %K считается перекупленностью: он открывает шорт при нулевой позиции и закрывает лонг, если тот открыт.
Order Volume 1 Количество, которое отправляют оба входа. Выходы его игнорируют и закрывают то, что открыто.

Детали диаграммы

  • Блок Candles подписывается на четырёхчасовую серию с включённой опцией только сформированных свечей и помечает каждое отправляемое значение моментом открытия свечи. Именно эту метку читают блоки времени, поэтому свеча относится к той сессии, в которую попадает час её открытия, что бы ни происходило в следующие четыре часа.
  • Indicator держит осциллятор Stochastic и передаёт значения дальше только после того, как тот сформирован, поэтому первые бары истории заряжают расчёт, не порождая сигналов. Converter вынимает из значения осциллятора поле %K и отдаёт сравнениям обычное число.
  • Два блока Working time — главное в этой схеме. Каждый из них истинен, пока время суток лежит между его собственными границами, а значит блок в принципе не может описать окно, переходящее через полночь: его начало оказалось бы позже окончания, и проверка не прошла бы никогда. Разрез ночи по полуночи даёт два обычных окна, а стоящий над ними Logical condition собирает ночь обратно.
  • Position сравнивается с нулевой Variable сразу тремя блоками Comparison — равно, больше, меньше, — и эти три ответа отделяют два входных вентиля от двух выходных. Уровни перепроданности и перекупленности и объём заявки тоже заданы через Variable, поэтому каждое число, о котором спорит схема, — это параметр, а не значение, закопанное внутрь блока.
  • На вентилях работают четыре блока Position modify. Два входа несут условие Open position и берут количество из Variable с объёмом; два выхода несут условие Close position и в количестве не нуждаются, потому что закрывающая заявка рассчитывается по позиции, которую она отменяет. Их заявки и сделки уходят в Chart panel вместе со свечами и осциллятором.

Использование

Импортируйте файл .json в Designer, прогоните схему на исторических данных в тестере, затем подстройте параметры или сами кубики под свой инструмент, прежде чем торговать вживую.