Разработать индикатор, который будет агрегировать данные из нескольких других индикаторов (двух или трех экземпляров) (Ozymandias_Extended_HTF и HeikenAshi)

Работа завершена

Время выполнения 16 дней

Техническое задание


У меня есть простая стратегия, я хочу получать алерты о смене цвета индикаторов, и нужен простой торговый робот. У меня есть два доработанных индикатора Ozymandias и HeikenAshi.  https://www.mql5.com/ru/code/12604  вышлю доработанную версию.   https://www.mql5.com/ru/code/481

Общее описание
Разработать индикатор, который будет агрегировать данные из нескольких других индикаторов (двух или трех экземпляров) (Ozymandias_Extended_HTF и HeikenAshi) и реализовывать простейший торговый алгоритм на основе данных из этих массивов.
Индикатор должен предоставлять возможность настройки параметров для каждого подключаемого индикатора, а также гибкие правила для открытия позиций.
В массивах должны быть только "текущие данные", история баров не нужна. Поэтому можно использовать и структуру, что лично мне более понятно, но можно и классы. 
Цвета индикаторов: синий = лонг, желтый = шорт.

Пример: такое мне привычнее и понятнее, но если будут классы, то наверное это лучше.
struct OziData {
    double upperBoundary;
    double lowerBoundary;
    double median;
    bool isBlue; // Цвет индикатора (синий или нет)
};

struct HeikenAshiData {
    double hiPrev;
    double lowPrev;
    bool isBlue; // Цвет свечи (синий или нет)
};

// Пример использования
ozi_m5.upperBoundary = CalculateUpperBoundary(M5);
ozi_m5.lowerBoundary = CalculateLowerBoundary(M5);
ozi_m5.isBlue = IsColorBlue(M5);

heiken_ashi_m1.hiPrev = GetHiPrev(M1);
heiken_ashi_m1.lowPrev = GetLowPrev(M1);
heiken_ashi_m1.isBlue = IsCandleBlue(M1);



Параметры агрегируемых индикаторов (новых параметров нет, только те, которые присутствуют в самих индикаторах), т.е. нужно получить хэндл и записать данные в массив\структуру. Если таймфрейм задан как 5 минут, то получать данные раз в 5 минут, если 1 час, то раз в час, чтобы не нагружать.
Настройки Ozymandias_Extended_HTF:
TimeFrame: Таймфрейм, на котором работает индикатор.
Length: Период для расчета основной линии индикатора.
MAType: Метод скользящей средней (например, SMMA).
ChannelKoef: Коэффициент для расчета "двойных" границ канала.
Настройки HeikenAshi:
Timeframe: Таймфрейм для анализа свечей Heiken Ashi.

Пример
ozymandias_htf_extended1
    TimeFrame: M30
    Length: 2
    MAType: SMMA
    ChannelKoef: 1.5

ozymandias_htf_extended2
    TimeFrame: H1
    Length: 2
    MAType: SMMA
    ChannelKoef: 1.5

ozymandias_htf_extended3
    TimeFrame: H4
    Length: 2
    MAType: SMMA
    ChannelKoef: 2.0
HeikenAshi_1
    Timeframe: M15
HeikenAshi_2
    Timeframe: M30


Структура данных и массивы
Массивы для хранения данных. Какие данные я хочу видеть в массиве.
Для Ozymandias_Extended_HTF:
ЗначениеВерхнейГраницы: Текущее значение верхней границы канала.
ЗначениеНижнейГраницы: Текущее значение нижней границы канала.
ТекущийЦвет: Цвет индикатора (синий или желтый). Можно через булево реализовывать.

ЗначениеМедианы: Значение центральной линии индикатора.

Некоторые еще производные значения.

Для HeikenAshi:
ЦенаHi_Prev: Максимальная цена предыдущего бара.
ЦенаLow_Prev: Минимальная цена предыдущего бара.
ЦенаHi_Prev_Prev: Максимальная цена предпредыдущего бара.
ЦенаLow_Prev_Prev: Минимальная цена предпредыдущего бара.
color_Prev: Цвет текущей свечи.
color_Prev_Prev: Цвет предыдущей свечи.
color_Prev_Prev_Prev: Цвет предпредыдущей свечи.
СменаЦвета: Булево значение, указывающее, была ли смена цвета между предыдущими свечами. Если color_Prev не равен color_Prev_Prev, то результат является истинным. Проверка выполняется в соответствии с выбранным таймфреймом индикатора, например, если таймфрейм составляет 5 минут, то сравнение происходит раз в 5 минут на новом баре, а не на каждом тике внутри этого периода.
ThreeCandleColorChange: Булево значение, указывающее, является ли текущая комбинация свечей "третий бар от текущего отличается по цвету от двух других". Истина, если выполняется одно из следующих условий:
color_Prev_Prev_Prev синий, а оба color_Prev_Prev и color_Prev красные и ЦенаHi_Prev > ЦенаHi_Prev_Prev;
color_Prev_Prev_Prev красный, а оба color_Prev_Prev и color_Prev синие и ЦенаLow_Prev < ЦенаLow_Prev_Prev

Настройки основного торгового индикатора, который использует данные массивов:
input bool TradeOnColorMatchChannele = true; Открывать позиции в лонг, если цена находится между нижней границей канала и медианой, а цвет индикатора Ozymandias синий. Соответственно, открывать позиции в шорт, если цена расположена между верхней границей канала и медианой, а цвет индикатора Ozymandias желтый.
input double OrderPriceShift = 5; // Размер в пунктах, для расчета цены устанавливаемой заявки. Вычитается из цены Low_Prev если цвет синий, или прибавляется к Hi_Prev если цвет красный. По умолчанию 100.
Stoploss: // Размер в пунктах, для расчета цены Stoploss устанавливаемой заявки. Вычитается из цены Hi_Prev если цвет синий, или прибавляется к Low_Prev если цвет красный. По умолчанию 100. Аналогично OrderPriceShift, только наоборот.
ContractCount: Количество контрактов для входа.
AlertTelegram: Булево значение, указывающее, отправлять ли уведомления в Telegram.
TakeProfit: Перечисление, определяющее способ расчета Take Profit.
enum TakeProfitMethod
{
    RATIO_1_TO_1 = 1,   // Соотношение 1:1 (тейк-профит равен стоп-лоссу)
    RATIO_1_TO_2 = 2,   // Соотношение 1:2 (прибыль в два раза больше риска)
    RATIO_1_TO_3 = 3,   // Соотношение 1:3 (прибыль в три раза больше риска)
    RATIO_1_TO_4 = 4,   // Соотношение 1:4 (прибыль в четыре раза больше риска)
    RATIO_1_TO_5 = 5,   // Соотношение 1:5 (прибыль в пять раз больше риска)
    RATIO_1_TO_6 = 6,   // Соотношение 1:6 (прибыль в шесть раз больше риска)
    RATIO_1_TO_7 = 7,   // Соотношение 1:7 (прибыль в семь раз больше риска)
    RATIO_1_TO_10 = 10, // Соотношение 1:10 (прибыль в десять раз больше риска)
    REVERS_SIGNAL,      // Обратный сигнал (тейк-профит ждет когда появится обратный сигнал. Если была лонговая позиция открыта, то ожидает шортовый сигнал)
    NONE                // Тейк-профит не используется
};

Торговая стратегия:
Если произошла смена цвета индикатора ozymandias_htf_extended1 и цвет ozymandias_htf_extended1 синий, и цвет ozymandias_htf_extended2 синий, и цвет ozymandias_htf_extended3 синий, и HeikenAshi_1 синий, и HeikenAshi_2 синий тогда установить заявку на покупку, рассчитать цену её установки, и размер стоп лосса. И установить её. Выдать алерт в телеграмм.
Если цвет ozymandias_htf_extended1 стал синий,то отправить алерт в телеграм.

