Ich werde den Indikator kostenlos schreiben - Seite 104

 
ALEXEY NIKOLAEV:

Meine Grüße an die geschätzte Gemeinschaft!

Kann jemand einen Indikator schreiben, der auf dem Diagramm die Information über die aktuelle Balkenanzahl in einer bestimmten Periode anzeigt, die in den Einstellungen angegeben ist. Der Indikator wird z. B. an Tagen ausgeführt, der Berichtszeitraum ist ein in den Einstellungen angegebener Monat. Das bedeutet, dass der Indikator auf dem Diagramm die Zahl anzeigt, die dem Konto zufolge der Null-Balken vom Beginn des Kalendermonats ist. Auf MT4, bitte)

Frohe Feiertage für alle)

Frohes Jagen)

Nur Intraday:

Funktion

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

Nur Intraday:

Funktion

Ich danke Ihnen natürlich.

Aber intraday geht das nicht. Nein, das tut es nicht.

 
Ein guter Tag zum Helfen. Ich habe einen Awesome Oscillator-Indikator, der die Differenz zwischen einfachen gleitenden Durchschnitten mit Perioden von 5 und 34 Durchschnittspreisen anzeigt. Kann jemand einen neuen Indikator schreiben oder vorschlagen, wie man die AO so ändern kann, dass der Indikator die Dynamik in Form eines Histogramms unter Verwendung der folgenden Formel anzeigt: [einfacher gleitender Durchschnitt der Medianpreise mit Periode 3 mal einfacher gleitender Durchschnitt des Tickvolumens mit Periode 3] minus [einfacher gleitender Durchschnitt der Medianpreise mit Periode 21 mal einfacher gleitender Durchschnitt des Tickvolumens mit Periode 21]?
 
volizordlo:
Hallo, helfen Sie mir hier. Es gibt einen Indikator Awesome Oscillator, der die Differenz zwischen einfachen gleitenden Durchschnitten mit Perioden von 5 und 34 Durchschnittspreisen anzeigt. Kann jemand einen neuen Indikator schreiben oder vorschlagen, wie man die AO ändern kann, um die Dynamik des Indikators als Histogramm gemäß der folgenden Formel anzuzeigen: [Einfacher gleitender Durchschnitt der Medianpreise mit Zeitraum 3 multipliziert mit

ein einfacher gleitender Tick-Volumen-Durchschnitt mit einer Periode von 3

] minus [einfacher gleitender Durchschnitt der Medianpreise mit Periode 21 multipliziert mit einem einfachen gleitenden Durchschnitt des Tickvolumens mit Periode 21]?

Gibt es eine Mittelung des Tickvolumens?

 
Iurii Tokman:

Sie meinen die Mittelwertbildung des Tickvolumens?

ja

 
volizordlo:

Ja, ja.

OK, ich werde versuchen, zu multiplizieren
Ich frage mich, was das Ergebnis ist
aber haben Sie ein Bild von dem, was das Ergebnis sein sollte?

 
Iurii Tokman:

OK, ich werde versuchen, zu multiplizieren
Ich frage mich, was das Ergebnis ist
aber haben Sie ein Bild von dem, was das Ergebnis sein sollte?

Es sollte wie das gleiche ao oder macd aussehen. aber das ist nur eine Idee. danke!
 
volizordlo:
Es soll wie das gleiche ao oder macd aussehen. aber das ist nur eine Idee. danke!

ok

 
volizordlo:
Es soll wie das gleiche ao oder macd aussehen. aber das ist nur eine Idee. danke!
//+------------------------------------------------------------------+
//|                                                      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:
Ja, vielen Dank!