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

Trabajo finalizado

Plazo de ejecución 16 días

Tarea técnica


У меня есть простая стратегия, я хочу получать алерты о смене цвета индикаторов, и нужен простой торговый робот. У меня есть два доработанных индикатора 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.

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

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

Han respondido

1
Desarrollador 1
Evaluación
(183)
Proyectos
236
20%
Arbitraje
21
43% / 19%
Caducado
0
Trabaja
2
Desarrollador 2
Evaluación
(5)
Proyectos
7
0%
Arbitraje
8
13% / 75%
Caducado
3
43%
Libre
Solicitudes similares
Нужно разработать торгового советника для MetaTrader 5. Логика стратегии: работа на M1 (таймфрейм изменяемый) уровни Fibonacci задаются вручную (0 и 100) вход осуществляется в зоне 0–38.2 Fibonacci используется RSI BUY — RSI ≤ 30 SELL — RSI ≥ 70 дополнительный сигнал — пересечение RSI и его скользящей средней Функции управления позицией: Stop Loss за сигнальной свечой Break Even два типа Trailing Stop (обычный и
Необходима таблица с параметрами:тф,частота изменения цены за данный тф,ход цены за данный тф.Возможность выгрузки данной сформированной за выбранный период инфо.1 мин,3 мин,6 мин,20 мин …. День,неделя,месяц.Любой период который мне надо будет анализировать
Разработка Telegram-бота для трансляции сигналов из TradingView (Pine Script индикаторы + AI оформление алертов) Доступ открывается за регистрацию и деп у брокеров по реф ссылкам , авто проверка регистрации через постбеки Прием Webhook от TradingView. Активный "сигналер" со скриншотами графика с возможностью менять пул стратегий и редактировать промт ИИ, который сопровождал бы сигнал с некоторыми вытянутыми из
1. Сеточный алгоритм, без мартингейла (открываются одинаковые ордера по лотности). 2. Депозит делится на 3 части. Условно 1000$ по 330$. Торговля ведется на 330$, лотность, просадка, маржа и тд., высчитывается от этой суммы. 3. Счет центовый. Под плечо 1:1000. 4. Ордера набираются группами. 5-7 групп по 10 -15 ордеров. Если цена ушла не в сторону сделки, робот должен дождаться сигнала на покупку
Суть ТС:Приход в POI старшего тф, вход в позицию на младшем тф Анализ графика начинается всегда со старшего тф. Должен быть понятный контекст для работы. Активы: EURUSD, XAUUSD POI старшего таймфрейма: Liquidity (1M, 1W, 1D, 4H, 1H) Imbalance (1M, 1W, 1D, 4H, 1H) Order Block (1M, 1W, 1D, 4H, 1H) HTF Fractals (1M, 1W, 1D, 4H, 1H) Всегда дожидаться цену в POI старшего таймфрейма. Вход в позицию: Слом LTF структуры на

Información sobre el proyecto

Presupuesto
50 - 150 USD