Благодарью всем кто ответит !! Как написать ПЛАВНОЕ изменение цвета по значению ADX ? что-то на подобие ..COLOR=цвет(12432) +ADX[i]
- Библиотеки: Плавное изменение цвета
- Здраствуйте,написал советник, который должен закрывать отложеные ордера в конце дня,как ето реализовать
- Индикаторы: Market MOOD
Цвет надо разлагать на HLS, увеличивать номер оттенка (или яркость), преобразовывать назад. См. на пятом форуме в кодобазе есть мои коды по преобразованию цвета.
И всё-таки, Integer, HSLtoRGB или HSVtoRGB? Правильно ли я понимаю, что для данной задачи не будет никакой разницы, или я не понимаю их различия?
Спосибо ВСЕМ ..Побробую разобраться ..
НЕ выходит ....!!!!! можно примерчик .. .что и куда вставлять ,прописывать,обьявлять итд .итп ...
Значение цвета ЧЕГО ????
например . ма ....по значению ADX ....... COLOR=цвет(12432) +ADX[i]
#property indicator_chart_window extern int limit=360;//ширина окна свечей extern int periodADX=14; extern double Staturation=1.0;//максимальное значение насыщенности extern double Lightness=1.0;//максимальное значение светлоты int iDash=1;//текущий номер черты; объявляется на глобальном уровне, меняется тоже на глобальном уровне изнутри функции ColorDash() int CountedBars; int init(){ for(int i=limit; i<=0; i--) ColorDash(i, iDash);//в инициализации прорисовываем на всё наше окно свечей CountedBars=Bars-1; } int deinit(){ for(int i=limit; i<=0; i--) ObjectDelete(StringConcatenate("dashADX", i));//в деинициализации также в цикле удаляем все OBJ_TREND } int start(){//в старте if(CountedBars!=Bars-1){//как появилась новая свеча на графике ObjectDelete(StringConcatenate("dashADX", iDash));//сначала удаляем OBJ_TREND в конце окна свечей с номером iDash (которая меняется на глобальном уровне, повторяюсь) ColorDash(0, iDash);//а затем только рисуем OBJ_TREND с тем же номером iDash, только в начале окна свечей CountedBars=Bars-1;//и запоминаем новое значение общего количества баров на чарте } } void ColorDash(int index, int& iDash){//два параметра - номер бара, который всегда равен 0 в старте и пробегается в цикле в init(), и iDash, который передаётся ПО ССЫЛКЕ double Hue = iADX(NULL, 0, periodADX, PRICE_CLOSE, MODE_PLUSDI, 0) - iADX(NULL, 0, periodADX, PRICE_CLOSE, MODE_MINUSDI, 0);//получаем разницу +DI и -DI //NB! каждый отдельно меняется от 0 до 100, т.е. их разница меняется от -100 (0 минус 100) до +100 (100 минус 0) Hue = (Hue+100)/2;//область допустимых значений +100...-100 (т.е. от 100-0 до 0-100) переводим в О.Д.З. +100...0 Hue = Hue/100;//и дальше переводим в О.Д.З. 0.0...1.0 color RGB = HSLtoRGB(Hue, Staturation, Lightness); if(iDash!=limit) iDash++; else iDash=0;//инкрементируем на каждом обращении iDash до тех пор, пока не выходим за ширину окна ObjectCreate(StringConcatenate("dashADX", iDash), OBJ_TREND, 0, Close[index], Time[index], Close[index+1], Time[index+1]);//создаём OBJ_TREND длинной в толщину одной свечи ObjectSet(StringConcatenate("dashADX", iDash), OBJPROP_COLOR, RGB);//и меняем цвет OBJ_TREND в зависимости от разности +DI и -DI } double Hue_To_RGB(double v1,double v2,double vH){ if(vH<0) vH+=1.0; if(vH>1.0) vH-=1; if((6.0*vH)<1.0) return(v1+(v2-v1)*6.0*vH); if((2.0*vH)<1.0) return(v2); if((3.0*vH)<2.0) return(v1+(v2-v1)*((2.0/3.0)-vH)*6.0); return(v1); } color HSLtoRGB(double aH,double aS,double aL){ if(aS==0){ double oR=aL*255; double oG=aL*255; double oB=aL*255; }else{ double var_2; if(aL<0.5) var_2=aL*(1.0+aS); else var_2=(aL+aS)-(aS*aL); double var_1=2.0*aL-var_2; oR=255.0*Hue_To_RGB(var_1,var_2,aH+(1.0/3.0)); oG=255.0*Hue_To_RGB(var_1,var_2,aH); oB=255.0*Hue_To_RGB(var_1,var_2,aH-(1.0/3.0)); } return(0x10000*oB+0x100*oG+oR); }Как-то так чтоли? Не, сейчас ничё не рисует, надо разбираться ещё почему.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь