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

volatilityflip.mqh

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

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

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

О программе

Модуль VolatilityFlip — это библиотечный компонент для платформ MetaTrader на языке MQL, предназначенный для обнаружения резких всплесков волатильности и временного изменения направления торговли. При выявлении свечи с аномально расширенным диапазоном по сравнению с расчетным уровнем модуль активирует режим переворота: стандартные сигналы на покупку заменяются на продажу и наоборот. Активированное состояние действует ограниченное количество баров, после чего модуль автоматически возвращает обычный режим работы. Модуль предоставляет функции для инициализации, обнаружения всплесков волатильности, обновления состояния переворота и проверки текущего статуса.

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

НастройкаОписание
UseVolatilityFlip Использовать переворот волатильности — Включает или отключает модуль определения и обработки всплесков волатильности
VolatilityBaselineBars Базовый период баров — Количество баров, используемых для расчета нормального диапазона волатильности
MaxRangeExpansionRatio Максимальное соотношение расширения диапазона — Пороговое значение, при превышении которого свеча считается аномальным всплеском волатильности
VolatilityFlipPeriodBars Период переворота в барах — Количество баров, в течение которых действует перевернутое направление торговли после обнаружения всплеска
VolatilityFlipDebug Отладочный вывод — Включает вывод подробной информации о обнаруженных всплесках и состоянии модуля в журнал

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

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

Функции
Функция void VolatilityFlip_Init()

Инициализирует модуль, сбрасывая все внутренние состояния и флаги переворота

Функция double VolatilityFlip_CalculateBaselineRange(int excludeBar)

Возвращает расчетный базовый диапазон волатильности за заданный период с возможностью исключения конкретного бара

Функция bool VolatilityFlip_IsBarAShock(int barIndex, bool logOutput)

Проверяет, является ли указанный бар аномальным всплеском волатильности по сравнению с базовым уровнем

Функция bool VolatilityFlip_Detect()

Обнаруживает вновь завершенную свечу с аномальным диапазоном и активирует режим переворота направления

Функция void VolatilityFlip_Update()

Обновляет внутренний счетчик периода переворота и деактивирует режим по его истечении

Функция bool IsVolatilityFlipped()

Возвращает текущий флаг состояния переворота направления торговли

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

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

#ifndef VOLATILITY_FLIP_MQH
#define VOLATILITY_FLIP_MQH

input bool     UseVolatilityFlip        = true;
input int      VolatilityBaselineBars   = 20;
input double   MaxRangeExpansionRatio   = 1.80;
input int      VolatilityFlipPeriodBars = 3;
input bool     VolatilityFlipDebug      = false;

datetime g_vf_lastShockBarTime          = 0;
bool     g_vf_volatilityFlip            = false;
int      g_vf_flipBarsRemaining         = 0;

void VolatilityFlip_Init()
{
   g_vf_volatilityFlip    = false;
   g_vf_flipBarsRemaining = 0;
   g_vf_lastShockBarTime  = 0;
}

double VolatilityFlip_CalculateBaselineRange(int excludeBar)
{
   double sum = 0.0;
   int counted = 0;

   for(int i = 1; i <= 1 + VolatilityBaselineBars && i < Bars; i++)
   {
      if(i == excludeBar)
         continue;

      sum += High[i] - Low[i];
      counted++;
   }

   return (counted > 0) ? (sum / counted) : 0.0;
}

bool VolatilityFlip_IsBarAShock(int barIndex, bool logOutput = true)
{
   if(!UseVolatilityFlip)
      return false;

   if(barIndex < 0 || barIndex >= Bars)
      return false;

   double candleRange   = High[barIndex] - Low[barIndex];
   double baselineRange = VolatilityFlip_CalculateBaselineRange(barIndex);

   if(baselineRange <= 0.0)
      return false;

   double shockRatio = candleRange / baselineRange;
   bool isShock      = (shockRatio >= MaxRangeExpansionRatio);

   if(logOutput && VolatilityFlipDebug)
   {
      Print("  [SHOCK] Bar[", barIndex, "] a

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

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

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

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

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

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

Стоимость полного кода
222,20₽ ≈ $2.72