Voy a escribir el indicador de forma gratuita - página 104

 
ALEXEY NIKOLAEV:

¡Mis saludos a la estimada comunidad!

Puede alguien escribir un indicador que muestre en el gráfico la información sobre el número de barra actual en un determinado período, que se especifica en la configuración. Por ejemplo, el indicador se ejecuta en días, el período de información es un mes especificado en la configuración. Esto significa que el indicador muestra en el gráfico el número que, según la cuenta, es la barra cero desde el inicio del mes natural. En MT4, por favor)

Felices fiestas a todos)

Feliz caza)

Sólo en el día:

función

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

Sólo en el día:

función

Gracias, por supuesto.

Pero el intradía no funcionará. No, no es así.

 
Buen día para ayudar. Tengo un indicador Awesome Oscillator que muestra la diferencia entre medias móviles simples con períodos de 5 y 34 precios medios. ¿Puede alguien escribir un nuevo indicador o sugerir cómo cambiar el AO para que el indicador muestre la dinámica en forma de histograma utilizando la siguiente fórmula: ¿[media móvil simple de los precios medios con el período 3 por la media móvil simple del volumen de ticks con el período 3] menos [media móvil simple de los precios medios con el período 21 por la media móvil simple del volumen de ticks con el período 21]?
 
volizordlo:
Hola, ayúdenme con esto. Existe un indicador Awesome Oscillator que muestra la diferencia entre las medias móviles simples con períodos de 5 y 34 precios medios. ¿Puede alguien escribir un nuevo indicador o sugerir cómo cambiar el AO para mostrar la dinámica del indicador como un histograma de acuerdo con la siguiente fórmula: [media móvil simple de los precios medios con el período 3 multiplicado por

una media móvil simple de volumen de ticks con un periodo de 3

] menos [media móvil simple de los precios medios con período 21 multiplicada por una media móvil simple del volumen de ticks con período 21]?

¿hay un promedio de volumen de garrapatas?

 
Iurii Tokman:

¿se refiere a la media del volumen de ticks?

 
volizordlo:

Sí.

ok, voy a tratar de multiplicar
me pregunto cuál es el resultado
pero ¿tiene una imagen de lo que debería ser el resultado?

 
Iurii Tokman:

ok, voy a tratar de multiplicar
me pregunto cuál es el resultado
pero ¿tiene una imagen de lo que debería ser el resultado?

Debería parecer lo mismo ao o macd. pero es solo una idea. ¡gracias!
 
volizordlo:
Se supone que tiene que parecer el mismo ao o macd. pero es solo una idea. ¡gracias!

ok

 
volizordlo:
Se supone que tiene que parecer el mismo ao o macd. pero es solo una idea. ¡gracias!
//+------------------------------------------------------------------+
//|                                                      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:
Sí, ¡muchas gracias!