Записываем историю сделок в файл и строим графики балансов для каждого символа в Excel

Записываем историю сделок в файл и строим графики балансов для каждого символа в Excel
Общаясь на многих форумах, я довольно часто приводил в пример результаты тестов на скриншотах с графиков в Microsoft Excel. И многие просили меня объяснить, как же строить эти замечательные графики. Возможности построения диаграмм в Excel очень обширны и написаны множество книг по этой теме. В книгах так сложно бывает что-то найти, что приходиться читать её всю. Но наконец у меня появилось немного времени, чтобы написать статью об этом.

В предыдущих двух статьях ("Мультивалютный советник на MQL5. Пример простой, точной и быстрой схемы." и "Разработка мультивалютного эксперта с неограниченным количеством параметров") мы рассматривали разработку мультивалютных экспертов на языке MQL5. Но результат теста в MetaTrader 5 отображается, как общая кривая баланса и средств. То есть, если нужно посмотреть результаты по каждому отдельному символу, то нужно снова и снова заходить во внешние параметры эксперта, чтобы внести изменения, отключив все символы, кроме того, результаты которого нужно увидеть, и снова проводить тест. Это неудобно. Поэтому сегодня я покажу простой способ, как можно в пару кликов получать графики всех балансов символов и совокупный результат мультивалютного эксперта на одной диаграмме в Excel одновременно.

Для воспроизведения примера возьмём мультивалютного эксперта из предыдущей статьи. Добавим в него функцию, которая будет по окончании теста записывать в файл в формате CSV историю сделок и кривые балансов всех символов по отдельности. Кроме этого, добавим в отчёт ещё один столбец, в котором будут содержаться просадки депозита от всех локальных максимумов. Ещё создадим книгу Excel, которую настроим таким образом, чтобы можно было подключить к ней файл с данными. Книга может быть всё время загружена. То есть, её не нужно закрывать перед тем, как провести очередной тест. После проведения теста нужно будет всего лишь обновить данные одним нажатием кнопки, чтобы увидеть изменения в отчёте и на диаграмме.

Разработка мультивалютного эксперта с неограниченным количеством параметров

Схема мультивалютного эксперта с неограниченным количеством параметров
Схема мультивалютного эксперта, которую мы рассматривали в предыдущей статье "Мультивалютный советник на MQL5. Пример простой, точной и быстрой схемы", вполне удобна, если используется небольшое количество символов и количество параметров для торговой стратегии тоже невелико. Существует ограничение на количество входных параметров эксперта. Их не должно быть больше 1024-ёх.

Но даже,  если в большинстве случаев этого может быть вполне достаточно, то пользоваться таким большим списком очень неудобно. Каждый раз, если  нужно изменить/оптимизировать параметры для того или иного символа, придётся искать в большом списке параметры именно этого символа.

В Справке терминала в разделе Клиентский терминал / Тестер стратегий / Входные параметры, можно ознакомиться с другими ограничениями. 

В этой статье создадим схему, в которой будет только один набор параметров торговой системы для оптимизации, а количество символов можно использовать сколько угодно. Список символов будем составлять в обычном текстовом файле (*.txt). Будут также довольно объёмно освещаться такие вопросы, как запись/чтение в/из файла. Ведь внешние параметры для каждого символа теперь будут храниться в файлах. В реальном времени эксперт будет работать на одном символе, а в тестере его можно будет тестировать на множестве указанных символов и каждый в отдельности.

На самом деле, было бы ещё удобнее создавать список символов прямо в окне Обзор Рынка, если учесть, что там даже есть возможность сохранять готовые наборы (списки) символов. Можно было бы сделать так, чтобы эксперт получал список символов в окне Обзор Рынка прямо из тестера. Но к сожалению, на данный момент, возможности доступа к окну Обзор Рынка в терминале из тестера нет и придётся список символов делать заранее вручную или с помощью скрипта.

Думаю задача понятна. Начнём...

Мультивалютный советник на MQL5. Пример простой, точной и быстрой схемы.

Мультивалютный советник
В этой статье рассмотрим реализацию простой схемы для мультивалютного эксперта. В данном случае имеется ввиду, что эксперт можно будет настроить на тест/торговлю по одинаковым условиям, но с разными параметрами для каждого символа. В качестве примера создадим схему для двух символов, но сделаем это так, чтобы можно было при необходимости добавлять ещё символы внося небольшие изменения в код.

Мультивалютную схему на MQL5 можно реализовать несколькими способами. Можно использовать модель, в которой эксперт будет ориентироваться на время, точнее осуществляя проверку через заданные временные интервалы в функции OnTimer(). Можно также, как и во всех экспертах в предыдущих статьях, осуществлять проверку в функции OnTick(), но тогда эксперт будет зависеть от тиков по текущему символу, на котором он работает. То есть, если на другом символе новый бар уже наступил, а тика на текущем символе ещё не было, то эксперт произведёт проверку только после того, как придёт тик по текущему символу.

И есть ещё один интересный вариант, автор которого Константин Груздев (с работами этого автора можно ознакомиться на сайте mql5.com). В этом варианте используется событийная модель, когда с помощью функции OnChartEvent() экспертом принимаются события, которые воспроизводят индикаторы-агенты, размещённые на графиках символов участвующих в тесте/торговле. Индикатор-агент может воспроизводить события новых баров и тиков того символа, на котором он размещён. Такой индикатор (EventsSpy.mq5) можно скачать в конце статьи. Он понадобится для работы эксперта из этой статьи. Контакты автора указаны в коде.

Итак. Думаю, что можно начать творческий процесс...

Разработка схемы для торговой системы типа "Три экрана Элдера" на MQL5

Схема для торговой системы "Три экрана Элдера"
Многие трейдеры при поиске или разработке торговой системы слышали о схеме "Три экрана", которую предложил когда-то Александр Элдер. Найдётся множество людей высказывающих своё мнение в интернете, что эта система не работает. И найдётся также много мнений, что из этого можно извлечь прибыль. Но необязательно верить ни тем ни другим. Всё всегда нужно проверять самому. А если Вы изучаете программирование, то всё тем более в Ваших руках, так как можно проверить работоспособность схемы на истории.

В этой статье разработаем схему для торговой системы типа "Три экрана Элдера" на MQL5. Разрабатывать эксперта будем начинать не с нуля, а просто модифицируем уже практически готовую под эту схему программу из предыдущей статьи "Использование индикаторов для формирования условий в эксперте". То есть, цель статьи также и показать, как можно легко модифицировать схемы уже готовых программ.

В эксперте из предыдущей статьи уже есть возможность включить/отключить уровни Stop Loss/Take Profit, Trailing Stop, наращивание объёма позиции, переворот позиции по противоположному сигналу. А все необходимы функции уже расставлены на своих местах. В итоге вся работа сводится к тому, что нужно всего лишь изменить список внешних параметров, добавив в него дополнительные опции и модифицировать некоторые уже имеющиеся функции.

В этой схеме в качестве примера сделаем так, чтобы сигналы на трёх таймфреймах формировались по индикатору Moving Average. После, для продолжения эксперимента с этой схемой, Вы можете вызывать любые другие индикаторы внеся небольшие изменения в код. Также сделаем так, чтобы таймфреймы для каждого "экрана" можно было устанавливать. А если в параметр, который отвечает за период индикатора, установлено нулевое значение, то это будет означать, что этот "экран" не используется. То есть, можно настроить систему на один или два таймфрейма.