void VolatilityFlip_Init()
Инициализирует модуль, сбрасывая все внутренние состояния и флаги переворота
Сообщите нам, если считаете, что материал размещён без разрешения.
Обращение по товару «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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.