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

lock.mqh

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

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

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

О программе

Библиотека CLock представляет собой MQL-код для управления блокировкой торговых позиций. Класс обеспечивает отслеживание открытых ордеров и контроль их состояния в рамках автоматизированных торговых систем.

Внутри класса поддерживаются два массива: один для ордеров, другой для объектов контроля. Библиотека способна обнаруживать новые позиции, привязывать их к контроллерам и отслеживать изменения в существующих позициях.

Основные возможности включают проверку новых позиций, массовое закрытие отслеживаемых ордеров, а также запоминание позиций с учётом особенностей платформы MQL5 и других версий MQL.

Библиотека предназначена для использования внутри советников и скриптов на платформе MetaTrader, работающих с языком MQL.

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

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

Классы
Класс class CLock

Класс для управления блокировкой и контролем торговых позиций.

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

Конструктор класса, инициализирующий массивы ордеров и контролей с нулевым размером.

Метод · CLock void ControlBind(CThisTrade &ord)

Привязывает торговый ордер к новому объекту контроля для последующего отслеживания.

Метод · CLock void Control()

Запускает полный цикл контроля: поиск новых позиций, проверку существующих контролей и управление ордерами.

Метод · CLock void FindNewControls()

Просканирует основной список ордеров и обнаруживает новые позиции, создавая для них объекты контроля.

Метод · CLock void CheckControl()

Проверяет состояние каждого объекта контроля и создаёт новые заблокированные позиции или удаляет утерянные.

Метод · CLock void OrdersControl()

Проверяет управляемость каждого отслеживаемого ордера и удаляет утерянные.

Метод · CLock bool IsNewPosition(CThisTrade &ord)

Определяет, является ли переданный ордер новой, ещё не отслеживаемой позицией.

Метод · CLock void NewControl(CThisTrade &ord,int i)

Создаёт новый объект контроля на основе переданного торгового ордера.

Метод · CLock void NewPosition(CControl &ctrl,int i)

Создаёт новую заблокированную позицию на основе объекта контроля при выполнении условий разрешения.

Метод · CLock bool CloseAll()

Попытывается закрыть все отслеживаемые позиции. Возвращает результат операции.

Метод · CLock bool IsEmpty()

Проверяет, пуст ли список отслеживаемых ордеров.

Метод · CLock void RememberPosition()

Запоминает текущую позицию и добавляет её в массив отслеживаемых ордеров (для MQL5).

Метод · CLock 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 и перейдите к оплате.

Стоимость полного кода
198,50₽ ≈ $2.43