Автор#1

Всем привет! Господа прошу помочь ,ещё в mql не втянувшийся , хочу спросить. Каким образом можно менять цвет индикатора при соблюдений определённых условии. Кратко опишу , допустим имеется два буфера для медленной скользящей и для быстрой, моя задача состоит в том , чтобы при пересечении быстрой с медленной MA менялся цвет медленной скользящей средней, с того момента где они пересеклись. Застрял именно на том каким способом следует обращаться к буферу , чтобы он перерисовывал линию в теле start(). Возможно у кого-нибудь есть пример с перерисовкой индикатора?


Пример кода

int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars if(counted_bars>0) counted_bars--;
int limit = MathMin(Bars - counted_bars,Bars-1);

//

//--------------------------------------------------------------
for(int i = limit; i >= 0 ; i--)
{
ExpBuf1 = iMA(NULL,0,fPeriod,0,MODE_SMA,0,i);
ExpBuf2 = iMA(NULL,0,sPeriod,0,MODE_SMA,0,i);

if (ExpBuf1)
{
PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,clrRed);
}
if (ExpBuf1>ExpBuf2)
{
PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,clrGreen);
}

}

return(0);
}

Изменено 3 ноября, 2015 пользователем Delirious

#2

Я не фанат написания индикаторов, но попробую подсказать.
Насколько помню что если изменять цвет буфера как сделали Вы, то он изменится на всей истории индикатора. А для того чтобы только на промежутке между пересечениями сделайте 2 буфера каждый своего цвета, и в случае пересечения наполняйте тот который цвет Вам нужен. Благо с изменения языка сняли ограничение в 8 буферов.

#3

Абсолютно согласен с Ttomas. Нужно сделать 2а буфера разных цветов.
1й буфер заполняешь при условии быстрая ма > медленной ма.
2й буфер заполняешь при условии быстрая
Получаешь быструю ма состоящую из 2х индикаторов разных цветов

Автор#4

Я понял. Большое спасибо, разобрался, теперь чертит как надо!!! :d

#5
Delirious, это хорошо, что лично вы поняли.
Но форум от этого не приобрел.

Теперь было бы правильно, в дополнение к некорректному коду в первом посте, опубликовать корректный код, разработанный вами согласно полученной на форуме консультации.
Согласны? :)
#6
Старик, а я не согласен. Имхо есть совместное написание продукта, а есть обмен опытом.
В последнем случае форум получает возможность посмотреть на вопрос и его решение.

Пример: чел спрашивает на форуме дозировку средства для борьбы с вредителями смородины. Ему советуют.
Итог №1: куча народу прочитала какие средства хорошие, а какие с косяками, какие дозы результативны.
Итог №2: модератор предлагает предоставить форуму 20% от урожая.

Думаю, что итог №1 исчерпывающе достаточен, а итог №2 избыточен. Цель обмена опытом достигнута в итоге №1.
#7

Не согласен.

Урожай это материальный актив, а программный код нематериальный.
Принципиальная разница между этими активами состоит в том, что если топикстартер выложит правильно выписанный фрагмент кода, то у него не убудет.

И заметьте очень важный нюанс: я предложил человеку не индюка выложить, это его интеллектуальная собственность - а лишь правильно выписанный фрагмент кода.
Как альтернативу фрагменту неправильного кода - который никто выкладывать не стесняется.

Моя цель сделать топик комплектным: фрагмент неправильного кода - консультация - фрагмент правильного кода.
Всегда необходимо доводить до завершенного решения.
Тогда данный топик останется в данном подфоруме навсегда и принесет пользу будущим изучателям языка.

Автор#8
Старик, я бы выложил , но указанный выше код никакого отношения к реальному индюку не имеет , я его привёл как пример. Реально меня интересовал вопрос способа отображения данных на графике. После того как индюк будет доработан и проверен , я его выложу
#9


Благо с изменения языка сняли ограничение в 8 буферов.



вау. вот это я динозавр. почитал, реально увеличили до 512. алиллуя!! :))

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025