Напишу индикатор бесплатно - страница 104

 
ALEXEY NIKOLAEV:

Моё почтение уважаемому сообществу!

Кто нибудь сможет написать индикатор, который будет выводить на чарт информацию о порядковом номере текущего бара, в определённом, указанном в настройках периоде. Например, индикатор запущен на днёвках, в настройках выбран отчётный период месяц. Значит, индюк выводит на график число, каким по счёту является нулевой бар от начала календарного месяца. На МТ 4, пожалуйста)

С Наступающем всех)

Удачной охоты)

Только внутри дня:

функция

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 26.02.2008                                                     |
//|  Описание : Возвращает расчётный номер бара от начала суток.               |
//|           : Нумерация баров начинается с 1 (единица).                      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    tf - таймфрейм                       (0 - текущий таймфрейм)            |
//|    dt - дата и время открытия бара      (0 - текущее время)                |
//+----------------------------------------------------------------------------+
int iBarOfDayCalc(int tf=0, datetime dt=0) {
  if (tf<=0) tf=Period();
  if (dt<=0) dt=TimeCurrent();
  if (tf>PERIOD_D1) {
    Print("iBarOfDayCalc(): Таймфрейм должен быть меньше или равен D1");
    return(0);
  }
  double ms=MathMod(dt/60, 1440);      // количество минут от начала суток
  int    bd=MathFloor(ms/tf)+1;        // номер бара от начала суток

  return(bd);
}
 
Alekseu Fedotov:

Только внутри дня:

функция

Спасибо, конечно

Но внутри дня не пойдёт. Нет так нет

 
Доброго времени суток! Помогите. Есть индикатор Awesome Oscillator, который показывает разность простых скользящих средних с периодами 5 и 34 медианных цен. Может ли кто написать новый индикатор или подсказать, как изменить AO, чтобы индикатор в виде гистограммы показывал динамику по следующей формуле: [простая скользящая средняя медианных цен с периодом 3 умножить на простую скользящую среднюю тикового объема с периодом 3] минус [простая скользящая средняя медианных цен с периодом 21 умножить на простую скользящую среднюю тикового объема с периодом 21]?
 
volizordlo:
Доброго времени суток! Помогите. Есть индикатор Awesome Oscillator, который показывает разность простых скользящих средних с периодами 5 и 34 медианных цен. Может ли кто написать новый индикатор или подсказать, как изменить AO, чтобы индикатор в виде гистограммы показывал динамику по следующей формуле: [простая скользящая средняя медианных цен с периодом 3 умножить на

простую скользящую среднюю тикового объема с периодом 3

] минус [простая скользящая средняя медианных цен с периодом 21 умножить на простую скользящую среднюю тикового объема с периодом 21]?

имеется в веду усреднение тикового объема ?

 
Iurii Tokman:

имеется в веду усреднение тикового объема?

да

 
volizordlo:

да

ок, попробую перемножить
интересно что получиться
а картинки случайно нет, что в итоге должно быть ?

 
Iurii Tokman:

ок, попробую перемножить
интересно что получиться
а картинки случайно нет, что в итоге должно быть ?

по идее внешне должно выглядеть как тот же ao или macd. но это по идее. спасибо!
 
volizordlo:
по идее внешне должно выглядеть как тот же ao или macd. но это по идее. спасибо!

ок

 
volizordlo:
по идее внешне должно выглядеть как тот же ao или macd. но это по идее. спасибо!
//+------------------------------------------------------------------+
//|                                                      Awesome.mq4 |
//|                                               Yuriy Tokman (YTG) |
//|                       https://www.mql5.com/ru/users/satop/seller |
//+------------------------------------------------------------------+
#property copyright "Yuriy Tokman (YTG)"
#property link      "https://www.mql5.com/ru/users/satop/seller"
#property version   "1.00"
#property description "Awesome Oscillator"
#property strict

//--- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 4
#property  indicator_color1  Black
#property  indicator_color2  Black
#property  indicator_color3  Green
#property  indicator_color4  Red
//--- buffers
double B1[];
double     ExtAOBuffer[];
double     ExtUpBuffer[];
double     ExtDnBuffer[];
//---
#define PERIOD_FAST  3
#define PERIOD_SLOW 21
//--- bars minimum for calculation
#define DATA_LIMIT  34
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit(void)
  {
//--- drawing settings
   SetIndexStyle(0, DRAW_NONE);
   SetIndexStyle(1, DRAW_NONE);
   SetIndexStyle(2, DRAW_HISTOGRAM);
   SetIndexStyle(3, DRAW_HISTOGRAM);
   IndicatorDigits(Digits + 1);
   SetIndexDrawBegin(0, DATA_LIMIT);
   SetIndexDrawBegin(1, DATA_LIMIT);
   SetIndexDrawBegin(2, DATA_LIMIT);
   SetIndexDrawBegin(3, DATA_LIMIT);
//--- 3 indicator buffers mapping
   SetIndexBuffer(0, B1);
   SetIndexBuffer(1, ExtAOBuffer);
   SetIndexBuffer(2, ExtUpBuffer);
   SetIndexBuffer(3, ExtDnBuffer);
//--- name for DataWindow and indicator subwindow label
   IndicatorShortName("AO");
   SetIndexLabel(2, NULL);
   SetIndexLabel(3, NULL);
  }
//+------------------------------------------------------------------+
//| Awesome Oscillator                                               |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int    i, limit = rates_total - prev_calculated;
   double prev = 0.0, current;
//--- check for rates total
   if(rates_total <= DATA_LIMIT)
      return(0);
//--- last counted bar will be recounted
   if(prev_calculated > 0)
     {
      limit++;
      prev = ExtAOBuffer[limit];
     }
   /*
   Доброго времени суток! Помогите. Есть индикатор Awesome Oscillator,
   который показывает разность простых скользящих средних с периодами 5 и 34 медианных цен.
   Может ли кто написать новый индикатор или подсказать, как изменить AO,
   чтобы индикатор в виде гистограммы показывал динамику по следующей формуле:

   [простая скользящая средняя медианных цен с периодом 3
   умножить
   на простую скользящую среднюю тикового объема с периодом 3]

   минус

   [простая скользящая средняя медианных цен с периодом 21
   умножить
   на простую скользящую среднюю тикового объема с периодом 21]?
   */
   for(i = 0; i < limit; i++)
      B1[i] = (double)iVolume(Symbol(), 0, i);
   for(i = 0; i < limit; i++)
      ExtAOBuffer[i] =
         iMA(NULL, 0, PERIOD_FAST, 0, MODE_SMA, PRICE_MEDIAN, i)
         *
         iMAOnArray(B1, 0, PERIOD_FAST, 0, MODE_SMA, i)
         -
         iMA(NULL, 0, PERIOD_SLOW, 0, MODE_SMA, PRICE_MEDIAN, i)
         *
         iMAOnArray(B1, 0, PERIOD_SLOW, 0, MODE_SMA, i)
         ;
//--- dispatch values between 2 buffers
   bool up = true;
   for(i = limit - 1; i >= 0; i--)
     {
      current = ExtAOBuffer[i];
      if(current > prev)
         up = true;
      if(current < prev)
         up = false;
      if(!up)
        {
         ExtDnBuffer[i] = current;
         ExtUpBuffer[i] = 0.0;
        }
      else
        {
         ExtUpBuffer[i] = current;
         ExtDnBuffer[i] = 0.0;
        }
      prev = current;
     }
//--- done
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Iurii Tokman:
ага, большое спасибо!
Причина обращения: