class CXMCEntryEngine
Основной класс библиотеки, инкапсулирующий логику определения тренда, расчёта расстояния, объёма лота и открытия ордеров.
Сообщите нам, если считаете, что материал размещён без разрешения.
Обращение по товару «xmcentryengine.mqh» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
Библиотека для MetaTrader 4, реализующая класс CXMCEntryEngine. Назначение — предоставить инструменты для определения тренда, расчёта расстояния до входа, расчёта объёма лота и надёжного открытия ордеров.
Для определения направления тренда используются две скользящие средние EMA с заданными периодами на ценах закрытия. Расстояние может рассчитываться либо через ATR с заданным множителем, либо через фиксированное значение в пунктах.
Объём лота рассчитывается по многослойной мультипликаторной схеме. Открытие ордеров выполняется через надёжную функцию отправки с повторной попыткой. Доступность торговли ограничивается механизмом охлаждения.
Классов: 1 · методов: 7 · конструкторов: 0 · деструкторов: 0 · отдельных функций: 0
class CXMCEntryEngine
Основной класс библиотеки, инкапсулирующий логику определения тренда, расчёта расстояния, объёма лота и открытия ордеров.
void Init(string symbol, string comment, int magic)
Инициализация параметров торгового символа, комментария и магического номера, сброс временных меток.
void UpdateSymbol(string symbol)
Обновление текущего торгового символа.
int GetTrend(int fastPeriod, int slowPeriod)
Определение направления тренда по двум скользящим средним EMA (быстрой и медленной) на ценах закрытия. Возвращает OP_BUY, OP_SELL или -1.
double GetDistance(double atr, bool useAtr, double atrMult, double fallbackPts)
Расчёт расстояния в пунктах: на основе ATR с заданным множителем или фиксированного значения в пунктах, нормализованное до количества знаков символа.
double CalcLot(int layer, double fixedLot, double multiplier)
Расчёт объёма лота по многослойной схеме с фиксированным базовым лотом и мультипликатором, нормализованный для символа.
bool OpenLayer(int dir, double lot, string reason)
Открытие покупательского или продавческого ордера по текущей цене ASK/BID с заданным объёмом, комментарием, магическим номером и цветом стрелки. Возвращает успешность выполнения.
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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.