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

marketcache.mqh

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

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

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

О программе

Данная библиотека представляет собой заголовочный модуль MQL для кэширования общих рыночных данных и вспомогательных функций торговых сессий. Она предназначена для использования в среде MT4 и поддерживает автономную компиляцию в виде .mqh-файла.

Библиотека кэширует ключевые данные по текущей и предыдущей свечам (цена закрытия, открытия, максимум и минимум за 10 баров), что позволяет избежать повторных вызовов индикаторных функций. Также предоставляются функции проверки принадлежности текущего времени к разрешённым торговым сессиям (Лондон, Нью-Йорк, Азия) и определения периодов ролловера.

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

Настройки программы

НастройкаОписание
UseSessions Переключатель, включающий или выключающий фильтрацию торговли по торговым сессиям. При значении false торговля разрешена в любое время.
BrokerGMTOffset Целое число, задающее смещение часового пояса брокера относительно GMT в часах. Используется для корректного определения времени торговых сессий.
TradeLondon Переключатель, разрешающий или запрещающий торговлю во время лондонской торговой сессии (с 08:00 до 17:00 по GMT брокера).
TradeNewYork Переключатель, разрешающий или запрещающий торговлю во время нью-йоркской торговой сессии (с 13:00 до 22:00 по GMT брокера).
TradeAsian Переключатель, разрешающий или запрещающий торговлю во время азиатской торговой сессии (с 23:00 до 08:00 по GMT брокера).
AvoidRollover Переключатель, определяющий, следует ли избегать торговли в периоды ролловера (с 23:55 до 00:10). При значении false проверка ролловера отключена.

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

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

Функции
Функция void BuildSharedMarketCache(datetime currentBar)

Формирует кэш общих рыночных данных для указанной свечи: кэширует цены закрытия и открытия, а также максимум и минимум за последние 10 баров, избегая повторных пересчётов в рамках одного бара.

Функция bool IsTradeTimeGlobal(datetime t)

Проверяет, попадает ли указанное время в разрешённые торговые сессии (Лондон, Нью-Йорк, Азия) с учётом настроек и смещения часового пояса брокера. Если фильтрация сессий отключена, всегда возвращает true.

Функция bool IsRolloverGlobal(datetime t)

Определяет, находится ли указанное время в периоде ролловера (с 23:55 до 00:10). Если проверка ролловера отключена, всегда возвращает false.

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

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

#property strict

#ifndef MARKETCACHE_MQH
#define MARKETCACHE_MQH

#ifndef IS_EA
int      g_CachedSpread       = 0;
bool     g_CachedTradeTime    = true;
bool     g_CachedRollover     = false;
double   g_CachedRecentHigh10 = 0.0;
double   g_CachedRecentLow10  = 0.0;
double   g_CachedClose1       = 0.0;
double   g_CachedOpen1        = 0.0;
datetime g_CachedMarketBar    = 0;

input bool UseSessions      = true;
input int  BrokerGMTOffset  = 2;
input bool TradeLondon      = true;
input bool TradeNewYork     = true;
input bool TradeAsian       = false;
input bool AvoidRollover    = true;
#endif

void BuildSharedMarketCache(datetime currentBar)
{
   if(g_CachedMarketBar == currentBar)
      return;

   g_CachedMarketBar = currentBar;

   g_CachedClose1 = iClose(NULL, 0, 1);
   g_CachedOpen1  = iOpen(NULL, 0, 1);

   int highestShift = iHighest(NULL, 0, MODE_HIGH, 1

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

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

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

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

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

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

Стоимость полного кода
131,80₽ ≈ $1.61