Smart Session Breakout
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «smartsessionbreakout (2).mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Smart Session Breakout — это пользовательский индикатор для платформы MetaTrader 4, предназначенный для анализа ценовых диапазонов азиатской торговой сессии и определения пробоев этих диапазонов. Индикатор рассчитывает максимум и минимум цены за заданный временной интервал сессии, отображает их в виде диапазонной коробки на графике и формирует сигналы покупки и продажи при пробое верхней или нижней границы.
Для фильтрации ложных сигналов индикатор предоставляет опциональный фильтр на основе индикатора ATR, позволяющий подтверждать пробой только при достаточной силе движения цены. Сигналы могут выдаваться как в реальном времени, так и только по закрытию бара, что исключает перерисовку.
Индикатор включает встроенную информационную панель с отображением текущей фазы сессии, спреда, значения ATR и таймера до закрытия бара. Также поддерживаются многоканальные уведомления: всплывающие окна, звуковые сигналы, email и push-уведомления на мобильное устройство.
Настройки программы
| Настройка | Описание |
|---|---|
| InpAsianStart | Время начала азиатской сессии в брокерном часовом поясе (формат ЧЧ:ММ) |
| InpAsianEnd | Время окончания азиатской сессии в брокерном часовом поясу (формат ЧЧ:ММ) |
| InpMaxDays | Максимальное количество дней истории для обработки на графике |
| InpMinBoxPips | Минимальная допустимая высота диапазона в пипсах для фильтрации коробки |
| InpMaxBoxPips | Максимальная допустимая высота диапазона в пипсах для фильтрации коробки |
| InpSignalOnClose | Подтверждение сигнала только по закрытию бара для исключения перерисовки |
| InpUseATRFilter | Включить или отключить фильтр расширения на основе ATR для подтверждения пробоя |
| InpATRPeriod | Период расчёта индикатора ATR (средний истинный диапазон) |
| InpATRCoeff | Минимальное соотношение тела пробойного бара к значению ATR для подтверждения пробоя |
| InpBoxColor | Цвет линий диапазонной коробки азиатской сессии |
| InpFillBox | Включить или отключить заливку внутри диапазонной коробки азиатской сессии |
| InpUpperLineCol | Цвет верхней границы диапазонной коробки (уровень сопротивления) |
| InpLowerLineCol | Цвет нижней границы диапазонной коробки (уровень поддержки) |
| InpShowDash | Включить или отключить отображение информационной панели дашборда на графике |
| InpCorner | Угол экрана, в котором располагается панель дашборда |
| InpBgColor | Цвет фона панели дашборда |
| InpTxtColor | Цвет текста на панели дашборда |
| InpAccentColor | Акцентный цвет для выделения элементов на панели дашборда |
| InpPopupAlert | Включить или отключить всплывающие уведомления-алерты на графике |
| InpSoundAlert | Включить или отключить звуковой сигнал при появлении торгового сигнала |
| InpSendEmail | Включить или отключить отправку email-уведомлений при появлении сигнала |
| InpSendPush | Включить или отключить отправку push-уведомлений на мобильное устройство |
Поиск по коду файла
#property version "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 clrLimeGreen // Buy Signal Arrow
#property indicator_color2 clrRed // Sell Signal Arrow
#property indicator_color3 clrDodgerBlue // Upper Range Level
#property indicator_color4 clrDeepPink // Lower Range Level
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 1
#property indicator_width4 1
double BufferBuy[];
double BufferSell[];
double BufferUpperLevel[];
double BufferLowerLevel[];
input string InpAsianStart = "00:00"; // Asian Session Start (Broker Time HH:MM)
input string InpAsianEnd = "08:00"; // Asian Session End (Broker Time HH:MM)
input int InpMaxDays = 30; // Max Days to Process on Chart
input double InpMinBoxPips = 8.0; // Min Range Box Height (Pips)
input double InpMaxBoxPips = 70.0; // Max Range Box Height (Pips)
input bool InpSignalOnClose = true; // Confirm Signal on Bar Close (Non-Repainting)
input bool InpUseATRFilter = true; // Enable ATR Expansion Filter
input int InpATRPeriod = 14; // ATR Period
input double InpATRCoeff = 0.8; // Min Breakout Candle Body vs ATR Ratio
input color InpBoxColor = C'30,50,90'; // Asian Box Color (Dark Navy)
input bool InpFillBox = true; // Fill Asian Range Box
input color InpUpperLineCol = clrDodgerBlue;// Upper Line Color
input color InpLowerLineCol = clrDeepPink; // Lower Line Color
input bool InpShowDash = true; // Show On-Screen Dashboard Panel
input ENUM_BASE_CORNER InpCorner= CORNER_RIGHT_UPPER; // Panel Position Corner
input color InpBgColor = C'18,24,38';// Dashboard Background Color
input color InpTxtColor = clrWhite; // Dashboard Text Color
input color InpAccentColor = C'0,195,255';// Dashboard Accent Highlight
input bool InpPopupAlert = true; // Enable Pop-up Alert
input bool InpSoundAlert = true; // Enable Sound Alert
input bool InpSendEmail = false; // Enable Email Alert
input bool InpSendPush = false; // Enable Push Alert to Mobile
datetime g_lastAlertTime = 0;
string g_prefix = "SSB_";
double g_pipSize = 0.0001;
void DrawSessionBox(int dayId, datetime tStart, datetime tEnd, double highVal, double lowVal);
void UpdateDashboard();
void CreateOrUpdateLabel(string id, string text, int x, int y, color col, int fontSize=8, bool isBold=false);
void TriggerAlert(string msg);
void CleanUpObjects();
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
CleanUpObjects();
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
// код доступен только после оплаты
}
if(rates_total < 50) return(0);
int limit = rates_total - prev_calculated;
if(prev_calculated > 0) limit++;
int maxBars = iBarShift(NULL, 0, TimeCurrent() - InpMaxDays * 86400);
if(maxBars > 0 && limit > maxBars) limit = maxBars;
for(int i = limit - 1; i >= 0; i--)
{
BufferBuy[i] = EMPTY_VALUE;
BufferSell[i] = EMPTY_VALUE;
BufferUpperLevel[i] = EMPTY_VALUE;
BufferLowerLevel[i] = EMPTY_VALUE;
datetime curTime = time[i];
MqlDateTime dt;
TimeToStruct(curTime, dt);
datetime dayStart = StringToTime(TimeToStr(curTime, TIME_DATE) + " " + InpAsianStart);
datetime dayEnd = StringToTime(TimeToStr(curTime, TIME_DATE) + " " + InpAsianEnd);
if(dayEnd <= dayStart) dayEnd += 86400; // Overlap handling
if(curTime >= dayEnd)
{
int barStart = iBarShift(NULL, 0, dayStart, true);
int barEnd = iBarShift(NULL, 0, dayEnd, true);
if(barStart != -1 && barEnd != -1 && barStart > barEnd)
{
int count = barStart - barEnd + 1;
int highestShift = iHighest(NULL, 0, MODE_HIGH, count, barEnd);
int lowestShift = iLowest(NULL, 0, MODE_LOW, count, barEnd);
if(highestShift != -1 && lowestShift != -1)
{
double boxHigh = High[highestShift];
double boxLow = Low[lowestShift];
double boxPips = (boxHigh - boxLow) / g_pipSize;
if(boxPips >= InpMinBoxPips && boxPips <= InpMaxBoxPips)
{
BufferUpperLevel[i] = boxHigh;
BufferLowerLevel[i] = boxLow;
if(i == 0 || (i > 0 && TimeDay(time[i]) != TimeDay(time[i+1])))
{
DrawSessionBox(dt.day, dayStart, dayEnd, boxHigh, boxLow);
}
if(!InpSignalOnClose || i >= 1)
{
Показано первые 50% кода (символов: 8767)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.