Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 2497
- Рейтинг:
- Опубликован:
- 2018.11.27 22:39
- Обновлен:
- 2019.07.24 20:19
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
PriceChannel - наибольшая и наименьшая цена за выбранный период.
Данная кроссплатформенная библиотека позволяет вычислять PriceChannel без привязки к стандартным барам - по тикам.
Соответственно, PriceChannel может рассчитываться на любом таймфрейме, включая секундный. А также работать, как канал на тиках.
Пример.
// Пример работы библиотеки PriceChannel input int inPeriod = 1; // Период канала sinput bool inPriceChannel = true; // Вкл/выкл. расчет PriceChannel через библиотеку #define PRICECHANNEL_LOW_PRICE bid // bid/ask/last для Low бара #include <fxsaber\PriceChannel\PriceChannel.mqh> // https://www.mql5.com/ru/code/23418 // Наибольшая цена за последние iPeriod баров double GetHigh( const int iPeriod ) { static double Highs[]; CopyHigh(_Symbol, PERIOD_CURRENT, 0, iPeriod, Highs); return(Highs[ArrayMaximum(Highs)]); } // Наименьшая цена за последние iPeriod баров double GetLow( const int iPeriod ) { static double Lows[]; CopyLow(_Symbol, PERIOD_CURRENT, 0, iPeriod, Lows); return(Lows[ArrayMinimum(Lows)]); } double Sum = 0; void OnTick() { static const int BarInterval = PeriodSeconds(PERIOD_CURRENT); static PRICECHANNEL PriceChannel(inPeriod); // Создали PriceChannel-объект с заданным периодом static int CountBars = 0; static datetime PrevTime = 0; if (inPriceChannel) PriceChannel.NewTick(); // Учли новый тик if (TimeCurrent() / BarInterval != PrevTime / BarInterval) // Новый бар CountBars++; if (CountBars > MAX_BARS) // Начинаем расчеты, когда накопилась соответствующая история. Sum += inPriceChannel ? PriceChannel.GetHigh() - PriceChannel.GetLow() // Вычисляем PriceChannel через библиотеку : GetHigh(inPeriod) - GetLow(inPeriod); // Вычисляем PriceChannel стандартным методом PrevTime = TimeCurrent(); } double OnTester() { return(Sum); }
Данный советник в Тестере покажет идентичные результаты: стандартный и через библиотеку.
Быстродействие.
Стандартный расчет
optimization finished, total passes 200 optimization done in 6 minutes 55 seconds shortest pass 0:00:01.061, longest pass 0:00:03.432, average pass 0:00:02.066
Через библиотеку
optimization finished, total passes 200 optimization done in 2 minutes 57 seconds shortest pass 0:00:00.764, longest pass 0:00:01.982, average pass 0:00:00.862
Особенности.
- Расчет на каждом тике.
- Длительность бара может быть задана любой.
- Нет привязки к стандартным барам.
- Наибольшее значение по-умолчанию (можно задавать) вычисляется по Bid, наименьшее - Ask.
- Быстродействие почти не зависит от периода.

Индикатор Float_Pivot_Smoothed_Digit_System с возможностью изменения таймфрейма индикатора во входных параметрах

Торговая система по двум пользовательским индикаторам: CCI Color Levels и RSI Custom Smoothing.

Мгновенная линия тренда - с уровнями для фильтрации сигналов

Фильтр Лагерра без параметра gamma