Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «copier.mqh» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
Краткий обзор
О программе
Данный файл является библиотекой исходного кода для MetaTrader 4 (MQL4) и предназначен для организации обмена торговыми данными между счетами через файл. Библиотека содержит набор классов, которые описывают отдельные позиции и ордера, таблицу соответствия имён инструментов, механизм чтения и записи файла обмена, а также управление группами ордеров, объединённых общим магическим номером.
Основу составляют классы CSymbolData, CCrossTableItem, CCrossTable, CFileData и CGroupOrders. Класс CSymbolData хранит сведения об одной позиции или ордере и умеет загружать их из строки файла. Класс CCrossTable отвечает за список доступных инструментов и сопоставление имён между счетами. Класс CFileData выполняет чтение и запись файла обмена, а также сбор статистики по счёту и инструментам. Класс CGroupOrders управляет группой ордеров с общим магическим номером, включая открытие, закрытие, изменение защитных уровней и дробление объёма.
Библиотека содержит пять классов, два конструктора, один деструктор, пятьдесят шесть методов и одну отдельную функцию. Все классы и методы носят вспомогательный характер и предназначены для использования в составе более крупного торгового приложения, а не как самостоятельный советник или индикатор. Входные параметры в файле отсутствуют.
Класс-контейнер, хранящий сведения об отдельной позиции или ордере: тикеты на стороне источника и приёмника, символы, тип, объём, цены открытия и закрытия, стоп-лосс, тейк-профит, время, магический номер, комментарий и состояние.
Классclass CCrossTableItem
Класс-элемент таблицы соответствия символов, хранящий пару связанных имён инструментов.
Классclass CCrossTable
Класс таблицы соответствия символов, загружаемой из файла и используемой для сопоставления имён инструментов между счетами.
Классclass CFileData
Класс, отвечающий за обмен данными между счетами через файл: хранит сведения о счёте, список инструментов и массив записей о позициях и ордерах.
Классclass CGroupOrders
Класс управления группой ордеров, объединённых общим магическим номером, с поддержкой дробления объёма.
Функции
Функцияvoid LOG(string x)
Выводит сообщение в журнал при включённой отладке.
Методы и конструкторы
Метод · CSymbolDatavoid Reset()
Сбрасывает все поля объекта в начальные значения, подготавливая его к повторному использованию.
Конструктор · CSymbolDataCSymbolData()
Конструктор по умолчанию, создающий пустой объект с обнулёнными полями.
Метод · CSymbolDatavoid operator=(const int nil)
Оператор присваивания, выполняющий сброс объекта к пустому состоянию.
Метод · CSymbolDatavoid operator=(const CSymbolData &data)
Оператор присваивания, копирующий все поля из другого объекта того же класса.
Метод · CSymbolDatabool Load(long laccount,bool master_ishedge,bool ishedge,string &sdata[],long ltime_offset)
Заполняет объект данными из массива строк, полученных из файла обмена, с учётом типа счёта и смещения времени; возвращает признак успешной загрузки.
Метод · CSymbolDatalong GetMagic(long iaccount)
Возвращает магический номер, связанный с данной записью.
Метод · CSymbolDatavoid Print()
Выводит в журнал отладочную информацию о позиции или ордере.
Метод · CCrossTableItemvoid Print()
Выводит в журнал пару символов, хранящихся в элементе таблицы соответствия.
Метод · CCrossTableint GetAllTradeSymbols(bool bremove)
Формирует список доступных для торговли инструментов из обзора рынка; при необходимости удаляет неторговые символы и возвращает их количество.
Метод · CCrossTablevoid Init()
Собирает по текущим открытым позициям статистику по каждому инструменту: количество покупок, продаж и относительную просадку.
Метод · CCrossTableint LoadCrossCFD(string smaster_suffix,string sslave_suffix,string sCopirName)
Загружает таблицу соответствия символов из файла, создавая файл с примером при его отсутствии; возвращает число загруженных пар.
Метод · CCrossTablestring cross_fx(string name)
Подбирает подходящее имя инструмента для торговли по заданному имени с учётом таблицы соответствия и пользовательских суффиксов; возвращает пустую строку, если соответствие не найдено.
Метод · CFileDatavoid Reset()
Сбрасывает все поля объекта в начальные значения и освобождает массивы данных.
Конструктор · CFileDataCFileData()
Конструктор по умолчанию, создающий пустой объект с обнулёнными полями.
Деструктор · CFileData~CFileData()
Деструктор, освобождающий массивы данных при уничтожении объекта.
Метод · CFileDatabool do_action_filedata_order(CSymbolData &order)
Виртуальный обработчик, вызываемый для каждой загруженной записи о позиции или ордере; в базовом классе ничего не изменяет.
Метод · CFileDatavoid do_action_filedata_init()
Виртуальный обработчик инициализации, вызываемый после загрузки списка символов и таблицы соответствия; в базовом классе пуст.
Метод · CFileDatavoid OnInit(string sVERSION,string sName,string smaster_suffix,string sslave_suffix,bool bRemoveNoTrade)
Инициализирует объект: сохраняет версию и имя, загружает список торговых символов и таблицу соответствия, затем вызывает обработчик инициализации.
Метод · CFileDatavoid OnDeinit(const int reason)
Освобождает массивы данных при завершении работы.
Метод · CFileDatavoid FilterComment(string &comment)
Заменяет в строке комментария символ-разделитель, чтобы он не нарушал формат обмена данными.
Метод · CFileDataulong ConvertTicket(ulong thist)
Приводит тикет к корректному виду с учётом особенностей платформы.
Метод · CFileDatabool IsSendEquity()
Виртуальный метод, определяющий, нужно ли передавать данные об эквити; в базовом классе возвращает false.
Метод · CFileDatabool do_filter_filedata_update(bool bupdate)
Виртуальный фильтр, позволяющий наследнику изменить решение об обновлении данных; в базовом классе возвращает переданное значение.
Метод · CFileDatavoid Master(int iMaxHistory)
Собирает данные о счёте-источнике и его открытых позициях и ордерах, при необходимости сохраняет их в файл обмена.
Метод · CFileDatavoid Slave(ulong iAccountNumber)
Читает файл обмена для указанного счёта-источника и загружает из него данные, если файл изменился.
Метод · CFileDatavoid ClearTicket(ulong tclear)
Сбрасывает тикет указанной записи, помечая её как обработанную.
Метод · CFileDatavoid Save()
Формирует и записывает в файл обмена данные о счёте, инструментах и позициях для передачи на счёт-приёмник.
Метод · CFileDataint GetIndexSymbolData(string ssymbol)
Возвращает индекс инструмента в загруженном списке или -1, если инструмент не найден.
Метод · CFileDataint GetSymbolDataCountBuy(int i)
Возвращает количество покупок по инструменту с заданным индексом.
Метод · CFileDataint GetSymbolDataCountSell(int i)
Возвращает количество продаж по инструменту с заданным индексом.
Метод · CFileDatavoid ResetTriggerCopyByCount()
Удаляет глобальные переменные-триггеры, связанные с открытием позиций по инструментам.
Метод · CFileDataint GetSymbolDataCountAll(int i)
Возвращает общее количество позиций по инструменту с заданным индексом.
Метод · CFileDatadouble GetSymbolDataDD(int i)
Возвращает относительную просадку по инструменту с заданным индексом.
Метод · CFileDataint LoadFile(string sfile,ulong iAccountNumber)
Загружает данные из файла обмена: сведения о счёте, список инструментов и записи о позициях и ордерах; возвращает код результата.
Метод · CFileDataenum_type_data GetData(string &sstring,string &sdata[])
Разбирает строку файла обмена и определяет её тип: версия, данные счёта, инструмент или позиция.
Метод · CFileDatabool NettingPosition(CSymbolData &data)
Объединяет загруженные записи по одному инструменту в общую нетто-позицию с учётом направления и объёма.
Метод · CFileDatadouble NettingPositionMaster(string sSymbol,ENUM_ORDER_TYPE &etype)
Определяет по накопленным данным направление и объём нетто-позиции по заданному инструменту.
Метод · CGroupOrdersvoid do_action_open_success(bool is_reopen)
Виртуальный обработчик, вызываемый после успешного открытия позиции; в базовом классе пуст.
Метод · CGroupOrdersvoid do_action_closed_success()
Виртуальный обработчик, вызываемый при загрузке уже закрытой позиции; в базовом классе пуст.
Метод · CGroupOrdersbool do_action_order_check_open_by_count(int icount,double master_dd_full)
Виртуальный фильтр, позволяющий ограничить открытие по количеству ордеров; в базовом классе разрешает открытие.
Метод · CGroupOrdersbool do_action_order_check_open(bool is_hedge,bool &is_reopen)
Виртуальный фильтр перед открытием позиции; запрещает открытие для записей из истории и в базовом классе разрешает остальные случаи.
Метод · CGroupOrdersbool do_action_order_check_close()
Виртуальный фильтр перед закрытием позиции; в базовом классе разрешает закрытие.
Метод · CGroupOrdersbool do_action_order_check_partclose()
Виртуальный фильтр перед частичным закрытием позиции; в базовом классе разрешает операцию.
Метод · CGroupOrdersbool do_action_order_check_partlot()
Виртуальный фильтр перед частичным изменением объёма; в базовом классе разрешает операцию.
Метод · CGroupOrdersbool do_action_order_check_modify()
Виртуальный фильтр перед изменением защитных уровней; запрещает изменение для записей из истории и в остальных случаях разрешает.
Метод · CGroupOrdersbool do_action_groupmodify_check_modify(long etype,double dopen,double dstop,double dtake)
Виртуальный фильтр перед изменением защитных уровней группы; запрещает изменение для записей из истории и в остальных случаях разрешает.
Метод · CGroupOrdersbool do_action_order(CSymbolData &order)
Виртуальный обработчик, позволяющий скорректировать запись о позиции или ордере; в базовом классе ничего не изменяет.
Метод · CGroupOrdersbool EniqueType(long ileft,long iright)
Проверяет, относятся ли два типа ордеров к одному направлению (покупка или продажа).
Метод · CGroupOrdersbool OnInit(ulong laccount,CSymbolData &eorder,double dmultiplicator,double dmaxlot,double duserlot)
Инициализирует управление группой: сохраняет параметры инструмента, множитель объёма, ограничения по лоту и данные записи.
Метод · CGroupOrdersbool Check(CPositionInfo &position,long imagic)
Проверяет, относится ли позиция к данной группе по комментарию, инструменту и магическому номеру.
Метод · CGroupOrdersbool Check(COrderInfo &order,long imagic)
Проверяет, относится ли ордер к данной группе по комментарию, инструменту и магическому номеру.
Метод · CGroupOrdersbool Check(CDealInfo &deal,long imagic)
Проверяет, относится ли сделка к данной группе по комментарию, инструменту и магическому номеру.
Метод · CGroupOrdersdouble GroupInHistory(bool is_hedge,bool &in_market)
Проверяет, есть ли позиции группы в рынке или в истории, и возвращает цену для возможного повторного входа.
Метод · CGroupOrdersint GetGroupsCount()
Возвращает количество групп ордеров, различающихся магическими номерами.
Метод · CGroupOrdersbool GroupControl(bool is_hedge,int icount,double master_dd_full)
Управляет группой ордеров: при необходимости открывает, доливает, сокращает или закрывает позиции в соответствии с целевым объёмом.
Метод · CGroupOrdersbool GroupControlCloseNetting(bool is_hedge)
Управляет закрытием группы на неттинговом счёте, когда требуется закрыть позицию по инструменту.
Метод · CGroupOrdersbool GroupClose(bool is_hedge,int itype,double dcloselot)
Закрывает позиции и удаляет отложенные ордера группы полностью или на указанный объём.
Метод · CGroupOrdersbool GroupModify(bool is_hedge)
Изменяет защитные уровни позиций и отложенных ордеров группы в соответствии с данными записи.
Метод · CGroupOrdersbool GroupInfo(int &itype,double &daverage,double &dlot,double &dprofit,int &icount)
Собирает сводную информацию о группе: направление, среднюю цену, суммарный объём, прибыль и количество ордеров.
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.