lukas1 arrows & curves
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «lukas1 arrows & curves mtf.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный исходный файл представляет собой пользовательский индикатор для MetaTrader 4 (несмотря на расширение .mq5, код написан на языке MQL4: используются устаревшие функции init(), start(), IndicatorCounted(), SetIndexBuffer(), iCustom(), GlobalVariableSet() и т.д.). Индикатор отображает на графике стрелки, отмечающие смену направления движения цены, а также две дополнительные линии (High и Low), рассчитываемые по заданным параметрам. Все вычисления выполняются на выбранном таймфрейме, который задаётся строковым параметром TimeFrame. При необходимости индикатор может работать на старшем таймфрейме, получая данные через iCustom с текущего графика.
В коде предусмотрены настройки для управления уведомлениями: включение/выключение оповещений, выбор текущего или предыдущего бара для сигнала, а также способы доставки — всплывающее сообщение, звук и электронная почта. Дополнительно имеется переключатель Interpolate, который включает или отключает интерполяцию значений индикатора между барами старшего таймфрейма.
Индикатор рассчитывает границы на основе максимума и минимума за заданное число баров (параметр SSP) и процентного отступа (параметр SkyCh). При пересечении ценой этих границ формируются сигналы, которые отображаются стрелками. Также записываются глобальные переменные goBUY и goSELL, которые могут использоваться другими программами. Все параметры вынесены в extern-переменные и доступны для изменения при подключении индикатора к графику.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Таймфрейм, на котором рассчитывается индикатор. Может быть задан строкой, например "H1", или специальными значениями "calculateValue" и "returnBars". |
| ?????? ????????? ????????? ?????????? (SSP) | Период расчёта — Количество баров для расчёта максимума и минимума, используемых при построении границ. |
| ???????????????? ? ?????? ?????? (SkyCh) | Процент отступа — Процентный отступ от максимума и минимума для определения границ сигналов. |
| alertsOn | Включить уведомления — Включает или отключает все уведомления о сигналах индикатора. |
| alertsOnCurrent | Уведомлять на текущем баре — Если включено, сигнал проверяется на текущем (нулевом) баре; иначе — на предыдущем (первом) баре. |
| alertsMessage | Всплывающие сообщения — Включает вывод всплывающего сообщения при появлении сигнала. |
| alertsSound | Звуковое оповещение — Включает звуковое оповещение при появлении сигнала. |
| alertsEmail | Уведомления по email — Включает отправку уведомлений о сигналах на электронную почту. |
| Interpolate | Интерполяция — Включает или отключает интерполяцию значений индикатора между барами старшего таймфрейма. |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Green
#property indicator_color4 Green
extern string TimeFrame = "Current time frame";
extern int SSP = 6; //?????? ????????? ????????? ??????????
extern int SkyCh = 13; //???????????????? ? ?????? ??????
extern bool alertsOn = false;
extern bool alertsOnCurrent = true;
extern bool alertsMessage = true;
extern bool alertsSound = false;
extern bool alertsEmail = false;
extern bool Interpolate = true;
double val1[]; // ????? ??? ???
double val2[]; // ????? ??? ????
double Sky_BufferH[];
double Sky_BufferL[];
int timeFrame;
bool returnBars;
bool calculateValue;
string indicatorFileName;
int init()
{
// код доступен только после оплаты
}
double work[][1];
#define _uptrend 0
int start()
{
// код доступен только после оплаты
}
int i,r,counted_bars = IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
int limit=MathMin(Bars-counted_bars,Bars-1);
if (returnBars) { val1[0] = limit; return(0); }
if (calculateValue || timeFrame == Period())
{
GlobalVariableSet("goSELL", 0); // ?????? ????????????? ? ???????? goSELL=0
GlobalVariableSet("goBUY", 0); // ?????? ????????????? ? ???????? goBUY =0
if (ArrayRange(work,0)!=Bars) ArrayResize(work,Bars);
for(i=limit, r=Bars-i-1; i>=0; i--,r++)
{
double high = High[ArrayMaximum(High,SSP,i)];
double low = Low[ ArrayMinimum(Low ,SSP,i)];
double smax = high - (high - low)*SkyCh / 100;
double smin = low + (high - low)*SkyCh / 100;
val1[i] = EMPTY_VALUE;
val2[i] = EMPTY_VALUE;
work[r][_uptrend] = work[r-1][_uptrend];
if(Close[i] < smin && i!=0 ) work[r][_uptrend] = false;
if(Close[i] > smax && i!=0 ) work[r][_uptrend] = true;
if(work[r][_uptrend] != work[r-1][_uptrend] && work[r][_uptrend] == false)
{
val2[i] = high; if(i == 0) GlobalVariableSet("goBUY",1);
}
if(work[r][_uptrend] != work[r-1][_uptrend] && work[r][_uptrend] == true)
{
val1[i] = low; if(i == 0) GlobalVariableSet("goSELL",1);
}
Sky_BufferH[i]=high - (high - low)*SkyCh / 100;
Sky_BufferL[i]=low + (high - low)*SkyCh / 100;
}
manageAlerts();
return(0);
}
limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));
for (i=limit; i>=0; i--)
Показано первые 50% кода (символов: 5022)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.