А почему вам не подходит задание цвета при помощи #property indicator_colorN ?
Чтобы это понять надо найти ВСЕ темы где этот вопрос так или иначе Владимиром обсуждался.
А почему вам не подходит задание цвета при помощи #property indicator_colorN ?
Этот цвет потом не возможно вытащить для дальнейшего использования ...
Этот цвет потом не возможно вытащить для дальнейшего использования ...
А что мешает создать дополнительный буфер и хранить там цвет?!
А что мешает создать дополнительный буфер и хранить там цвет?!
Цвет задается в настройках индикатора, если использовать дополнительный цветовой буфер то он хранит не сам цвет а индекс цвета. Цвет вытащить нельзя.
Если использовать буфер через плот тогда цвета индикатора слетают при смене периода графика.
В общем там баг с цветами...
Цвет задается в настройках индикатора, если использовать дополнительный цветовой буфер то он хранит не сам цвет а индекс цвета. Цвет вытащить нельзя.
Поясню, что я предлагаю:
1. Задаем цвета стандартным способом
#property indicator_color1 clrNONE,clrMediumSlateBlue,clrDarkGoldenrod,clrForestGreen,clrBlueViolet,clrRed
2. Добавляем еще одни буфер для хранения самого цвета а не его индекса.
double ColorBuffer[];
void OnInit(){
//...
SetIndexBuffer(5,ColorBuffer,INDICATOR_DATA);
//...
for(int i=0;i<6;i++)
ColorOfDay[i]=(color)PlotIndexGetInteger(0,PLOT_LINE_COLOR,i);
//...
}
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[])
{
//...
while(i<rates_total)
{
//...
ColorIndexBuffer[i]=t.day_of_week;
ColorBuffer[i]=ColorOfDay[t.day_of_week];
//...
}
}
3. Осталось только обновить значение цвета в ColorBuffer при смене цвета пользователем. Это легко сделать через событие CHARTEVENT_CHART_CHANGE.
В итоге через CopyBuffer(handle, 5, ...) получите ваш цвет!
Если использовать буфер через плот тогда цвета индикатора слетают при смене периода графика.
В общем там баг с цветами...
В данном индикаторе цвета задаются в OnInit(), они и должны слетать. Бага не вижу.
Цвет задается в настройках индикатора, если использовать дополнительный цветовой буфер то он хранит не сам цвет а индекс цвета. Цвет вытащить нельзя.
Если использовать буфер через плот тогда цвета индикатора слетают при смене периода графика.
В общем там баг с цветами...
Давно уже решили бы свою нестандартную задачу с помощью раздела Глобальные переменные терминала. Но можно продолжать упорствовать, конечно.
Давно уже решили бы свою нестандартную задачу с помощью раздела Глобальные переменные терминала. Но можно продолжать упорствовать, конечно.
Вы считаете что так будет правильно ?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Код из справки, какой бы мы цвет не установили при запуске индикатора при смене периода графика цвет индикатора слетает на по умолчанию. Скорее всего это из за того что цвет берется из массива ColorOfDay а при смене периода происходит переинициализация индикатора. Я уже как то писал о том что в индикаторах невозможно сохранить данные при смене периодов. https://www.mql5.com/ru/forum/1111/page2247#comment_8221372
Считаю данное поведение не верным. При смене периода цвет должен оставаться тем который задал пользователь, а не программист...