Блок-схема алгоритма
Инициализация:
Получить рассчитать параметры индикаторов.
Создать, заполнить массивы данными индикаторов
Расчет данных:
Для каждого Ozymandias_Extended_HTF:
Рассчитать границы, медиану, цвет, первое касание ценой, и другие данные
Для каждого HeikenAshi:
Рассчитать цены и цвета свечей.
Проверить смену цвета и условие "звезды".
По данным массивов  принять решение об открытии сделки:
Проверить условия для открытия позиций.
Рассчитать цену входа, Take Profit и Stop Loss.
Установить заявку на открытие позиции со своим ID
Управление позициями:
Установить заявку тейкпрофита для заданного ID.
Удалить заявку тейкпрофита если позиция исчезал по стоплосс.
Перевести стоп-лосс в безубыток.
Закрыть позиции при смене цвета.
Оповещения:
Отправить уведомления в Telegram.

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

Могу записать видео, где подробно расскажу.

Откликнулись

1
Разработчик 1
Оценка
(164)
Проекты
212
20%
Арбитраж
18
44% / 17%
Просрочено
0
Работает
2
Разработчик 2
Оценка
(5)
Проекты
7
0%
Арбитраж
2
50% / 0%
Просрочено
3
43%
Работает
Похожие заказы
Описание задачи: Нужен опытный разработчик на MQL4, который поможет другому программисту (работает через нейросеть, но слабо знаком с MQL4) разобраться в логике и корректно реализовать советника. Цель проекта: Создать стабильного советника, который будет принимать сигналы с мастер-счёта (счёт трейдера у брокера N) и синхронизировать их на клиентском счёте. ✅ Основной функционал: Синхронизация сделок между счётами
Название: MT4 копировщик сделок через Telegram + лицензии (Master → Client) Описание: Нужно разработать 2 советника (MQL4) + Telegram-бот: Master EA — отправляет сделки с моего счёта в Telegram-канал/группу (OPEN/CLOSE/MODIFY, SL/TP, Magic фильтр). Client EA — принимает сигналы из Telegram и исполняет сделки на счёте клиента. Обязательные требования: Формат сообщений
Что вообще требуется, нужно придумать и разработать логику взаимодействия двух советников, чтобы работало копирования сделок с одного счета на другие. Задача такая, есть счет на котором торгует трейдер, и все сделки, отложенные ордера и т.д. должны переноситься на счета клиентов, клиентов будет много, логика работы советников должна выдерживать большую нагрузку. Какие требования от советников: 1. Грубо говоря, нужно
Торговый бот анализирующий на трейдинг вью и совершаюший открытие и закрытие ордеров на мт5 торгуюший на разных временных таймфреймах (от 5 мин. До 4 часового таймфрейма)в зависимости от ситуации на рынке как на покупку так и на продажу выставляющий t/p и s/l для Форекс и криптовалют уровнями пробоя все математические данные предоставлю. С последующим обновлениями и обслуживаниями бота конечно же за отдельную плату
Ищу опытного разработчика MQL5 для наведения порядка в проекте советника, основанного на принципах ICT и SMT. Код написан на MQL5, сборка выполнена частично из уже готовых блоков плюс лично написанными модулями; основная часть генерировалась через GPT PRO. В текущем состоянии проект не компилируется и содержит логические несостыковки между модулями. Требуется привести код к рабочему виду: устранить ошибки
Добрый день. Необходимо написать простого робота для торговли по одной кривой (на выбор из двух) на графике с псевдо Ренко свечами (ренко строится на обычных свечах) на МТ5. Обязателен опыт работы с ренко графиками и ренко свечами на Мт5. Условий торговли немного
Добавить в советник функцию принудительного закрытия ордеров при достижении определенной просадки (настраивается вручную) Добавить в советник ещё три уровня ENUM_TIMEFRAMES Level_X_TF и Level_X_D Добавить в советник режим адаптации параметров («Умная защита»), который активируется при обнаружении серии неэффективных усреднений (подробное описание в ТЗ) Добавить в инфопанель советника прибыль за год и индикацию о том

Информация о проекте

Бюджет
50 - 150 USD
Исполнителю
45 - 135 USD