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

magicclient.mqh

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

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

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

О программе

Библиотека для управления магическими номерами в MetaTrader. Реализует клиентскую логику инициализации, получения, проверки и освобождения магических чисел. Данные хранятся в локальном CSV-файле общего доступа. Поддерживается привязка к имени советника и номеру счёта. В текущей версии назначение магических номеров выполняется локально на основе даты; HTTP-интеграция с внешним реестром запланирована, но не реализована.

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

НастройкаОписание
Legacy compatibility only. Not used by YYYYMMDDn registry. (MagicRegistryBase) База реестра магических номеров — Целое число, зарезервированное для обратной совместимости; в текущей реализации YYYYMMDDn-реестром не используется.

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

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

Функции
Функция int GetActiveMagic()

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

Функция void MagicHeartbeat()

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

Функция void MagicRelease()

Предназначена для уведомления реестра об остановке советника; в текущей версии не выполняет действий.

Функция bool IsMagicValid()

Проверяет, был ли успешно присвоен активный магический номер.

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

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

#ifndef MAGIC_CLIENT_INCLUDED
#define MAGIC_CLIENT_INCLUDED

#define MAGIC_REGISTRY_FILE "MagicRegistry.csv"

input int MagicRegistryBase = 300; // Legacy compatibility only. Not used by YYYYMMDDn registry.

int g_AssignedMagic = 0;

string g_EAName="";
string g_RegistryKey="";

datetime g_LastHeartbeat=0;

bool MagicClientInit(
   string eaName,
   int legacyMagic
)
{

   g_EAName = eaName;

   g_RegistryKey =
      g_EAName + "_" +
      IntegerToString(AccountNumber());

   string todayStr = TimeToString(TimeCurrent(), TIME_DATE);
   string todayCompact = todayStr;
   StringReplace(todayCompact, ".", "");
   long todayPrefix = StringToInteger(todayCompact); // YYYYMMDD

   bool found = false;
   int nextN = 0;

   int rHandle = FileOpen(
      MAGIC_REGISTRY_FILE,
      FILE_READ|FILE_CSV|FILE_COMMON
   );

   if(rHandle != INVALID_HANDLE)
   {
      while(!FileIsEnding(rHandle))
      {
         string line = FileReadString(rHandle);
         if(line == "") break; // Skip empty lines

         string parts[];
         int count = StringSplit(line, ',', parts);
         if(count < 2) continue;

         string name = parts[0];
         string magicStr = parts[1];

         if(name == g_RegistryKey)
         {
            g_AssignedMagic = (int)StringToInteger(magicStr);
            found = true;
            break;
         }

         long m = StringToInteger(magicStr);
         if(m / 10 == todayPrefix)
         {
            int n = (int)(m % 10);
    

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

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

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

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

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

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

Стоимость полного кода
200,30₽ ≈ $2.45