← К каталогу
Исходный код · ID 1109

market_statistics_v4_1.mq5

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор для MetaTrader 4, рассчитывающий и отображающий рыночные статистики: PVP (Point of Volume), VWAP (Volume Weighted Average Price), полосы стандартного отклонения (SD1, SD2, SD3) и гистограмму объёмов. Расчёт ведётся от выбранной начальной точки, определяемой параметрами смещения назад по дням и временем начала. Гистограмма объёмов визуализируется графическими объектами на графике. Индикатор перерисовывает данные при начале нового бара и управляет видимостью каждого элемента через отдельные переключатели.

Настройки программы

НастройкаОписание
daysBack Количество дней назад — Задаёт, сколько дней назад от текущего бара начинается период расчёта статистики.
startHour Час начала — Час дня, с которого начинается расчётный период при заданном смещении дней назад.
startMinute Минута начала — Минута часа, с которой начинается расчётный период.
HistogramAmplitude Амплитуда гистограммы — Определяет масштаб отображения гистограммы объёмов в барах.
Show_SD1 Показать SD1 — Включает или отключает отображение полосы стандартного отклонения первого уровня.
Show_SD2 Показать SD2 — Включает или отключает отображение полосы стандартного отклонения второго уровня.
Show_SD3 Показать SD3 — Включает или отключает отображение полосы стандартного отклонения третьего уровня.
Show_Histogram Показать гистограмму — Включает или отключает отрисовку гистограммы объёмов.
Show_PVP Показать PVP — Включает или отключает отображение линии точки объёма (PVP).
Show_VWAP Показать VWAP — Включает или отключает отображение линии взвешенного по объёму среднего цены (VWAP).
Получить полный код

Поиск по коду файла

#property indicator_chart_window

#property indicator_buffers 8

#property indicator_color1 Red         //PVP
#property indicator_width1 2

#property indicator_color2 Aqua        //VWAP
#property indicator_width2 2

#property indicator_color3 Green       //SD1Pos
#property indicator_width3 1
#property indicator_style3 2

#property indicator_color4 Red         //SD1Neg
#property indicator_width4 1
#property indicator_style4 2

#property indicator_color5 DarkOliveGreen//SD2Pos
#property indicator_width5 1
#property indicator_style5 2

#property indicator_color6 Crimson     //SD2Neg
#property indicator_width6 1
#property indicator_style6 2

#property indicator_color7 DarkGreen   //SD2Pos
#property indicator_width7 1
#property indicator_style7 2

#property indicator_color8 FireBrick   //SD2Neg
#property indicator_width8 1
#property indicator_style8 2

extern int     daysBack=1;
extern int     startHour=22; 
extern int     startMinute=00; 
extern int     HistogramAmplitude = 50;
extern bool    Show_SD1 = true;
extern bool    Show_SD2 = true;
extern bool    Show_SD3 = true;
extern bool    Show_Histogram = true;
extern bool    Show_PVP = true;
extern bool    Show_VWAP = true;

double PVP[];
double VWAP[];
double SD1Pos[];
double SD1Neg[];
double SD2Pos[];
double SD2Neg[];
double SD3Pos[];
double SD3Neg[];

double Hist[]; // drawn specifically

double OpenTime = 0;  // To check if we have a new bar
string   OBJECT_PREFIX = "VolumeHistogram_";
int      items;         // numbers of items inside volume histogram
int      Bars_Back = 0; // Shows the starting bar for given date
double   SD;            // standart deviation

int FindStartIndex()
{
  int dayofweektoday= TimeDayOfWeek(Time[0]);
  int days=0;

   for (int i=1; i<=Bars; i++) {

      if ((TimeDayOfWeek(Time[i])!=dayofweektoday)||(daysBack==0)) {
         days++;
         dayofweektoday=TimeDayOfWeek(Time[i]);

         if ((daysBack==days)||(daysBack==0))
         {
            while ((TimeHour(Time[i])>startHour)||(TimeMinute(Time[i])>startMinute))
            {
               i++;               
            }
            ObjectSet( "Starting_Time", OBJPROP_TIME1, Time[i]);
            ObjectSet("Starting_Time", OBJPROP_COLOR, Red);
            ObjectCreate("Starting_Time", OBJ_VLINE, 0, Time[i], 0);
            return (i);         
         }      
      }
   }   

   return( 0);
} 

int init()
{
      // код доступен только после оплаты
   }

void ObDeleteObjectsByPrefix(string Prefix)
{
   int L = StringLen(Prefix);
   int i = 0; 
   

Показано первые 50% кода (символов: 5514)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
551,40₽ ≈ $6.74