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

cdistributedsr.mqh

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

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

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

О программе

Библиотека CDistributedSR предназначена для работы в среде MQL. Она загружает уровни поддержки и сопротивления с удалённого сервера по URL, привязанному к торговому символу, и отображает их на графике в виде горизонтальных линий. Библиотека разделяет уровни на еженедельные и дневные, используя разные стили отрисовки для каждого типа.

При создании экземпляра класса указывается символ, для которого загружаются данные. Уровни загружаются автоматически при первом обращении или при смене торгового дня. Графические объекты, созданные библиотекой, имеют префикс тильды и удаляются при обновлении или уничтожении объекта.

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

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

Классы
Класс class CDistributedSR

Библиотечный класс для загрузки и отрисовки уровней поддержки и сопротивления на графике.

Методы и конструкторы
Метод · CDistributedSR bool HasLevels()

Проверяет наличие загруженных уровней поддержки и сопротивления.

Метод · CDistributedSR void DrawSR()

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

Конструктор · CDistributedSR CDistributedSR(string symbol)

Создаёт экземпляр класса с указанием торгового символа.

Деструктор · CDistributedSR ~CDistributedSR()

Удаляет созданные графические объекты и освобождает ресурсы.

Метод · CDistributedSR void Refresh()

Обновляет уровни поддержки и сопротивления, загружая данные с удалённого сервера при смене дня.

Метод · CDistributedSR bool IsLevelAt(int period, int bar, double pips)

Проверяет, находится ли уровень поддержки или сопротивления в заданном диапазоне свечи.

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

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

#property strict

#include <CDownloadFile.mqh>

class CDistributedSR
{
private:
   CDownloadFile* _http;
   string         _symbol;
   int            _prevDay;
   double         _srLevelsW1[];
   int            _levelCountW1;

   double         _srLevelsD1[];
   int            _levelCountD1;

   bool IsKnownSymbol()
   {
     string availableSymbols = "asx200 audcad audchf audjpy audnzd audusd btcusd cadchf cadjpy chfjpy ethusd euraud eurcad eurchf eurgbp eurjpy eurnzd eurusd gbpaud gbpcad gbpchf gbpjpy gbpnzd  gbpusd nzdcad nzdchf nzdjpy nzdusd ukousd us500 usdcad usdchf usdjpy usdollar usdsgd usousd ws30 xagusd xauusd";
     string symLower = _symbol;
     StringToLower(symLower);
     return StringFind(availableSymbols, symLower) >=0;
   }

   void Clear()
   {
      bool deleted = false;
      do 
      {
         deleted = false;
         for (int i = 0; i < ObjectsTotal();++i)
         {
            string name = ObjectName(0, i);
            if (StringSubstr(name, 0, 1) == "~")
            {
               ObjectDelete(0, name);
               deleted = true;
               break;
            }
         }
      } while (deleted);
   }

   void LoadSR()
   {
      _levelCountW1 = 0;
      _levelCountD1 = 0;
      string key    = _symbol;
      StringToLower(key);

      if (!IsKnownSymbol()) 
      {
         Print("UNKNOWN symbol:" + _symbol);
         return;
      }

      string url    = "" + key + ".txt";
      string httpResult = "";

      if (!_http.GrabWeb(url, httpResult))
      {

         Print("download failed for:" + url);

         return;
      }

      string lines[]; 
      int lineCount = StringSplit(httpResult, 10,lines);

      for (int i=0; i < lineCount;++i)
      {
         string priceTxt = lines[i];
         StringReplace(priceTxt,"\r","");
         StringReplace(priceTxt,"\t","");
         priceTxt = StringTrimLeft(priceTxt);
         priceTxt = StringTrimRight(priceTxt);
         if (StringLen(priceTxt) == 0) continue;

         if (StringGetChar(priceTxt,0) == 100) // = d
         {
            priceTxt = StringSubstr(priceTxt, 1);
            double price= StringToDouble(priceTxt);

            _srLevelsD1[_levelCountD1++] = price;
         }
         else
         {
            double price= StringToDouble(priceTxt);

            _srLevelsW1[_levelCountW1++] =

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

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

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

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

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

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

Стоимость полного кода
307,20₽ ≈ $3.75