Смотри, как бесплатно скачать роботов
Ищи нас в Facebook!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

PriceChannel - библиотека для MetaTrader 5

Просмотров:
2336
Рейтинг:
(19)
Опубликован:
2018.11.27 22:39
Обновлен:
2019.07.24 20:19
\MQL5\Include\fxsaber\PriceChannel\ \MQL5\Experts\fxsaber\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

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_HTF Float_Pivot_Smoothed_Digit_System_HTF

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

iCCI iRSI iCCI iRSI

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

Instantaneous trend line - levels Instantaneous trend line - levels

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

Laguerre filter - no gamma Laguerre filter - no gamma

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