class CLock
Класс для управления блокировкой и контролем торговых позиций.
Сообщите нам, если считаете, что материал размещён без разрешения.
Обращение по товару «lock.mqh» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
Библиотека CLock представляет собой MQL-код для управления блокировкой торговых позиций. Класс обеспечивает отслеживание открытых ордеров и контроль их состояния в рамках автоматизированных торговых систем.
Внутри класса поддерживаются два массива: один для ордеров, другой для объектов контроля. Библиотека способна обнаруживать новые позиции, привязывать их к контроллерам и отслеживать изменения в существующих позициях.
Основные возможности включают проверку новых позиций, массовое закрытие отслеживаемых ордеров, а также запоминание позиций с учётом особенностей платформы MQL5 и других версий MQL.
Библиотека предназначена для использования внутри советников и скриптов на платформе MetaTrader, работающих с языком MQL.
Классов: 1 · методов: 12 · конструкторов: 1 · деструкторов: 0 · отдельных функций: 0
class CLock
Класс для управления блокировкой и контролем торговых позиций.
CLock()
Конструктор класса, инициализирующий массивы ордеров и контролей с нулевым размером.
void ControlBind(CThisTrade &ord)
Привязывает торговый ордер к новому объекту контроля для последующего отслеживания.
void Control()
Запускает полный цикл контроля: поиск новых позиций, проверку существующих контролей и управление ордерами.
void FindNewControls()
Просканирует основной список ордеров и обнаруживает новые позиции, создавая для них объекты контроля.
void CheckControl()
Проверяет состояние каждого объекта контроля и создаёт новые заблокированные позиции или удаляет утерянные.
void OrdersControl()
Проверяет управляемость каждого отслеживаемого ордера и удаляет утерянные.
bool IsNewPosition(CThisTrade &ord)
Определяет, является ли переданный ордер новой, ещё не отслеживаемой позицией.
void NewControl(CThisTrade &ord,int i)
Создаёт новый объект контроля на основе переданного торгового ордера.
void NewPosition(CControl &ctrl,int i)
Создаёт новую заблокированную позицию на основе объекта контроля при выполнении условий разрешения.
bool CloseAll()
Попытывается закрыть все отслеживаемые позиции. Возвращает результат операции.
bool IsEmpty()
Проверяет, пуст ли список отслеживаемых ордеров.
void RememberPosition()
Запоминает текущую позицию и добавляет её в массив отслеживаемых ордеров (для MQL5).
void Remember()
Запоминает текущую позицию и добавляет её в массив отслеживаемых ордеров (для платформ не-MQL5).
#include "Header.mqh"
#ifndef _LOCK_
#define _LOCK_
class CLock{
public:
CThisTrade order[];
CControl control[];
int ord_quant;
int ctrl_quant;
CLock();
void ControlBind(CThisTrade &ord);
void Control();
void FindNewControls();
void CheckControl();
void OrdersControl();
bool IsNewPosition(CThisTrade &ord);
void NewControl(CThisTrade &ord,int i);
void NewPosition(CControl &ctrl,int i);
bool CloseAll();
bool IsEmpty() {return !ord_quant;}
#ifdef __MQL5__
void RememberPosition();
#else
void Remember();
#endif
};
CLock::CLock(){
ord_quant=ArrayResize(order,0);
ctrl_quant=ArrayResize(control,0);}
#ifdef __MQL5__
void CLock::RememberPosition(void){
int i=ord_quant;
ArrayResize(order,++ord_quant);
order[i].RememberPosition(false);
}
#else
void CLock::Remember(void){
int i=ord_quant;
ArrayResize(order,++ord_quant);
order[i].Remember(false);}
#endif
void CLock::ControlBind(CThisTrade &ord){
int i=ctrl_quant;
ArrayResize(control,++ctrl_quant);
control[i].Init(ord);}
vПоказано первые 50% кода (символов: 1985)
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.