stochastic_divergencemtf.mq5
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «stochastic_divergencemtf.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Это пользовательский технический индикатор для MetaTrader 4, построенный на основе стохастика и предназначенный для выявления расхождений между направлением цены и индикатором. Индикатор определяет классические и скрытые бычьи и медвежьи дивергенции, сравнивая значения стохастика с экстремумами цены на выбранном таймфрейме. Результаты отображаются в отдельном окне с четырьмя буферами данных, а также визуально подчёркиваются линиями тренда на графике цены и в окне индикатора. При активации может отправлять уведомления о выявленных дивергенциях.
Настройки программы
| Настройка | Описание |
|---|---|
| separator1 | Разделитель настроек стохастика — Текстовый разделитель в диалоге параметров индикатора |
| KPeriod | Период K стохастика — Основной период стохастика, используемый для расчёта |
| DPeriod | Период D стохастика — Период сглаживания сигнальной линии стохастика |
| Slowing | Замедление стохастика — Коэффициент замедления стохастика |
| separator2 | Разделитель настроек индикатора — Текстовый разделитель в диалоге параметров индикатора |
| drawIndicatorTrendLines | Рисовать линии тренда индикатора — Включает или отключает отрисовку линий тренда в окне индикатора |
| drawPriceTrendLines | Рисовать линии тренда цены — Включает или отключает отрисовку линий тренда на графике цены |
| displayAlert | Отображать оповещения — Включает или отключает отправку pop-up оповещений при обнаружении дивергенции |
| ColorBearishTrendLines | Цвет медвежьих линий тренда — Цвет линий тренда для медвежьих дивергенций |
| ColorBullishTrendLines | Цвет бычьих линий тренда — Цвет линий тренда для бычьих дивергенций |
| separator3 | Разделитель настроек таймфрейма — Текстовый разделитель в диалоге параметров индикатора |
| TimeFrame | Таймфрейм анализа — Таймфрейм, на котором выполняется расчёт индикатора (1=M1, 5=M5, 15=M15, 30=M30, 60=H1, 240=H4, 1440=D1, 10080=W1, 43200=MN1) |
Поиск по коду файла
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Blue
#property indicator_color4 Red
#property indicator_level1 80
#property indicator_level2 20
#define arrowsDisplacement 0.0001
extern string separator1 = "*** Stochastic Settings ***";
/*extern int fastEMA = 12;
extern int slowEMA = 26;
extern int signalSMA = 9;*/
extern int KPeriod=8;
extern int DPeriod=3;
extern int Slowing=3;
extern string separator2 = "*** Indicator Settings ***";
extern bool drawIndicatorTrendLines = true;
extern bool drawPriceTrendLines = true;
extern bool displayAlert = false;
extern color ColorBearishTrendLines=SaddleBrown;
extern color ColorBullishTrendLines=MediumSpringGreen;
extern string separator3 = "*** Timeframe Setting (H1=60,H4=240,1440=D1)***";
extern int TimeFrame=15;
double bullishDivergence[];
double bearishDivergence[];
double macd[];
double signal[];
static datetime lastAlertTime;
static string indicatorName;
string GetTimeFrameStr() {
switch(TimeFrame)
{
case 1 : string TimeFrameStr2="M1"; break;
case 5 : TimeFrameStr2="M5"; break;
case 15 : TimeFrameStr2="M15"; break;
case 30 : TimeFrameStr2="M30"; break;
case 60 : TimeFrameStr2="H1"; break;
case 240 : TimeFrameStr2="H4"; break;
case 1440 : TimeFrameStr2="D1"; break;
case 10080 : TimeFrameStr2="W1"; break;
case 43200 : TimeFrameStr2="MN1"; break;
}
return (TimeFrameStr2);
}
int init()
{
// код доступен только после оплаты
}
int deinit()
{
for(int i = ObjectsTotal() - 1; i >= 0; i--)
{
string label = ObjectName(i);
if(StringSubstr(label, 0, 25) != "Stochastic_DivergenceLine")
continue;
ObjectDelete(label);
}
return(0);
}
int start()
{
// код доступен только после оплаты
}
void CalculateIndicator(int countedBars)
{
for(int i = Bars - countedBars; i >= 0; i--)
{
CalculateMACD(i);
CatchBullishDivergence(i + 2);
CatchBearishDivergence(i + 2);
}
}
void CalculateMACD(int i)
{
macd[i] = iStochastic(NULL, TimeFrame, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, i);
/*iMACD(NULL, 0, fastEMA, slowEMA, signalSMA,
PRICE_CLOSE, MODE_MAIN, i);*/
signal[i] = iStochastic(NULL, TimeFrame, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_SIGNAL, i);
/*iMACD(NULL, 0, fastEMA, slowEMA, signalSMA,
PRICE_CLOSE, MODE_SIGNAL, i); */
}
void CatchBullishDivergence(int shift)
{
if(IsIndicatorTrough(shift) == false)
return;
int currentTrough = shift;
int lastTrough = GetIndicatorLastTrough(shift);
if(macd[currentTrough] >= macd[lastTrough] &&
Low[currentTrough] <= Low[lastTrough])
{
bullishDivergence[currentTrough] = macd[currentTrough] -
arrowsDisplacement;
if(drawPriceTrendLines == true)
DrawPriceTrendLine(Time[currentTrough], Time[lastTrough],
Low[currentTrough],
Low[lastTrough], ColorBullishTrendLines, STYLE_SOLID);
if(drawIndicatorTrendLines == true)
DrawIndicatorTrendLine(Time[currentTrough],
Time[lastTrough],
macd[currentTrough],
macd[lastTrough],
ColorBullishTrendLines, STYLE_SOLID);
if(displayAlert == true)
DisplayAlert("Classical bullish divergence on: ",
currentTrough);
/* if(alert_ON == true)
{
Alert ("Classical bullish divergence on ",Symbol(),"-",TimeFrame);
PlaySound("timeout.wav");
turn_alarm=false;
}*/
}
if(macd[currentTrough] <= macd[lastTrough] &&
Low[currentTrough] >= Low[lastTrough])
{
bullishDivergence[currentTrough] = macd[currentTrough] -
arrowsDisplacement;
if(drawPriceTrendLines == true)
DrawPriceTrendLine(Time[currentTrough], Time[lastTrough],
Low[currentTrough],
Low[lastTrough], ColorBullishTrendLines, STYLE_DOT);
if(drawIndicatorTrendLines == true)
DrawIndicatorTrendLine(Time[currentTrough],
Time[lastTrough],
macd[currentTrough],
Показано первые 50% кода (символов: 7395)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.