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

xmcentryengine.mqh

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

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

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

О программе

Библиотека для MetaTrader 4, реализующая класс CXMCEntryEngine. Назначение — предоставить инструменты для определения тренда, расчёта расстояния до входа, расчёта объёма лота и надёжного открытия ордеров.

Для определения направления тренда используются две скользящие средние EMA с заданными периодами на ценах закрытия. Расстояние может рассчитываться либо через ATR с заданным множителем, либо через фиксированное значение в пунктах.

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

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

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

Классы
Класс class CXMCEntryEngine

Основной класс библиотеки, инкапсулирующий логику определения тренда, расчёта расстояния, объёма лота и открытия ордеров.

Методы и конструкторы
Метод · CXMCEntryEngine void Init(string symbol, string comment, int magic)

Инициализация параметров торгового символа, комментария и магического номера, сброс временных меток.

Метод · CXMCEntryEngine void UpdateSymbol(string symbol)

Обновление текущего торгового символа.

Метод · CXMCEntryEngine int GetTrend(int fastPeriod, int slowPeriod)

Определение направления тренда по двум скользящим средним EMA (быстрой и медленной) на ценах закрытия. Возвращает OP_BUY, OP_SELL или -1.

Метод · CXMCEntryEngine double GetDistance(double atr, bool useAtr, double atrMult, double fallbackPts)

Расчёт расстояния в пунктах: на основе ATR с заданным множителем или фиксированного значения в пунктах, нормализованное до количества знаков символа.

Метод · CXMCEntryEngine double CalcLot(int layer, double fixedLot, double multiplier)

Расчёт объёма лота по многослойной схеме с фиксированным базовым лотом и мультипликатором, нормализованный для символа.

Метод · CXMCEntryEngine bool OpenLayer(int dir, double lot, string reason)

Открытие покупательского или продавческого ордера по текущей цене ASK/BID с заданным объёмом, комментарием, магическим номером и цветом стрелки. Возвращает успешность выполнения.

Метод · CXMCEntryEngine bool AllowTrade(int cooldown)

Проверка возможности совершения сделки с учётом охлаждения между сделками и смены текущего бара.

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

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

#ifndef __XMCENTRYENGINE_MQH__
#define __XMCENTRYENGINE_MQH__

#include <OrderExecution.mqh>
#include <XMCTradeUtils.mqh>

class CXMCEntryEngine
{
private:
   string   m_symbol;
   string   m_comment;
   int      m_magic;
   datetime m_lastTradeTime;
   datetime m_lastBarTime;

public:

   void Init(string symbol, string comment, int magic)
   {
      m_symbol       = symbol;
      m_comment      = comment;
      m_magic         = magic;
      m_lastTradeTime = 0;
      m_lastBarTime   = 0;
   }

   void UpdateSymbol(string symbol) { m_symbol = symbol; }

   int GetTrend(int fastPeriod, int slowPeriod)
   {
      double fast = iMA(m_symbol, 0, fastPeriod,
                        0, MODE_EMA, PRICE_CLOSE, 0);
      double slow = iMA(m_symbol, 0, slowPeriod,
                        0, MODE_EMA, PRICE_CLOSE, 0);

      if(fast > slow)
         return OP_BUY;

      if(fast < slow)
         return OP_SELL;

      return -1;
   }

   double GetDistance(double atr, bool useAtr, double atrMult, double fallbackPts)
   {
      int digits = (int)MarketInfo(m_symbol, MODE_DIGITS);

      if(useAtr && atr > 0.0)
         return NormalizeDouble(atr * atrMult, digits);

      return

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

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

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

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

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

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

Стоимость полного кода
161,30₽ ≈ $1.97