Vou escrever o indicador gratuitamente - página 104

 
ALEXEY NIKOLAEV:

Meus cumprimentos à estimada comunidade!

Alguém pode escrever um indicador que exibe no gráfico as informações sobre o número de barras atual em um determinado período, que é especificado nas configurações. Por exemplo, o indicador é executado em dias, o período de relatório é de um mês especificado nas configurações. Isto significa que o indicador exibe no gráfico o número que, de acordo com a conta, é a barra de zero desde o início do mês civil. No MT4, por favor)

Boas festas para todos)

Feliz caçada)

Somente Intraday:

função

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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:

Somente Intraday:

função

Obrigado, é claro.

Mas intraday não vai funcionar. Não, não tem.

 
Bom dia para ajudar. Tenho um indicador do oscilador Awesome Oscillator que mostra a diferença entre médias móveis simples com períodos de 5 e 34 preços medianos. Alguém pode escrever um novo indicador ou sugerir como mudar o AO para que o indicador mostre a dinâmica na forma de um histograma usando a seguinte fórmula: [média móvel simples dos preços medianos com período 3 vezes a média móvel simples do volume do carrapato com período 3] menos [média móvel simples dos preços medianos com período 21 vezes a média móvel simples do volume do carrapato com período 21]?
 
volizordlo:
Olá, me ajude aqui. Há um indicador O Oscilador Incrível que mostra a diferença entre médias móveis simples com períodos de 5 e 34 preços medianos. Alguém pode escrever um novo indicador ou sugerir como mudar o AO para exibir a dinâmica do indicador como um histograma, de acordo com a seguinte fórmula: [média móvel simples dos preços medianos com período 3 multiplicado por

um simples tick volume médio móvel com um período de 3

] menos [média móvel simples de preços medianos com período 21 multiplicado por uma média móvel simples de volume de carrapato com período 21]?

há uma média do volume do carrapato?

 
Iurii Tokman:

você quer dizer a média do volume do carrapato?

sim

 
volizordlo:

Sim.

ok, vou tentar multiplicar
eu me pergunto qual será o resultado
mas você tem uma foto de qual deve ser o resultado?

 
Iurii Tokman:

ok, vou tentar multiplicar
eu me pergunto qual será o resultado
mas você tem uma foto de qual deve ser o resultado?

Deve parecer o mesmo ao ou macd. mas isso é apenas uma idéia. obrigado!
 
volizordlo:
É para parecer o mesmo ao ou macd. mas isso é apenas uma idéia. obrigado!

ok

 
volizordlo:
É para parecer o mesmo ao ou macd. mas isso é apenas uma idéia. obrigado!
//+------------------------------------------------------------------+
//|                                                      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:
Sim, muito obrigado!
Razão: