pinbar_1440_mtf@fxsignalspot.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «pinbar_1440_mtf@fxsignalspot.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор для MetaTrader 4, определяющий точки разворота цены (свинг-хаи и свинг-лоу) и отображающий их в виде гистограмм на графике. Поддерживает работу как на текущем таймфрейме, так и на более высоком через внутренний вызов самого себя средствами iCustom. Имеет режим отображения промежуточных свингов и систему оповещений через несколько каналов.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Таймфрейм для расчёта свинг-точек; значение -99 активирует режим возврата номера бара |
| showSubSwings | Показать промежуточные свинги — Включает или выключает отображение дополнительных промежуточных точек разворота |
| alertsOn | Оповещения включены — Общий переключатель системы уведомлений |
| alertsMessage | Сообщение — Отправляет popup-оповещение при обнаружении свинга |
| alertsSound | Звук — Воспроизводит звуковой сигнал при срабатывании оповещения |
| alertsEmail | Email — Отправляет email-уведомление при обнаружении свинга |
| alertsNotification | Push-уведомление — Отправляет push-уведомление на мобильное устройство при обнаружении свинга |
Поиск по коду файла
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Magenta
#property indicator_color2 Blue
#property indicator_color3 Red
#property indicator_color4 Blue
#property indicator_width1 5
#property indicator_width2 5
#property indicator_style3 STYLE_DOT
#property indicator_style4 STYLE_DOT
extern ENUM_TIMEFRAMES TimeFrame = 1440;
extern bool showSubSwings = false;
extern bool alertsOn = true;
extern bool alertsMessage = true;
extern bool alertsSound = true;
extern bool alertsEmail = false;
extern bool alertsNotification = true;
double upBuffer[];
double dnBuffer[];
double upsBuffer[];
double dnsBuffer[];
double trendBuffer[];
double swing[];
double subswing[];
string indicatorFileName;
bool returnBars;
int init()
{
// код доступен только после оплаты
}
int deinit() { return(0); }
#define trendUp 1
#define trendDown -1
int start()
{
// код доступен только после оплаты
}
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars-counted_bars,Bars-1);
for (int k=3,i=limit;i<(Bars-1) && k>0;i++) if (dnBuffer[i]!=EMPTY_VALUE) k--;
limit = MathMax(limit,MathMin(Bars-1,i));
if (returnBars) { upBuffer[0] = limit+1; return(0); }
if (TimeFrame == Period())
{
int swingBar;
for(i=limit; i>=0; i--)
{
upBuffer[i] = EMPTY_VALUE;
dnBuffer[i] = EMPTY_VALUE;
upsBuffer[i] = EMPTY_VALUE;
dnsBuffer[i] = EMPTY_VALUE;
if (i==Bars-1)
trendBuffer[i] = 1;
else trendBuffer[i] = trendBuffer[i+1];
swing[i] = 0;
subswing[i] = 0;
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;
swing[swingBar] = 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;
swing[swingBar] = trendUp;
}
}
if (!showSubSwings) continue;
swingBar = swingHighBar(i,1,PRICE_HIGH,2,k);
if (swingBar>-1) { upsBuffer[swingBar] = High[swingBar]; dnsBuffer[swingBar] = Low[swingBar]; subswing[swingBar] = trendDown;}
swingBar = swingLowBar(i,1,PRICE_LOW,2,k);
if (swingBar>-1) { dnsBuffer[swingBar] = High[swingBar]; upsBuffer[swingBar] = Low[swingBar]; subswing[swingBar] = trendUp; }
}
manageAlerts();
return(0);
}
limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,TimeFrame,indicatorFileName,-99,0,0)*TimeFrame/Period()));
for (i=limit; i>=0; i--)
{
int y = iBarShift(NULL,TimeFrame,Time[i]);
int x = iBarShift(NULL,TimeFrame,Time[i+1]);
if (x!=y)
{
upBuffer[i] = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,showSubSwings,alertsOn,alertsMessage,alertsSound,alertsEmail,alertsNotification,0,y);
dnBuffer[i] = iCustom(NULL,TimeFrame,indicatorFileName,PERIOD_CURRENT,showSubSwings,alertsOn,alertsMessage,alertsSound,alertsEmail,alertsNotification,1,y)Показано первые 50% кода (символов: 6861)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.