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

signal.mqh

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

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

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

О программе

Библиотека signal.mqh реализует класс CSignal для платформы MetaTrader 4. Она обеспечивает подключение к удалённому серверу, получение торговых сигналов и их управление в виде внутренних массивов.

При создании объекта класса устанавливается соединение с сервером по параметрам хоста, порта, пользователя и базы данных. Метод Control непрерывно получает торговые сигналы от сервера и передаёт их для обработки в метод NewSignal.

NewSignal проверяет каждый полученный сигнал по спискам допустимых сигналов и тикеров, убеждается в доступности символа и разрешённом режиме торговли, после чего сохраняет валидный сигнал в массив с типом (покупка/продажа), временем и символом. Метод IsOldSignal позволяет определить, устарел ли сигнал за заданный период.

Вспомогательные методы Erace очищают хранилище сигналов и символов, а Disconnect завершает соединение с сервером. Приватные методы обеспечивают фильтрацию сигналов и тикеров по настраиваемым спискам.

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

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

Классы
Класс class CSignal

Класс для работы с торговыми сигналами: получение, валидация и хранение

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

Конструктор класса CSignal, устанавливающий соединение с сервером

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

Деструктор класса CSignal, выводящий сообщение об отключении

Метод · CSignal void Control(bool isIgnorSignals)

Получение торговых сигналов от сервера и их обработка

Метод · CSignal bool NewSignal(STradeSignal& tradeSignal)

Добавление нового торгового сигнала в массив после проверки

Метод · CSignal bool IsOldSignal(SSignal &sgnl,int period)

Проверка, устарел ли сигнал по заданному периоду

Метод · CSignal void Erace()

Очистка массивов сигналов и символов

Метод · CSignal void Disconnect()

Отключение от сервера

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

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

#include "Header.mqh"
#include "Lib\Define\MQLDefine.mqh"

#ifndef _SIGNAL_
#define _SIGNAL_

class CSignal{
public:
   SSignal           signal[];
   _tSizeT           cConnector;
   string            cSymbol[];
   string            last_signal;
   int               sig_quant;
   int               symb_quant;

                     CSignal();
                    ~CSignal();
   void              Control(bool isIgnorSignals);
   bool              NewSignal(STradeSignal& tradeSignal);
   bool              IsOldSignal(SSignal &sgnl,int period);
   void              Erace()  {sig_quant=ArrayResize(signal,0); symb_quant=ArrayResize(cSymbol,0);}
   void              Disconnect() {#ifdef __MQL5__ :: #endif Disconnect(cConnector);}

private:
   bool              CheckSignalsList(long id);
   bool              CheckTickersList(string ticket);
  };

CSignal::CSignal(){

   sig_quant=ArrayResize(signal,0);
   string host=eHost+":"+(string)ePort;
   char _host[], user[], pw[], db[];
   StringToCharArray(host,_host);
   StringToCharArray(eUser,user);
   StringToCharArray(ePassword,pw);
   StringToCharArray(eDB,db);
   Print(host);
   Print(ArraySize(_host));
   Print(_host[0]);
   cConnector=RunConnect(0,_host,user,pw,db);
}

CSignal::~CSignal(){

   DLOG("!!!Disconnect");
}

void CSignal::Control(bool isIgnorSignals){

   uint count=0;
   while(true){
      STradeSignal tradeSignal[100];
      uint left=MakeSignals(cConnector,tradeSignal,100);
      if(!isIgnorSignals){
         for(int i=0;i<100&&tradeSignal[i].id!=0;++i){
            ++count;
            NewSignal(tradeSignal[i]);
         }
      }
      if(!left)
         break;      
   }
   if (count>0)
      PrintFormat("%u signals found",count);
}

bool CSignal::NewSignal(STradeSignal& tradeSignal){
   int i=sig_quant;
   string data_2[];
   int res=0;
   string symbol=CharArrayToString(tradeSignal.symbol);
   if (!CheckSignalsList(tradeSignal.id)) res+=10000;
   if 

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

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

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

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

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

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

Стоимость полного кода
315,60₽ ≈ $3.86