ma (lines)-arrows body cross ma.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ma (lines)-arrows body cross ma.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный индикатор для MetaTrader 5 отображает скользящую среднюю (СА) на графике цены с возможностью смены цвета линии в зависимости от направления наклона или пересечения цены. В точках пересечения скользящей средней и цены индикатор рисует стрелки вверх и вниз, а также может отображать вертикальные линии-маркеры.
Индикатор поддерживает работу на различных таймфреймах, включая интерполяцию данных при мультитаймфреймном режиме. Доступны пять типов скользящих средних и множество ценовых сценариев для расчёта, что обеспечивает гибкость настройки.
Встроена система уведомлений с поддержкой различных типов оповещений: всплывающие сообщения, звуковые сигналы, push-уведомления и email. Стрелки и линии полностью настраиваются по размеру, цвету и стилю отображения.
Индикатор предназначен для визуального анализа пересечений цены и скользящей средней, помогая трейдеру идентифицировать потенциальные точки разворота тренда на графике.
Настройки программы
| Настройка | Описание |
|---|---|
| Time frame (TimeFrame) | Таймфрейм — Таймфрейм, на котором рассчитывается и отображается индикатор. |
| Color change on:: (colorOn) | Условие смены цвета — Задаёт условие смены цвета линии скользящей средней: по наклону или по пересечению цены. |
| Ma period (MAPeriod) | Период скользящей средней — Количество баров, используемых для расчёта скользящей средней. |
| Ma type (MAType) | Тип скользящей средней — Тип скользящей средней (SMA, EMA, SMMA, LWMA, LSMA). |
| Ma price to use (MAPrice) | Цена для расчёта скользящей средней — Цена, используемая для расчёта скользящей средней (Close, Open, High, Low и другие варианты). |
| Alerts on true/false? (alertsOn) | Включить уведомления — Включает или отключает систему уведомлений о пересечениях. |
| Alerts on (still opened) bar true/false? (alertsOnCurrent) | Уведомления на текущем баре — Определяет, генерируются ли уведомления на текущем незакрытом баре. |
| Alerts message true/false? (alertsMessage) | Всплывающие сообщения — Включает или отключает всплывающие сообщения при пересечении. |
| Alerts sound true/false? (alertsSound) | Звуковой сигнал — Включает или отключает звуковой сигнал при пересечении. |
| Alerts push notification true/false? (alertsNotify) | Push-уведомления — Включает или отключает push-уведомления на мобильных устройствах. |
| Alerts email true/false? (alertsEmail) | Email-уведомления — Включает или отключает отправку email-уведомлений при пересечении. |
| Sound file (soundFile) | Файл звука — Путь к звуковому файлу, воспроизводимому при пересечении. |
| Arrows visible? (ShowArrows) | Отображение стрелок — Включает или отключает отображение стрелок пересечения на графике. |
| Arrow on first bars true/false (ArrowOnFirst) | Стрелки на первых барах — Определяет, отображаются ли стрелки на первых барах графика. |
| Up Arrow size (UpArrowSize) | Размер стрелки вверх — Размер стрелки вверх в пунктах графика. |
| Down Arrow size (DnArrowSize) | Размер стрелки вниз — Размер стрелки вниз в пунктах графика. |
| Up Arrow code (UpArrowCode) | Код стрелки вверх — Код графического объекта для стрелки вверх. |
| Down arrow code (DnArrowCode) | Код стрелки вниз — Код графического объекта для стрелки вниз. |
| Up Arrow gap (UpArrowGap) | Отступ стрелки вверх — Отступ стрелки вверх от расчётной точки в ценовых единицах. |
| Dn Arrow gap (DnArrowGap) | Отступ стрелки вниз — Отступ стрелки вниз от расчётной точки в ценовых единицах. |
| Up Arrow Color (UpArrowColor) | Цвет стрелки вверх — Цвет стрелки вверх, указывающей на потенциальный разворот. |
| Down Arrow Color (DnArrowColor) | Цвет стрелки вниз — Цвет стрелки вниз, указывающей на потенциальный разворот. |
| Show vertical lines true/false? (verticalLinesVisible) | Отображение вертикальных линий — Включает или отключает отображение вертикальных линий при пересечении. |
| Vertical lines drawn on newest bar of higher time frame bar true/false? (linesOnNewest) | Линии на новейшем баре — Определяет, рисуются ли вертикальные линии на новейшем баре более высокого таймфрейма. |
| Lines ID (verticalLinesID) | Идентификатор линий — Идентификатор вертикальных линий для их поиска и удаления при деинициализации. |
| Lines up color (verticalLinesUpColor) | Цвет линии вверх — Цвет вертикальной линии вверх, рисуемой при пересечении. |
| Lines down color (verticalLinesDnColor) | Цвет линии вниз — Цвет вертикальной линии вниз, рисуемой при пересечении. |
| Lines style (verticalLinesStyle) | Стиль линий — Стиль отображения вертикальных линий (пунктир, сплошная и т.д.). |
| lines width (verticalLinesWidth) | Толщина линий — Толщина вертикальных линий в пунктах графика. |
| Interpolate in multi time frame mode on/off? (Interpolate) | Интерполяция мультитаймфрейм — Включает или выключает интерполяцию данных при отображении на другом таймфрейме. |
Поиск по коду файла
???//------------------------------------------------------------------
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 clrLimeGreen
#property indicator_color2 clrRed
#property indicator_color3 clrRed
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property strict
enum enTimeFrames
{
tf_cu = PERIOD_CURRENT, // Current time frame
tf_m1 = PERIOD_M1, // 1 minute
tf_m5 = PERIOD_M5, // 5 minutes
tf_m15 = PERIOD_M15, // 15 minutes
tf_m30 = PERIOD_M30, // 30 minutes
tf_h1 = PERIOD_H1, // 1 hour
tf_h4 = PERIOD_H4, // 4 hours
tf_d1 = PERIOD_D1, // Daily
tf_w1 = PERIOD_W1, // Weekly
tf_mn1 = PERIOD_MN1, // Monthly
tf_n1 = -1, // First higher time frame
tf_n2 = -2, // Second higher time frame
tf_n3 = -3 // Third higher time frame
};
enum enMaTypes
{
ma_sma, // Simple moving average
ma_ema, // Exponential moving average
ma_smma, // Smoothed moving average
ma_lwma, // Linear weighted moving average
ma_linr // Least squares moving average
};
enum enPrices
{
pr_close, // Close
pr_open, // Open
pr_high, // High
pr_low, // Low
pr_median, // Median
pr_typical, // Typical
pr_weighted, // Weighted
pr_average, // Average (high+low+open+close)/4
pr_medianb, // Average median body (open+close)/2
pr_tbiased, // Trend biased price
pr_tbiased2, // Trend biased (extreme) price
pr_haclose, // Heiken ashi close
pr_haopen , // Heiken ashi open
pr_hahigh, // Heiken ashi high
pr_halow, // Heiken ashi low
pr_hamedian, // Heiken ashi median
pr_hatypical, // Heiken ashi typical
pr_haweighted, // Heiken ashi weighted
pr_haaverage, // Heiken ashi average
pr_hamedianb, // Heiken ashi median body
pr_hatbiased, // Heiken ashi trend biased price
pr_hatbiased2, // Heiken ashi trend biased (extreme) price
pr_habclose, // Heiken ashi (better formula) close
pr_habopen , // Heiken ashi (better formula) open
pr_habhigh, // Heiken ashi (better formula) high
pr_hablow, // Heiken ashi (better formula) low
pr_habmedian, // Heiken ashi (better formula) median
pr_habtypical, // Heiken ashi (better formula) typical
pr_habweighted,// Heiken ashi (better formula) weighted
pr_habaverage, // Heiken ashi (better formula) average
pr_habmedianb, // Heiken ashi (better formula) median body
pr_habtbiased, // Heiken ashi (better formula) trend biased price
pr_habtbiased2 // Heiken ashi (better formula) trend biased (extreme) price
};
enum enColorOn
{
cc_onSlope, // Change color on slope change
cc_onPrice // Change color on Ma cross candle
};
extern enTimeFrames TimeFrame = tf_cu; // Time frame
extern enColorOn colorOn = cc_onPrice; // Color change on::
input int MAPeriod = 30; // Ma period
input enMaTypes MAType = ma_sma; // Ma type
input enPrices MAPrice = pr_close; // Ma price to use
input bool alertsOn = false; // Alerts on true/false?
input bool alertsOnCurrent = false; // Alerts on (still opened) bar true/false?
input bool alertsMessage = false; // Alerts message true/false?
input bool alertsSound = true; // Alerts sound true/false?
input bool alertsNotify = false; // Alerts push notification true/false?
input bool alertsEmail = false; // Alerts email true/false?
input string soundFile = "alert2.wav"; // Sound file
extern bool ShowArrows = false; // Arrows visible?
input bool ArrowOnFirst = true; // Arrow on first bars true/false
input int UpArrowSize = 1; // Up Arrow size
input int DnArrowSize = 1; // Down Arrow size
input int UpArrowCode = 233; // Up Arrow code
input int DnArrowCode = 234; // Down arrow code
input double UpArrowGap = 0.5; // Up Arrow gap
input double DnArrowGap = 0.5; // Dn Arrow gap
input color UpArrowColor = clrLimeGreen; // Up Arrow Color
input color DnArrowColor = clrOrange; // Down Arrow Color
input bool verticalLinesVisible = false; // Show vertical lines true/false?
input bool linesOnNewest = false; // Vertical lines drawn on newest bar of higher time frame bar true/false?
input string verticalLinesID = "ma Lines"; // Lines ID
input color verticalLinesUpColor = clrDeepSkyBlue; // Lines up color
input color verticalLinesDnColor = clrPaleVioletRed; // Lines down color
input ENUM_LINE_STYLE verticalLinesStyle = STYLE_DOT; // Lines style
input int verticalLinesWidth = 0; // lines width
input bool Interpolate = true; // Interpolate in multi time frame mode on/off?
double ma[],maUa[],maUb[],valc[],upa[],dna[],count[];
string indicatorFileName;
#define _mtfCall(_buff,_ind) iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,colorOn,MAPeriod,MAType,MAPrice,alertsOn,alertsOnCurrent,alertsMessage,alertsSound,alertsEmail,alertsNotify,soundFile,ShowArrows,ArrowOnFirst,UpArrowSize,DnArrowSize,UpArrowCode,DnArrowCode,UpArrowGap,DnArrowGap,UpArrowColor,DnArrowColor,verticalLinesVisible,linesOnNewest,verticalLinesID,verticalLinesUpColor,verticalLinesDnColor,verticalLinesStyle,verticalLinesWidth,_buff,_ind)
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
string tlookFor = verticalLinesID+":";
int tlookForLength = StringLen(tlookFor);
for (int i=ObjectsTotal()-1; i>=0; i--)
{
string tobjectName = ObjectName(i);
if (StringSubstr(tobjectName,0,tlookForLength) == tlookFor) ObjectDelete(tobjectName);
}
}
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[])
{
// код доступен только после оплаты
}
int i,limit=fmin(rates_total-prev_calculated+1,rates_total-1); count[0] = limit;
if (TimeFrame!=_Period)
{
limit = (int)fmax(limit,fmin(rates_total-1,_mtfCall(6,0)*TimeFrame/_Period));
if (valc[limit]== -1) CleanPoint(limit,maUa,maUb);
for (i=limit;i>=0 && !_StopFlag; i--)
{
int y = iBarShift(NULL,TimeFrame,time[i]);
int x = y;
if (ArrowOnFirst)
{ if (i<Bars-1) x = iBarShift(NULL,TimeFrame,Time[i+1]); }
else { if (i>0) x = iBarShift(NULL,TimeFrame,Time[i-1]); else x = -1; }
ma[i] = _mtfCall(0,y);
maUa[i] = maUb[i] = EMPTY_VALUE;
valc[i] = _mtfCall(5,y);
upa[i] = dna[i] = EMPTY_VALUE;
if (x!=y)
{
upa[i] = _mtfCall(3,y);
dna[i] = _mtfCall(4,y);
}
if (!Interpolate || (i>0 && y==iBarShift(NULL,TimeFrame,time[i-1]))) continue;
#define _interpolate(buff) buff[i+k] = buff[i]+(buff[i+n]-buff[i])*k/n
int n,k; datetime dtime = iTime(NULL,TimeFrame,y);
for(n = 1; (i+n)<rates_total && time[i+n] >= dtime; n++) continue;
for(k = 1; k<n && (i+n)<rates_total && (i+k)<rates_total; k++)
{
_interpolate(ma);
}
}
for(i=limit;i>=0; i--)if (valc[i] == -1) PlotPoint(i,maUa,maUb,ma);
return(rates_total);
}
if (valc[limit]== -1) CleanPoint(limit,maUa,maUb);
for(i=limit;i>=0; i--)
{
ma[i] = iCustomMa(MAType,getPrice(MAPrice,open,close,high,low,i,rates_total), MAPeriod,i,rates_total);
switch(colorOn)
{
case cc_onSlope: valc[i] = (i<rates_total-1) ? (ma[i]<close[i]) ? 1 : (ma[i]>close[i]) ? -1 : valc[i+1] : 0; break;
case cc_onPrice: valc[i] = (i<rates_total-1) ? (ma[i]< close[i]) ? 1 : (ma[i]> close[i]) ? -1 : valc[i+1] : 0; break;
}
maUa[i] = maUb[i] = EMPTY_VALUE; if (valc[i] == -1) PlotPoint(i,maUa,maUb,ma);
upa[i] = dna[i] = EMPTY_VALUE;
if (i<rates_total-1 && valc[i]!=valc[i+1])
{
if (valc [i] == 1) upa[i] = fmin(ma[i],low[i] )-iATR(NULL,0,15,i)*UpArrowGap;
if (valc [i] == -1) dПоказано первые 50% кода (символов: 14379)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.