Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 2898
- Рейтинг:
- Опубликован:
- 2017.05.11 09:43
- Обновлен:
- 2017.09.06 10:51
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Доступна версия 2: Size of candles 2 (text).
Индикатор отражает размер бара. Размер свечи считается по формуле: "уменьшаемое" минус "вычитаемое". "Уменьшаемое" и "вычитаемое" могут быть одним их четырёх значений (open, high, low or close).
Количество баров, для которых отображается размер, ограничено во входных параметрах (InpNumberOfBars). Это число остаётся неизменным, даже если открылся новый бар:
Немного о синхронизации баров и графических объектов.
Учет графических объектов
Названия объектов хранятся в массиве m_arr_names[] — его размер равен входному параметру InpNumberOfBars. Почему выбран именно массив, а не простая переменная типа string? Это своеобразный задел на будущее.
Формирование имени объекта
Название объекта, который соответствует бару index, формируется по такой формуле:
name[index] = m_prefix + ("high_" or "low_") + TimeToString(time[index])
Когда нужно удалять все объекты
Как известно, индикаторы выгружаются в следующих случаях:
- открепление индикатора от графика;
- закрытие терминала (если индикатор был прикреплен к графику);
- загрузка шаблона, если к графику прикреплен индикатор;
- закрытие графика, к которому был прикреплен индикатор;
- смена профиля, если индикатор прикреплен к одному из графиков сменяемого профиля;
- смена символа и/или периода графика, к которому прикреплен индикатор;
- изменение входных параметров индикатора.
Поэтому выполняем полное удаление созданных графических объектов:
- в OnDeinit()
- в OnInit() (это больше для перестраховки — вдруг остались неудалённые "бесхозные" графические объекты)
- в OnCalculate(), когда prev_calculated==0.
Также выполняем очистку массива m_arr_names[]:
- в OnCalculate(), когда prev_calculated==0 или когда prev_calculated!=rates_total
Поддержание постоянного количества графических объектов:
при возникновении нового бара (или баров) на графике срабатывает условие prev_calculated!=rates_total. В этом случае все объекты удаляются, а массив m_arr_names[] очищается.
![RSI and Bollinger Bands](https://c.mql5.com/i/code/expert.png)
Торговая стратегия по RSI и Bollinger Bands.
![All information about the symbol](https://c.mql5.com/i/code/expert.png)
Вся информация о текущем символе (информация берётся из объекта класса CSymbolInfo) в виде панели диалогов.
![cheduecoglioni](https://c.mql5.com/i/code/expert.png)
Мы ждем, когда TP или SL сработают, и после этого открываем позицию в противоположном направлении. Проверка на достаточность средств перед отсылкой торгового приказа. OnTradeTransaction.
![TotalPowerIndicatorX_HTF](https://c.mql5.com/i/code/indicator.png)
Индикатор TotalPowerIndicatorX с возможностью изменения таймфрейма индикатора во входных параметрах.