pivot_alllevels.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «pivot_alllevels.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Этот файл является пользовательским индикатором для MetaTrader 5, написанным на языке MQL5. Индикатор рассчитывает и отображает на графике ценовые уровни, связанные с точкой разворота (Pivot Point), а также уровни поддержки и сопротивления. В коде используются пять буферов индикатора, каждый из которых соответствует определённому уровню: Pivot Point, два уровня сопротивления и два уровня поддержки. Отображение уровней выполняется в виде стрелок на графике.
Индикатор работает на таймфреймах не выше H4: при более старших периодах расчёт прекращается. Для каждого нового дня определяются максимум и минимум предыдущего торгового дня, после чего вычисляется значение Pivot Point по одной из двух формул, выбираемых входным параметром Formula. Уровни сопротивления и поддержки рассчитываются на основе полученного значения Pivot Point и диапазона предыдущего дня.
Все вычисления производятся в основном цикле по барам, начиная с последнего пересчитанного. Индикатор не использует торговые функции и не предназначен для автоматического совершения сделок. Название продукта в исходном коде явно не подтверждено, поэтому в ответе оно не указано.
Настройки программы
| Настройка | Описание |
|---|---|
| Formula | Выбор формулы для расчёта точки разворота (Pivot Point). При значении 0 используется классическая формула (максимум + минимум + цена закрытия) / 3, при любом другом значении — альтернативная формула (максимум + минимум + 2 * цена закрытия) / 4. Влияет на все рассчитываемые уровни поддержки и сопроти |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 LightBlue
#property indicator_color2 Blue
#property indicator_color3 DarkGreen
#property indicator_color4 Red
#property indicator_color5 Magenta
extern int Formula=0;
int i=1, shift;
double FP=0.0;
double FH=0.0, FL=0.0;
bool result;
double ResBuffer2[];
double ResBuffer[];
double ExtMapBuffer1[];
double SupBuffer[];
double SupBuffer2[];
bool isNewDay(int _shift)
{
result=false;
if ( (TimeHour(Time[_shift])==0) && (TimeMinute(Time[_shift])==0) ) result=true;
return(result);
}
void GetRSofDay(int _shift)
{
int prevDay=TimeDay(Time[_shift+1]);
i=1;
while (TimeDay(Time[_shift+i])==prevDay) i++;
i--;
FH=High[Highest(NULL,0,MODE_HIGH,i,_shift+1)];
FL=Low[Lowest(NULL,0,MODE_LOW,i,_shift+1)];
if (Formula==0) FP=NormalizeDouble((FH+FL+Close[_shift+1])/3.0,Digits); else FP=NormalizeDouble((FH+FL+2*Close[_shift+1])/4.0,Digits);
ExtMapBuffer1[_shift]=FP;
ResBuffer[_shift]=NormalizeDouble(FP+(FP-FL),Digits);
SupBuffer[_shift]=NormalizeDouble(FP-(FH-FP),Digits);
ResBuffer2[_shift]=NormalizeDouble(FP+(FH-FL),Digits);
SupBuffer2[_shift]=NormalizeDouble(FP-(FH-FL),Digits);
}
void CopyLevelsDay(int _shift)
{
ExtMapBuffer1[_shift]=ExtMapBuffer1[_shift+1];
ResBuffer[_shift]=ResBuffer[_shift+1];
SupBuffer[_shift]=SupBuffer[_shift+1];
ResBuffer2[_shift]=ResBuffer2[_shift+1];
SupBuffer2[_shift]=SupBuffer2[_shift+1];
}
int init()
{
// код доступен только после оплаты
}
if (Formula!=0)Formula=1;
string label1=Показано первые 50% кода (символов: 2635)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.