Форум » Индикаторы. » Изменение вида индекатора. » Ответить

Изменение вида индекатора.

kot103: Помогите понять как переделать индикатор фишер1 вобшем переделывать не надо надо просто чтобы фишер1 рисовал вот так ||||||||||||||||||ну конечно это пример просто, так как черточки должны быть разного цвета да это вы и сами знаете я смог сделать чтобы так рисовалось но только относительно нулевой линии то есть синие рисуются вышы нуля а розовые ниже нуля а вот что изменить в коде чтоб и розовые рисовались вышы ноля не как не могу понять ну теперь вот и сам код фишира1 БУДУ ОЧЕНЬ БЛАГОДАРЕН ЗА ПОМОЩЬ!!! #property copyright "Copyright © 2005, Yura Prokofiev" #property link "Yura.prokofiev@gmail.com" #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Black #property indicator_color2 Blue #property indicator_color3 White extern int period=10; double ExtBuffer0[]; double ExtBuffer1[]; double ExtBuffer2[]; int init() { SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2,White); SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2,Blue); SetIndexStyle(2,DRAW_HISTOGRAM); IndicatorDigits(Digits+1); SetIndexBuffer(0,ExtBuffer0); SetIndexBuffer(1,ExtBuffer1); SetIndexBuffer(2,ExtBuffer2); IndicatorShortName("Fisher"); SetIndexLabel(1,NULL); SetIndexLabel(2,NULL); return(0); } int start() { //int period=10; int limit; int counted_bars=IndicatorCounted(); double prev,current,old; double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0; double price; double MinL=0; double MaxH=0; if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(int i=0; i<limit; i++) { MaxH = High[Highest(NULL,0,MODE_HIGH,period,i)]; MinL = Low[Lowest(NULL,0,MODE_LOW,period,i)]; price = (High+Low)/2; Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1; Value=MathMin(MathMax(Value,-0.999),0.999); ExtBuffer0=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1; Value1=Value; Fish1=ExtBuffer0; } bool up=true; for(i=limit-2; i>=0; i--) { current=ExtBuffer0; prev=ExtBuffer0[i+1]; if (((current<0)&&(prev>0))||(current<0)) up= false; if (((current>0)&&(prev<0))||(current>0)) up= true; if(!up) { ExtBuffer2=current; ExtBuffer1=0.0; } else { ExtBuffer1=current; ExtBuffer2=0.0; } } return(0); }

Ответов - 1

Alyona_AG: К сожалению, наши специалисты оказывают помощь только по вопросам, связанным с приложением AutoGraf 4, которому и посвящен этот форум. Можем посоветовать обратиться к хорошему программисту, Игорю Герасько. Задайте свой вопрос на его форуме: http://scriptong.myqip.ru , возможно там Вы получите ответ.



полная версия страницы