Ücretsiz bir gösterge yazacağım - sayfa 104

 
ALEXEY NIKOLAEV :

Saygıdeğer topluluğa saygılarımla!

Birisi, ayarlarda belirtilen belirli bir süre içinde grafikte mevcut çubuğun seri numarası hakkında bilgi gösterecek bir gösterge yazabilecektir . Örneğin, gösterge günlük grafiklerde başlatılır, raporlama dönemi ayarlarda bir aya ayarlanır. Bu, hindinin grafikte takvim ayının başından itibaren sıfır çubuğu olan bir sayı gösterdiği anlamına gelir. MT 4'te lütfen)

Herkese mutlu yıllar)

İyi avlar)

Yalnızca gün içi:

işlev

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

Yalnızca gün içi:

işlev

tabiki teşekkür ederim

Ama gündüz çalışmıyor. hayır yani hayır

 
Güzel gün! Yardım. 5 ve 34 medyan fiyat dönemleriyle basit hareketli ortalamalar arasındaki farkı gösteren Müthiş Osilatör göstergesi var. Herhangi biri yeni bir gösterge yazabilir veya AO'nun nasıl değiştirileceğini önerebilir, böylece histogram göstergesi dinamikleri aşağıdaki formüle göre gösterir: [bir periyoda sahip kene hacminin basit hareketli ortalamasının 3 katı bir periyotla medyan fiyatların basit hareketli ortalaması of 3] eksi [ 21 periyotlu medyan fiyatların basit hareketli ortalaması, 21 periyotlu kene hacminin basit hareketli ortalaması]?
 
volizordlo :
Güzel gün! Yardım. 5 ve 34 medyan fiyat dönemleriyle basit hareketli ortalamalar arasındaki farkı gösteren Müthiş Osilatör göstergesi var. Herhangi biri yeni bir gösterge yazabilir veya AO'nun nasıl değiştirileceğini önerebilir, böylece bir histogram şeklindeki gösterge dinamikleri aşağıdaki formüle göre gösterir: [3 kez periyotlu medyan fiyatların basit hareketli ortalaması

3 periyotlu kene hacminin basit hareketli ortalaması

] eksi [21. periyoda sahip medyan fiyatların basit hareketli ortalaması çarpı 21. periyoda sahip kene hacminin basit hareketli ortalaması]?

Kene hacminin bir ortalaması var mı?

 
Iurii Tokman :

Tik hacmi ortalamasını mı kastediyorsunuz?

Evet

 
volizordlo :

Evet

tamam, çarpmaya çalışacağım
ne olacağını merak et
ve şans eseri bir resim yok, sonunda ne olmalı?

 
Iurii Tokman :

tamam, çarpmaya çalışacağım
ne olacağını merak et
ve şans eseri bir resim yok, sonunda ne olmalı?

teoride, aynı ao veya macd gibi görünmelidir. ama fikir bu. teşekkür etmek!
 
volizordlo :
teoride, aynı ao veya macd gibi görünmelidir. ama fikir bu. teşekkür etmek!

TAMAM

 
volizordlo :
teoride, aynı ao veya macd gibi görünmelidir. ama fikir bu. teşekkür etmek!
 //+------------------------------------------------------------------+
//|                                                      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 :
evet, çok teşekkürler!