ttm_scalper.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ttm_scalper.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой индикатор для MetaTrader 5, который отображает на графике точки разворота ценовых тенденций в виде двухгистограммных буферов красного и зелёного цвета. Индикатор отслеживает направление тренда и определяет локальные максимумы и минимумы с помощью скользящих средних.
В основе расчётов лежит функция поиска опорных точек (pivot), которая использует простые скользящие средние (SMA) для сравнения кандидатных ценовых уровней с соседними барами. Если кандидатная цена превосходит или уступает окружающим значениям в заданном диапазоне силы, точка фиксируется как разворот.
Индикатор не имеет настраиваемых входных параметров и не содержит внешних API-функций. Все вычисления выполняются автоматически при каждом обновлении графика, а результаты отрисовываются в виде гистограмм на окне графика.
Переключение тренда происходит при обнаружении подтверждённого разворота: при восходящем тренде ищется swing high, при нисходящем — swing low. При срабатывании условия соответствующие буферы обновляются, и направление тренда меняется.
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Lime
#property indicator_width1 4
#property indicator_width2 4
double upBuffer[];
double dnBuffer[];
double trendBuffer[];
int init()
{
// код доступен только после оплаты
}
int deinit() { return(0); }
#define trendUp 1
#define trendDown -1
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
int i,k,limit;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit = MathMin(Bars-counted_bars,Bars-1);
for (k=3,i=limit;i<(Bars-1) && k>0;i++) if (dnBuffer[i]!=EMPTY_VALUE) k--;
limit = MathMax(limit,MathMin(Bars-1,i));
int swingBar;
for(i=limit; i>=0; i--)
{
upBuffer[i] = EMPTY_VALUE;
dnBuffer[i] = EMPTY_VALUE;
if (i==Bars-1)
trendBuffer[i] = 1;
else trendBuffer[i] = trendBuffer[i+1];
if (trendBuffer[i] == trendUp)
{
for (k=1; (i+k)<Bars; k++)
if (upBuffer[i+k]!=EMPTY_VALUE && trendBuffer[i+k]==trendDown) break;
swingBar = swingHighBar(i,1,PRICE_HIGH,2,k);
if (swingBar>-1)
if (isLess(Close[i],Low[swingBar-1]) && isLess(High[iHighest(NULL,0,MODE_HIGH,swingBar-i,i)],High[swingBar]))
{
upBuffer[swingBar] = High[swingBar];
dnBuffer[swingBar] = Low[swingBar];
trendBuffer[i] = trendDown;
continue;
}
}
if (trendBuffer[i] == trendDown)
{
for (k=1;(i+k)<Bars;k++)
if (dnBuffer[i+k]!=EMPTY_VALUE && trendBuffer[i+k]==trendUp) break;
swingBar = swingLowBar(i,1,PRICE_LOW,2,k);
if (swingBar>-1)
if (isGreater(Close[i],High[swingBar-1]) && isGreater(Low[iLowest(NULL,0,MODE_LOW,swingBar-i,i)],Low[swingBar]))
{
dnBuffer[swingBar] = High[swingBar];
upBuffer[swingBar] = Low[swingBar];
trendBuffer[i] = trendUp;
}
}Показано первые 50% кода (символов: 3338)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.