Scriverò l'indicatore gratuitamente - pagina 104

 
ALEXEY NIKOLAEV:

I miei saluti alla stimata comunità!

Qualcuno può scrivere un indicatore che visualizzi sul grafico le informazioni sul numero della barra corrente in un certo periodo, che è specificato nelle impostazioni. Per esempio, l'indicatore viene eseguito su giorni, il periodo di segnalazione è un mese specificato nelle impostazioni. Questo significa che l'indicatore visualizza sul grafico il numero che, secondo il conto, è la barra zero dall'inizio del mese solare. Su MT4, per favore)

Buone feste a tutti)

Buona caccia)

Solo intraday:

funzione

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

Solo intraday:

funzione

Grazie, naturalmente.

Ma l'intraday non funziona. No, non è così.

 
Un buon giorno per aiutare. Ho un indicatore Awesome Oscillator che mostra la differenza tra le medie mobili semplici con periodi di 5 e 34 prezzi mediani. Qualcuno può scrivere un nuovo indicatore o suggerire come cambiare l'AO in modo che l'indicatore sotto forma di istogramma mostri la dinamica secondo la seguente formula: [media mobile semplice dei prezzi mediani con periodo 3 volte la media mobile semplice del volume di tick con periodo 3] meno [media mobile semplice dei prezzi mediani con periodo 21 volte la media mobile semplice del volume di tick con periodo 21]?
 
volizordlo:
Ciao, aiutami qui. C'è un indicatore Awesome Oscillator che mostra la differenza tra le medie mobili semplici con periodi di 5 e 34 prezzi mediani. Qualcuno può scrivere un nuovo indicatore o suggerire come cambiare l'AO per visualizzare la dinamica dell'indicatore come un istogramma secondo la seguente formula: [media mobile semplice dei prezzi mediani con periodo 3 moltiplicato per

una media mobile di volume a tick semplice con un periodo di 3

] meno [media mobile semplice dei prezzi mediani con periodo 21 moltiplicata per una media mobile semplice del volume di tick con periodo 21]?

c'è una media del volume dei tick?

 
Iurii Tokman:

intendi la media del volume dei tick?

 
volizordlo:

Sì...

Ok, proverò a moltiplicare
mi chiedo quale sia il risultato
ma hai un'immagine di quello che dovrebbe essere il risultato?

 
Iurii Tokman:

ok, proverò a moltiplicare
mi chiedo quale sia il risultato
ma hai un'immagine di quello che dovrebbe essere il risultato?

Dovrebbe sembrare lo stesso ao o macd. ma questa è solo un'idea. grazie!
 
volizordlo:
Dovrebbe sembrare lo stesso ao o macd. ma è solo un'idea. grazie!

ok

 
volizordlo:
Dovrebbe sembrare lo stesso ao o macd. ma è solo un'idea. grazie!
//+------------------------------------------------------------------+
//|                                                      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ì, grazie mille!
Motivazione: