Помощь в изменении объемов.

 

Здравствуйте

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

Файлы:
 

я постоянно вижу этот код в таких индикаторах.

//+------------------------------------------------------------------+
//| 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[])

Если изменить

const long &tick_volume[],

на

const long &volume_real[]
Ничего не изменяет. Что тут считает реальные объемы, а что тиковые?
 
Richness:


Пожалуйста вставляйте код правильно: при редактировании сообщения нажмите кнопку   Code и во всплывающее окно вставьте свой код (на первый раз я исправил вставку Вашего кода).

MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
 
Richness:

я постоянно вижу этот код в таких индикаторах.


Изменение имени не приводит к изменению самой сущности. tick_volume - это просто имя. Само по себе ничего не означает. В OnCalculate нет реальных объемов. Их нужно специально запрашивать.

 
Richness:

Здравствуйте

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

Чтобы работать с реальными объёмами нужно найти символ по которому эти объёмы транслируются. Как правило такая трансляция идет по биржевым символам у брокеров которые обеспечивают подключение к бирже (ВНИМАНИЕ! Не путаем Биржу и всякие торговые организации ...)

 

Помочь можно с моей просьбой? Я не программист MQL. да и вообще далек от этого.

Насколько я понял за это отвечает вот это

//--- input parameters
input ENUM_APPLIED_VOLUME APPLIED_VOLUME  = VOLUME_TICK;

также вот это

int OnInit()

PlotIndexSetString(0, PLOT_LABEL, EnumToString(APPLIED_VOLUME));


также нужно добавить (возможно) в каждую строку кода где используется

tick_volume
double(APPLIED_VOLUME == VOLUME_TICK ? tick_volume[i] : volume[i]);

Или я не правильно понимаю?

 
Richness:

Помочь можно с моей просьбой? Я не программист MQL. да и вообще далек от этого.

Насколько я понял за это отвечает вот это

также нужно добавить (возможно) в каждую строку кода где используется

tick_volume

Или я не правильно понимаю?

В том коде, который Вы прикрепили к первому сообщению, нет такого настроечного параметра. Возможно, прикреплен не тот код, который Вы сейчас обсуждаете.

 
Ihor Herasko:

В том коде, который Вы прикрепили к первому сообщению, нет такого настроечного параметра. Возможно, прикреплен не тот код, который Вы сейчас обсуждаете.

Все верно, я просил изменить код индикатора, чтобы он использовал реальные объемы. Это я взял индикатор где используется переключение реальных объемов на тиковые и попробовал понять, за что отвечает изменение объемов с тикового на реальный.
 
Richness:

я постоянно вижу этот код в таких индикаторах.

Если изменить

на

Ничего не изменяет. Что тут считает реальные объемы, а что тиковые?
Попробуйте в трёх местах tick_volume заменить на volume. Если будете запускать индикатор на инструментах где есть реальные объёмы, то должно работать.
      double R = sign * tick_volume[i];
         work[i][_vp] = (i==0) ? R                      : work[i-1][_vp]+alpha*(R             -work[i-1][_vp]);
         work[i][_tv] = (i==0) ? (double)tick_volume[i] : work[i-1][_tv]+alpha*(tick_volume[i]-work[i-1][_tv]);
 
Alexey Viktorov:
Попробуйте в трёх местах tick_volume заменить на volume. Если будете запускать индикатор на инструментах где есть реальные объёмы, то должно работать.
Благодарю, вроде работает только не везде. В одном случае есть результат, в другом нет.
 
Richness:
Благодарю, вроде работает только не везде. В одном случае есть результат, в другом нет.
А вы уверены что есть реальные объёмы там где не работает?