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

xmcstrengthengine.mqh

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

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

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

О программе

Библиотека CXMCStrengthEngine представляет собой заголовочный файл на языке MQL, предназначенный для анализа относительной силы до 6 торговых символов. Основной класс CXMCStrengthEngine вычисляет показатель силы на основе изменения цен закрытия за разные периоды и нормализует его в диапазоне 0–100 для каждого символа.

Класс позволяет определить наиболее сильный и второй по силе символы из заданного набора, а также получить рекомендацию по символу для входа в позицию при выполнении условий по уровню уверенности и минимальному разрыву между лидерами. Доступны методы для получения отдельных значений силы и имён символов.

Библиотека не выполняет торговых операций и не управляет денежными средствами. Все расчёты основаны на ценовых данных и предоставляют пользователю информацию для принятия решений.

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

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

Классы
Класс class CXMCStrengthEngine

Основной класс для анализа относительной силы торговых символов.

Методы и конструкторы
Метод · CXMCStrengthEngine void Init(string &symbols[], int count)

Инициализирует движок, задавая список символов для анализа.

Метод · CXMCStrengthEngine void Calculate(int lookback)

Вычисляет значения силы для всех настроенных символов на основе ценовых данных.

Метод · CXMCStrengthEngine void FindExtreme()

Определяет самый сильный и второй по силе символы из текущего набора.

Метод · CXMCStrengthEngine string GetEntrySymbol(double entryLevel, double confidenceGap)

Возвращает символ для входа в позицию, если его сила превышает заданный уровень и разрыв с вторым лидером достаточен.

Метод · CXMCStrengthEngine double GetStrength(int index)

Возвращает значение силы для символа по его индексу.

Метод · CXMCStrengthEngine string GetStrongestSymbol()

Возвращает имя самого сильного символа.

Метод · CXMCStrengthEngine double GetStrongestValue()

Возвращает значение силы самого сильного символа.

Метод · CXMCStrengthEngine double GetSecondStrongestValue()

Возвращает значение силы второго по силе символа.

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

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

#ifndef XMCSTRENGTHENGINE_MQH
#define XMCSTRENGTHENGINE_MQH

class CXMCStrengthEngine
{
private:
   string m_symbols[6];
   double m_strength[6];
   int    m_count;

   double m_strongestValue;
   double m_secondStrongestValue;
   string m_strongestSymbol;

public:

   void Init(string &symbols[], int count)
   {
      m_count = MathMin(count, 6);

      for(int i = 0; i < 6; i++)
      {
         if(i < m_count)
            m_symbols[i] = symbols[i];
         else
            m_symbols[i] = "";

         m_strength[i] = 0.0;
      }

      m_strongestValue       = 0.0;
      m_secondStrongestValue = 0.0;
      m_strongestSymbol      = "";
   }

   void Calculate(int lookback)
   {
      double gamma_values[6];
      ArrayInitialize(gamma_values, 0.0);

      double max_gamma = -999999.0;
      double min_gamma =  999999.0;

      int period = MathMax(lookback / 4, 5);

      for(int i = 0; i < m_count; i++)
      {
         if(m_symbols[i] == "")
         {
            m_strength[i] = 0.0;
            continue;
         }

         if(iBars(m_symbols[i], 0) < period * 2 + 2)
         {
            m_strength[i] = 0.0;
            continue;
         }

         double p0 = iClose(m_symbols[i], 0, 1);
         double p1 = iClose(m_symbols[i], 0, period + 1);
         double p2 = iClose(m_symbols[i], 0, period * 2 + 1);

         if(p0 == 0.0 || p1 == 0.0 || p2 == 0.0)
         {
            m_strength[i] = 0.0;
            continue;
         }

         double delta1 = (p0 - p1) / p1 * 100.0;
         double delta2 = (p1 - p2) / p2 * 100.0;
         double gamma   = delta1 - delta2;

         gamma_values[i] = gamma;

         if(gamma > max_gamma)
            max_gamma = gamma;

         if(gamma < min_gamma)
            min_gamma = gamma;
      }

      double range = max_gamma - min_gamma;

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

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

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

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

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

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

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