class CSignal
Класс для работы с торговыми сигналами: получение, валидация и хранение
Сообщите нам, если считаете, что материал размещён без разрешения.
Обращение по товару «signal.mqh» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
Библиотека signal.mqh реализует класс CSignal для платформы MetaTrader 4. Она обеспечивает подключение к удалённому серверу, получение торговых сигналов и их управление в виде внутренних массивов.
При создании объекта класса устанавливается соединение с сервером по параметрам хоста, порта, пользователя и базы данных. Метод Control непрерывно получает торговые сигналы от сервера и передаёт их для обработки в метод NewSignal.
NewSignal проверяет каждый полученный сигнал по спискам допустимых сигналов и тикеров, убеждается в доступности символа и разрешённом режиме торговли, после чего сохраняет валидный сигнал в массив с типом (покупка/продажа), временем и символом. Метод IsOldSignal позволяет определить, устарел ли сигнал за заданный период.
Вспомогательные методы Erace очищают хранилище сигналов и символов, а Disconnect завершает соединение с сервером. Приватные методы обеспечивают фильтрацию сигналов и тикеров по настраиваемым спискам.
Классов: 1 · методов: 5 · конструкторов: 1 · деструкторов: 1 · отдельных функций: 0
class CSignal
Класс для работы с торговыми сигналами: получение, валидация и хранение
CSignal()
Конструктор класса CSignal, устанавливающий соединение с сервером
~CSignal()
Деструктор класса CSignal, выводящий сообщение об отключении
void Control(bool isIgnorSignals)
Получение торговых сигналов от сервера и их обработка
bool NewSignal(STradeSignal& tradeSignal)
Добавление нового торгового сигнала в массив после проверки
bool IsOldSignal(SSignal &sgnl,int period)
Проверка, устарел ли сигнал по заданному периоду
void Erace()
Очистка массивов сигналов и символов
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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.