← К каталогу
Исходный код · ID 3873

stochastic_divergencemtf.mq5

Похожие материалы по тегам

! macd+.mq5MQL5 / MetaTrader 5 · 1 общих тегов!!!macd_adx.mq4MQL4 / MetaTrader 4 · 1 общих теговxauusd_gold_perfect.mq4MQL4 / MetaTrader 4 · 1 общих теговtm sniper pro.pineTradingView · 1 общих теговsource code of grid with 100 pips stop loss.mq4MQL4 / MetaTrader 4 · 1 общих теговsniper pro.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Это пользовательский технический индикатор для 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 и перейдите к оплате.

Стоимость полного кода
739,50₽ ≈ $9.04