← К каталогу
Исходный код · ID 2387

CMBFX

cmbfx.mqh
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

CMBFX — это библиотека MQL для платформы MetaTrader, реализующая пользовательский осциллятор MBFX. Класс CMBFX выполняет расчёт индикаторных значений на основе ценовых данных (максимум, минимум, закрытие) и предоставляет методы для получения сигналов бычьего и медвежьего направления.

Библиотека содержит три массива значений: зелёный (бычий), красный (медвежий) и жёлтый (промежуточный). Метод Refresh рассчитывает эти значения для указанного символа, а пользовательские методы позволяют проверять наличие сигнала и получать его числовое значение.

Параметры настройки включают период Len (по умолчанию 7) и фильтр Filter (по умолчанию 0.0), которые влияют на чувствительность и пороговые условия индикатора.

Настройки программы

НастройкаОписание
__mbfx Разделитель настроек MBFX — Текстовый разделитель-заголовок для настроек MBFX.
Len Период — Целочисленный параметр периода, задающий длину расчётного интервала индикатора.
Filter Фильтр — Пороговый параметр фильтра, определяющий минимальное изменение значения между барами для формирования зелёного или красного сигнала.

Состав библиотеки

Классов: 1 · методов: 4 · конструкторов: 1 · деструкторов: 0 · отдельных функций: 0

Классы
Класс class CMBFX

Класс CMBFX — основной контейнер индикатора MBFX, хранящий массивы рассчитанных значений и предоставляющий методы доступа к результатам.

Методы и конструкторы
Конструктор · CMBFX CMBFX()

Конструктор класса CMBFX — инициализирует внутренние массивы (зелёный, красный, жёлтый) заданного размера.

Метод · CMBFX bool IsGreen(int bar)

IsGreen(int bar) — проверяет, имеет ли указанный бар значение зелёного (бычьего) сигнала.

Метод · CMBFX double GreenValue(int bar)

GreenValue(int bar) — возвращает числовое значение зелёного (бычьего) сигнала для указанного бара.

Метод · CMBFX double RedValue(int bar)

RedValue(int bar) — возвращает числовое значение красного (медвежьего) сигнала для указанного бара.

Метод · CMBFX void Refresh(string symbol)

Refresh(string symbol) — пересчитывает все значения индикатора MBFX для указанного торгового символа на основе ценовых данных.

Получить полный код

Поиск по коду файла

#property strict

extern string     __mbfx               = " ------- MBFX settings ------------";
extern int        Len                  = 7;
extern double     Filter               = 0.0;

class CMBFX
{
private:
   double            _mbfxYellow[];
   double            _mbfxGreen[];
   double            _mbfxRed[];

public:

   CMBFX()
   {
      ArrayResize(_mbfxGreen , 500+5, 0);
      ArrayResize(_mbfxRed   , 500+5, 0);
      ArrayResize(_mbfxYellow, 500+5, 0);
   }

   bool IsGreen(int bar)
   {
      if (bar <0 || bar >= 500) return false;
      return (_mbfxGreen[bar] != EMPTY_VALUE);
   }

   double GreenValue(int bar)
   {
      if (bar <0 || bar >= 500) return EMPTY_VALUE;
      return _mbfxGreen[bar];
   }

   double RedValue(int bar)
   {
      if (bar <0 || bar >= 500) return EMPTY_VALUE;
      return _mbfxRed[bar];
   }

   void Refresh(string symbol)
   {
      ArrayInitialize(_mbfxYellow, 0);
      ArrayInitialize(_mbfxGreen, 0);
      ArrayInitialize(_mbfxRed, 0);
      double ld_0=0;
      double ld_8=0;
      double ld_16=0;
      double ld_24=0;
      double ld_32=0;
      double ld_40=0;
      double ld_48=0;
      double ld_56=0;
      double ld_64=0;
      double ld_72=0;
      double ld_80=0;
      double ld_88=0;
      double ld_96=0;
      double ld_104=0;
      double ld_112=0;
      double ld_120=0;
      double ld_128=0;
      double ld_136=0;
      double ld_144=0;
      double ld_152=0;
      double ld_160=0;
      double ld_168=0;
      double ld_176=0;
      double ld_184=0;
      double ld_192=0;
      double ld_200=0;
      double ld_208=0;
      int barLimit = 500 - Len - 1;
      for (int bar = barLimit; bar >= 0; bar--) 
      {
         if (ld_8 == 0.0) 
         {
            ld_8 = 1.0;
            ld_16 = 0.0;
            if (Len - 1 >= 5) ld_0 = Len - 1.0;
            else ld_0 = 5.0;
            ld_80 = 100.0 * ((iHigh(symbol, 0, bar) + iLow(symbol, 0, bar) + iClose(symbol, 0, bar)) / 3.0);
            ld_96 = 3.0 / (Len + 2.0);
            ld_104 = 1.0 - ld_96;
         } 
         else 
         {
            if (ld_0 <= ld_8) ld_8

Показано первые 50% кода (символов: 2568)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
256,80₽ ≈ $3.14