Кодекс рыночных состояний в MQL5 (Часть 1): Побитовое обучение на примере Nvidia
Мы начинаем новую серию статей, которая развивает наши предыдущие наработки, изложенные в серии о MQL5 Wizard, и продвигает их дальше по мере усиления нашего подхода к системной торговле и тестированию стратегий. В этой новой серии мы сосредоточимся на советниках, запрограммированных на удержание только одного типа позиций — преимущественно длинных. Сосредоточение на одном направлении торговли может упростить анализ, снизить сложность стратегии и дать важные наблюдения, особенно при работе с активами за пределами Forex. Поэтому в этой серии мы исследуем, эффективен ли такой подход для акций и других невалютных активов, где long-only-системы часто хорошо согласуются с подходом smart money и стратегиями институциональных участников.
Моделирование рынка (Часть 24): Первые шаги на SQL (VII)
В предыдущей статье мы завершили необходимое введение в тему SQL. И то, что мы хотели показать и объяснить о SQL, на мой взгляд, мы разъяснили должным образом. Так было сделано для того, чтобы каждый, кто придет посмотреть на строящуюся систему репликации/моделирования, мог хотя бы получить представление о том, что там может происходить. Дело в том, что нет смысла программировать вещи, с которыми SQL справляется идеально.
Разработка инструментария для анализа Price Action (Часть 54): Фильтрация трендов с помощью EMA и сглаженных ценовых данных
В этой статье рассматривается метод, сочетающий сглаживание Heikin-Ashi с границами EMA20 по максимумам и минимумам, а также фильтром тренда EMA50, чтобы сделать сигналы понятнее, а входы точнее. Статья показывает, как эти инструменты помогают трейдерам выявлять реальный импульс, отсекать шум и увереннее работать на волатильном или трендовом рынке.
Моделирование рынка (Часть 21): Первые шаги на SQL (IV)
Многие из вас, возможно, обладают гораздо большим опытом в области работы с базами данных, чем я, и, следовательно, имеют другое мнение. Поскольку было необходимо дать объяснение, почему базы данных создаются именно так, как они создаются, и нужно объяснить, почему SQL имеет именно такой формат и, прежде всего, почему появились первичные ключи и внешние ключи, поэтому пришлось оставить некоторые вещи немного абстрактными.
Моделирование рынка (Часть 23): Первые шаги на SQL (VI)
В этой статье мы рассмотрим, как выполнить визуализацию и, следовательно, поймем, как структурирована база данных. Это было сделано с помощью анализа внутренней структуры базы данных. Хотя подобные вещи могут показаться излишними, они вполне оправданы, если мы действительно намерены стать администраторами баз данных. Да, есть люди, которые зарабатывают на жизнь, поддерживая и создавая базы данных.
Двумерные копулы в MQL5 (Часть 1): Реализация гауссовой копулы и t-копулы Стьюдента для моделирования зависимостей
Это первая часть серии статей, посвящённых реализации двумерных копул в MQL5. В статье представлен код, реализующий гауссову копулу и t-копулу Стьюдента. Также рассматриваются основы статистических копул и связанные с ними темы. Код основан на Python-пакете ArbitrageLab от Hudson and Thames.
Моделирование рынка (Часть 22): Первые шаги на SQL (V)
Прежде, чем вы сдадитесь и решите отказаться от изучения SQL, позвольте мне напомнить вам, уважаемые читатели, что здесь мы всё ещё используем только самые базовые элементы. Мы ещё не рассмотрели некоторые возможности SQL. Как только вы их усвоите, вы увидите, что SQL гораздо практичнее, чем кажется. Хотя, скорее всего, мы в конечном итоге изменим направление того, что мы создаем, потому, что процесс создания является динамичным. Мы покажем немного больше о создании разных вещей в SQL, ведь это по настоящему важно и нужно вам. Просто думать, что вы более способны, чем целое сообщество программистов и разработчиков, приведет только к потере времени и возможностей. Не переживайте, потому что дальше будет ещё интереснее.
Моделирование рынка: Первые шаги на SQL в MQL5 (II)
Хотя многие считают, что мы можем без проблем встраивать SQL-код в другой код, обычно это не так. Причина заключается в том, что SQL-код включается в исполняемый файл в виде строки. И тот факт, что SQL-код внедряется в виде строки, хотя и не вызывает проблем в небольших фрагментах, в итоге это может создать нам немало головной боли.
Моделирование рынка (Часть 17): Сокеты (XI)
Реализация той части кода, которая будет работать в MetaTrader 5, не представляет сложности. Однако есть несколько моментов, которые нужно учитывать. Это необходимо для того, чтобы вы смогли заставить систему работать. Запомните одну важную вещь: будет запущена не одна программа. В реальности нам придётся запускать три программы одновременно. Важно реализовать и построить каждую из них так, чтобы они могли взаимодействовать и общаться одна с другой, и чтобы каждая из них понимала, что пытается или хочет сделать другая.
Моделирование рынка: Position View (VI)
В данной статье мы внесем ряд улучшений, чтобы индикатор позиции точно отражал реальное состояние дел на торговом сервере с точки зрения открытых позиций и их текущего состояния. Я должен напомнить, что эти приложения, которые будут здесь показаны, ни в коем случае не предназначены для замены каких-либо элементов, доступных в MetaTrader 5. Их также не следует использовать без должной осмотрительности и взвешенного подхода, поскольку их цель — представить обучающий код, то есть предназначенный исключительно для изучения принципов работы системы. Причина, по которой я называю этот код обучающим, заключается в том, что использование сообщений в некоторых случаях не является лучшим способом реализации определенных функций.
Моделирование рынка: Position View (III)
В предыдущих статьях мы упоминали, что иногда нам необходимо задать значение для свойства ZOrder. Но почему? Причина в том, что многие коды, добавляющие объекты на график, просто не используют или, точнее, не определяют значение для этого свойства. Дело в том, что я здесь не для того, чтобы говорить, что должен или не должен делать каждый программист, или как он должен или не должен писать свой код. Я здесь для того, чтобы показать вам, уважаемый читатель, и всем, кто действительно хочет понять внутреннее устройство процессов, что именно происходит за кулисами.
Моделирование рынка: Position View (VIII)
В предыдущей статье мы рассмотрели, как можно реализовать индикатор позиции для закрытия открытой позиции непосредственно с графика, взаимодействуя с доступным на нем объектом. После завершения и проверки работы первого механизма мы приступили к внесению изменений, чтобы обеспечить возможность удаления линий тейк-профита и стоп-лосса для открытой позиции. Однако, поскольку необходимые изменения требовали подробных объяснений, в той же статье я показал только те изменения, которые необходимо было внести в советник, но всё ещё требовалось показать изменения, которые необходимо было внести в индикатор позиции.
Моделирование рынка: Первые шаги на SQL в MQL5 (IV)
Многие люди склонны недооценивать SQL или даже вообще не использовать его, потому что не до конца понимают, как он на самом деле работает. При выполнении запросов к базе данных SQL мы не всегда ищем универсальный ответ, а в некоторых случаях нам нужен очень конкретный и практичный ответ. Если создать базу данных с надлежащей структурой и моделью данных, в неё можно будет интегрировать практически любые типы информации.
Теория графов: Алгоритм Форда—Фалкерсона для оценки ликвидности и пропускной способности рынка
В статье представлен советник на MQL5, который адаптирует метод максимального потока Форда-Фалкерсона в фильтр ликвидности и пропускной способности. Рыночные структуры — максимумы/минимумы свингов, ценовой дисбаланс (FVG), ордер-блоки и пулы ликвидности — образуют ориентированный граф с пропускной способностью ребер, определяемой объемом, ценовой реакцией, расстоянием и качеством структуры. Максимальный поток позволяет оценить возможности ICT-сделок, отфильтровать слабые пути и использовать динамическое управление размером позиции для последовательного двухэтапного процесса принятия решений.
Кодекс рыночных состояний в MQL5 (Часть 2): Побитовое обучение и мультипаттерны на примере Nvidia
Мы продолжаем нашу новую серию о рыночном позиционировании, в которой изучаем отдельные активы с конкретными направлениями сделок на управляемых тестовых окнах. Мы начали её с рассмотрения акций Nvidia Corp в предыдущей статье, где разобрали 5 сигнальных паттернов, основанных на взаимодополняющем сочетании осцилляторов RSI и DeMarker. В этой статье мы рассмотрим оставшиеся 5 паттернов, а также мультипаттерн-варианты — от произвольных комбинаций всех десяти сигналов до более узкоспециализированных сочетаний.
Моделирование рынка: Position View (IV)
Здесь мы начнем объединять различные компоненты или приложения, которые ранее были полностью изолированы друг от друга. Chart Trade, индикатор мыши и советник уже были связаны между собой, однако всё ещё отсутствовал способ прямой визуализации на графике открытых на торговом сервере позиций, которые зачастую обрабатывались через систему встречных ордеров. С этого момента это становится возможным, открывая путь для различных идей и будущих реализаций. Хотя мы только начинаем внедрять эти компоненты в работу, у нас уже появится направление для дальнейшего развития.
Разработка инструментария для анализа Price Action (Часть 57): Создание модуля классификации состояния рынка на MQL5
В этой статье представлен модуль классификации состояния рынка на MQL5, который интерпретирует поведение цены по данным закрытых свечей. Анализируя сжатие и расширение волатильности, а также согласованность структуры, инструмент классифицирует состояние рынка как сжатие, переходное состояние, расширение или тренд и тем самым формирует четкий контекст для анализа Price Action.
Моделирование рынка: Position View (V)
Несмотря на изложенное в предыдущей статье, это кажется чем-то простым. Там перед нами стоят различные проблемы и множество задач, которые нужно решить и выполнить. Вы, уважаемый читатель, можете представить, что всё легко и просто. По наивности вы просто принимаете то, что вам предлагают. И это ошибка, которой вам, уважаемый читатель, следует постараться избежать. Хуже простого принятия — непонимание и попытка использовать что-то без реального осознания того, что именно используется. Среди новичков часто встречается этап копирования и вставки кода. Если вы не хотите навсегда остаться на этом этапе, стоит научиться использовать определенные инструменты. Одним из наиболее часто используемых программистами инструментов является документация. Второй инструмент состоит из тестов и лог-файлов. Здесь мы увидим, как это сделать.
Моделирование рынка: Position View (II)
В этой статье я покажу как максимально просто и практично использовать индикатор для отслеживания открытых позиций на торговом сервере. Я делаю это именно так, шаг за шагом, чтобы показать, что вам не обязательно переносить всё это в советник. Многие из вас, вероятно, уже привыкли к этому по той или иной причине. На самом деле это ерунда, так как по мере развития данной реализации станет ясно, что вы сможете создавать или реализовать различные типы индикаторов для этой цели.
Разработка инструментария для анализа Price Action (Часть 56): Анализ принятия и отвержения на границах сессии с помощью CP
В этой статье представлен сессионный аналитический подход, сочетающий рыночные сессии с заданными временными границами и индекс давления свечи (CPI), чтобы на основе закрытых свечей и четко определенных правил классифицировать принятие и отвержение на границах сессий.
Моделирование рынка: Position View (VII)
В данной статье мы начнем вносить некоторые улучшения в индикатор позиции, чтобы иметь возможность взаимодействовать с ним и изменять ценовые линии или закрывать позицию напрямую через взаимодействие с индикатором позиции. Прежде чем мы перейдем к реализации, стоит кое-что уточнить, особенно для тех, кто об этом не знает. Индикатор никак не может использоваться для изменения чего-либо на торговом сервере. Это связано с тем, что в MetaTrader 5 действует система безопасности, которая позволяет воздействовать на ордера и позиции только советникам. Никакое другое приложение, кроме советника, не сможет манипулировать ордерами или позициями.
Разработка индикатора Market Memory Zones: Зоны вероятного возврата цены
В рамках данного обсуждения мы разработаем индикатор для выявления ценовых зон, сформированных в результате высокой рыночной активности, например: импульсных движений, структурных сдвигов и выбросов ликвидности. Эти зоны представляют собой области, где рынок оставил «память» из-за неисполненных ордеров или быстрого изменения цен. Отмечая эти области на графике, индикатор показывает, где цена со статистически более высокой вероятностью вернется и отреагирует в будущем.
Изучение Стандартной библиотеки MQL5 (Часть 6): Оптимизация сгенерированного советника
В данном обсуждении мы продолжаем работу над ранее разработанным мультисигнальным советником с целью изучения и применения доступных методов оптимизации. Цель состоит в том, чтобы определить, можно ли существенно улучшить торговые показатели советника путем систематической оптимизации на основе исторических данных.
Разработка динамического мультивалютного советника (Часть 8): Ротация капитала в зависимости от времени суток
В этой статье представлен механизм ротации капитала по торговым сессиям на языке MQL5, который распределяет риск по торговым сессиям вместо равномерной экспозиции в течение всего дня. Мы подробно разберем бюджеты риска по сессиям в рамках дневного лимита, динамический расчет лота на основе оставшегося риска сессии и автоматические ежедневные сбросы. При исполнении сделок используется специфичная для каждой сессии логика пробоя и торговли против ложного движения с подтверждением волатильности по ATR. В результате читатель получает практический шаблон, который позволяет направлять капитал туда, где условия конкретной сессии статистически наиболее сильны, сохраняя при этом контроль над экспозицией в течение всего дня.
Моделирование рынка: Position View (X)
Нам необходим способ обработки создаваемых графических объектов. Предложение, представленное в предыдущей статье, отлично подходит для некоторых сценариев. В данном случае нам потребуется нечто более сложное, учитывая специфику рассматриваемой проблемы. Поэтому мы не будем пытаться заменить существующие в MetaTrader 5 механизмы управления ZOrder и, конечно же, проверять, какой объект находится на переднем плане или скрыт другим объектом. Мы сделаем нечто совершенно другое. Здесь я покажу, какие изменения необходимо внести в код, чтобы задействовать часть того, что MetaTrader 5 уже делает за нас.
Репликация и моделирование рынка: Большой финал
Я знаю, что многие, возможно, думали, что я опубликую ещё несколько статей, чтобы объяснить другие аспекты этой системы. Недостающие элементы легко реализовать. Тем не менее, её разработка позволит вам проверить, насколько вы действительно готовы.
Анализ CSV-данных (Часть 1): Механизм экспорта CSV при многоядерной оптимизации в MQL5
При многоядерной оптимизации в MetaTrader 5 результаты могут незаметно теряться, когда параллельные агенты одновременно обращаются к одному CSV-файлу. Повторно используемый механизм экспорта MQL5 применяет итерационную спин-блокировку, чтобы надёжно открыть файл и добавлять строки без потерь. Он сохраняет пользовательские метрики, включая коэффициент Сортино, среднюю продолжительность сделки и показатели качества сигналов — запаздывание и частота ложных разворотов (whipsaws) — в сводном CSV-файле для последующей аналитической обработки.
Моделирование рынка: В единстве — сила (III)
В этой статье я представлю нашу систему для моделирования рыночных операций. Хотя всё уже практически завершено, ещё остаётся реализовать некоторые вещи и внести несколько изменений. Однако, признаюсь, после всего, что мы уже разработали, я устал от того, что всё ещё застрял в реализации этой системы.
Моделирование рынка: Position View (IX)
В данной статье, которая станет поворотным моментом, мы начнем более глубоко изучать взаимодействие между разрабатываемыми нами приложениями для обеспечения полной поддержки системы повторов и симуляции. Здесь мы проанализируем проблему, которая, с одной стороны, довольно неприятна, но с другой — очень интересна для объяснения и решения. Проблема заключается в следующем: как вернуть линии тейк-профита и стоп-лосса после того, как они были удалены, и сделать это без использования терминала путем выполнения операции прямо на графике. На первый взгляд, это кажется простым. Однако, существуют несколько препятствий, которые необходимо преодолеть.
Возможности Мастера MQL5, которые вам нужно знать (Часть 77): Использование индикаторов Gator и A/D (Accumulation/Distribution)
Осциллятор Gator Билла Вильямса и осциллятор накопления/распределения образуют еще одну пару индикаторов, которую можно совместно использовать в советнике на MQL5. Мы используем осциллятор Gator для подтверждения наличия тренда, а A/D – для его дополнительного подтверждения по объему. Как и прежде, для изучения этой пары индикаторов мы используем Мастер MQL5, чтобы создать и протестировать соответствующий советник.
Моделирование рынка: Position View (XI)
В этой статье я покажу вам, уважаемый читатель, как можновыбирать объекты, которые мы создаём на графике модифицировать индикатор позиции, чтобы он мог выполнять гораздо больше функций, чем это было предусмотрено изначально. Мы рассмотрим, как реализовать возможность перемещения цен и создания ценовых линий непосредственно на графике. Многим это покажется сложным для решения. Однако вы увидите, что мы сделаем это с минимальными усилиями. Вам нужно всего лишь немного подумать.
Моделирование рынка: Position View (XII)
В этой статье вы научитесь создавать визуальный сигнал на своей торговой платформе, чтобы прямо на графике определять, является ли позиция длинной или короткой, без необходимости обращаться к терминалу. Кроме того, в тексте рассматривается реализация функциональности, которая улучшает отображение при перемещении линий тейк-профита и стоп-лосса, скрывая горизонтальную линию, следующую за курсором мыши, во время перемещения этих линий во избежание путаницы. Чтение предлагает практические знания для настройки систем моделирования рынка.
Моделирование рынка: Position View (XIV)
Теперь мы реализуем это решение, поскольку MQL5 следует тому же принципу, что и событийно-ориентированное программирование. Разработчики часто используют эту модель при создании DLL. Я знаю, что поначалу событийно-ориентированная модель работы покажется запутанной и лишённой логики. Но в этой статье я изложу принципы событийно-ориентированного программирования более понятно, чтобы вы, если только начинаете, правильно поняли, как оно работает. Понимание того, что я начну объяснять в этой статье, поможет вам в вашей жизни как программиста.
Моделирование рынка: Position View (XIII)
В этой статье мы рассмотрим, как без особых усилий реализовать индикатор, который показывает, приносит ли позиция убытки или прибыль. Процедура проста и эффективна. Даже без глубоких знаний этот индикатор позволит вам легко распознавать, когда следует закрывать позицию. Так вы избежите неожиданных результатов, поскольку расчёт отражает фактический результат, который дало бы закрытие позиции.
Изучение стандартной библиотеки MQL5 (Часть 8): Ведение журнала сделок гибридной системы с помощью CFileTxt
В этой статье мы рассмотрим классы модуля File Operations стандартной библиотеки MQL5 для создания надежного модуля отчетности, который автоматически генерирует CSV-файлы, готовые для использования в Excel. В процессе работы мы четко разграничим сделки, выполненные вручную, и ордера, выполненные алгоритмом, закладывая основу для надежной и поддающейся аудиту отчетности по сделкам.
Свинговые экстремумы и откаты в MQL5 (Часть 2): Автоматизация стратегии с помощью советника
Индикатор свинговых экстремумов и откатов (Swing Extremes and Pullbacks) основан на рыночной структуре младшего таймфрейма и затем согласовывается со старшим таймфреймом. Он выявляет свинговые экстремумы, в которых цена становится статистически уязвимой к развороту. Он визуализирует зоны перерастяжения и отката, позволяя заранее оценить поведение цены при возврате к среднему.
База данных — это просто (Часть 1): Легковесный ORM-фреймворк для MQL5 на базе SQLite
В данной статье представлен структурированный подход к управлению данными SQLite в MQL5 с помощью ORM-слоя для MetaTrader 5. В нем представлены базовые классы для моделирования сущностей и доступа к базе данных, fluent API для CRUD, хуки рефлексии для OnGet/OnSet, а также макросы для быстрого определения моделей. В практических примерах кода показано создание таблиц, привязка полей, вставка, обновление, выборка и удаление записей. Разработчики получают готовые к повторному использованию типобезопасные компоненты, которые сводят к минимуму однотипный SQL-код.
Моделирование рынка: Position View (XVI)
В этой статье мы внесем необходимые изменения, чтобы индикатор позиции отображал финансовый результат. Таким образом, трейдер сможет получить представление о финансовом результате по открытой позиции. Кроме того, я расскажу вам о том, чего многие не знают, даже те, кто давно использует MQL5: как использовать статические переменные для совместного использования памяти и избежать объявления глобальной переменной в основном коде.
Моделирование рынка: Position View (XX)
В этой статье мы рассмотрим, как изменить код индикатора позиции, чтобы создать своего рода тень, которая позволит нам увидеть, где в данный момент находится цена, всё ещё актуальная на торговом сервере. Этот механизм призван облегчить планирование операций, в ходе которых мы перемещаем уровни стоп-лосса или тейк-профита. Добавление этой функции, то есть ценовых теней, может показаться чрезвычайно сложной задачей. В этой статье я покажу, что реализовать это можно очень просто и на практике.
Моделирование рынка: Position View (XV)
В этой статье я постараюсь как можно проще объяснить, как можно использовать обмен сообщениями между приложениям. Цель в том, чтобы вы могли создать что-то работоспособное максимально простым и эффективным способом, когда это возможно. Не знаю, удастся ли мне донести идею, лежащую в основе этой концепции, поскольку тому, кто сталкивается с ней впервые, её не так-то просто понять. Кроме того, я воспользуюсь случаем, чтобы показать вам, как изменить систему репликации/моделирования, чтобы вы могли отлаживать советник или любой другой код, который разрабатываете. И всё это — столь же просто и прямо.