МТ5 Индикатор максимального объема бара в течении дня ( сессию)

 
Всем привет! 

Мой первый пост и первый опыт с метатрейдер 5

хочу написать или найти простой индикатор PVP, для образовательных целей.

есть рабочая версия для Ninjatrader 8, хочу посмотреть и изучить Код как это сделать для мт5

индикатор должен будет работать с настоящим объемом ( не тиковым)

Код нт8 могу выложить тут в теме, помогите кто может, заранее спасибо

Код НТ8

protected override void OnBarUpdate()
52              {
53                      if (Bars.IsFirstBarOfSession)
54                      {
55                              MaxVolume       = 0;
56                              MaxPrice        = 0.0;
57                      }
58                      
59                      if (Volume[0] > MaxVolume)
60                      {
61                              MaxVolume       = Volume[0];
62                              MaxPrice        = Close[0];
63                      }
64                      
65                      PVPLine[0] = MaxPrice;
66              }


Картинка на графике



 

Чтобы смотреть реальные объемы - нужно чтобы по символу эти реальные объемы транслировались.

Код:

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots   0
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Indicator deinitialization function                              |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   Comment("");
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   Comment("Real Volume array: ",IntegerToString(volume[rates_total-1]));
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


На символе EURUSD нет реальных объемов:

а вот биржевой символ 


Файлы:
 
https://www.mql5.com/ru/code/15440
Volume Profile + Range v6.0
Volume Profile + Range v6.0
  • www.mql5.com
Индикатор Volume Profile + Range v6.0 (бывший TPO). Распределение сделок по ценовым уровням на заданном временном участке. Показывается в виде гистограммы.
 
Vladimir Karputov:

Чтобы смотреть реальные объемы - нужно чтобы по символу эти реальные объемы транслировались.

Код:


На символе EURUSD нет реальных объемов:

а вот биржевой символ 


Спасибо за ответ, у меня с данными все нормально, я использую версию МТ 5 с реальными данными от CME брокера AMP
Кто поможет написать ради примера индикатор максимального обьема буду очень благодарен, если не дорого могу и заплатит, мне в иследовательских целях
 
Это не то, это профиль рынка, а мне нужен по барно
 

Вообщем пойдет даже так:

Нужен шаблон индикатора, который будет искать в течении сесии (от начала до закрытия) минимальный обьем на свече (баре) - если условие true, закрашивается бар цветом и над баром обьем
В ниндзе например это будет так

if (Volume[0] >= 500)
{
BarBrushes[0] = Brushes.Red; // закраска бара на котором обьем
//Draw.Text // Текст надбаром - обьем бара.
}
 

Попробуйте почитать, что пишет этот индикатор, если устраивает, то можно и полосочки рисовать.

#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 1 

string symbol;
ENUM_TIMEFRAMES frame;
//дата последнего обработанного периода
datetime calc_time=0;
int calc_shift;
//дата окончания обработки
datetime fin_time=0;

MqlDateTime date;
int day=-1;
long max_volume;

int OnInit()
   {
   //текущий символ и таймфрейм
   symbol=Symbol();
   frame=(ENUM_TIMEFRAMES)Period();
   return(INIT_SUCCEEDED);
   }

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[])
   {
   //время окончания цикла
   fin_time=iTime(symbol,frame,0);
   do
      {
      //переходим на следующее время
      if(fin_time>calc_time) {calc_time=iTime(symbol,frame,(iBarShift(symbol,frame,calc_time)-1));} else break;
      calc_shift=iBarShift(symbol,frame,calc_time);
      TimeToStruct(calc_time,date);
      if(day!=date.day)
         {
         max_volume=0;
         day=date.day;
         }
      if(iVolume(symbol,frame,calc_shift)>max_volume)
         {
         max_volume=iVolume(symbol,frame,calc_shift);
         printf(TimeToString(calc_time)+" : "+IntegerToString(max_volume));
         }
      }
   while(fin_time>calc_time);
   return(rates_total);
   }

Писал на коленке.

 
Aleksei Stepanenko:

Попробуйте почитать, что пишет этот индикатор, если устраивает, то можно и полосочки рисовать.

Писал на коленке.

Спасибо за отклик!
, но скрипт у меня не работает завист намертво мт5

 
Понял, посмотрю в программе, исправлю
 

У меня работает. Скажите, что пишет на вкладке "Эксперты"?

Файлы:
 
Aleksei Stepanenko:

У меня работает. Скажите, что пишет на вкладке "Эксперты"?

Я понял так, что он запускает это как скрипт.

Причина обращения: