//+------------------------------------------------------------------+ //| | //| Copyright © 2000-2007, MetaQuotes Software Corp. | //| http://www.metaquotes.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, Gaba" #property link "http://www.metaquotes.net" //---- #property indicator_separate_window #property indicator_buffers 5 #property indicator_color1 Silver #property indicator_color2 LimeGreen #property indicator_color3 OrangeRed #property indicator_color4 Silver #property indicator_color5 Black // #property indicator_minimum -300 #property indicator_maximum 300 // #property indicator_level1 200 #property indicator_level2 100 #property indicator_level3 -100 #property indicator_level4 -200 // Пареметы extern int fastPeriod =6; extern int slowPeriod =14; extern int histLength =500; // Буферы данных double FastBuffer[]; // Быстрый CCI double SlowBuffer[]; // Медленный CCI double HistBuffer[]; double UpTrBuffer[]; double DnTrBuffer[]; // Инициализация //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int init() { string short_name; IndicatorBuffers(5); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); short_name="WoodiesCCI("+fastPeriod+","+slowPeriod+")"; IndicatorShortName(short_name); // indicator lines //////////////////////////////// SetIndexStyle(0, DRAW_HISTOGRAM); SetIndexBuffer(0, HistBuffer); SetIndexDrawBegin(0, slowPeriod); SetIndexLabel(0,"SlowCCI histogram"); SetIndexEmptyValue(0, EMPTY_VALUE); // SetIndexStyle(1, DRAW_HISTOGRAM); SetIndexBuffer(1, UpTrBuffer); SetIndexDrawBegin(1, slowPeriod); SetIndexLabel(1,"UpTrend histogram"); SetIndexEmptyValue(1, EMPTY_VALUE); // SetIndexStyle(2, DRAW_HISTOGRAM); SetIndexBuffer(2, DnTrBuffer); SetIndexDrawBegin(2, slowPeriod); SetIndexLabel(2,"DnTrend histogram"); SetIndexEmptyValue(2, EMPTY_VALUE); // SetIndexStyle(3, DRAW_LINE,1,3); SetIndexBuffer(3, SlowBuffer); SetIndexDrawBegin(3, slowPeriod); SetIndexLabel(3,"SlowCCI("+slowPeriod+")"); SetIndexEmptyValue(3, EMPTY_VALUE); // SetIndexStyle(4, DRAW_LINE); SetIndexBuffer(4, FastBuffer); SetIndexDrawBegin(4, slowPeriod); SetIndexLabel(4,"FastCCI("+fastPeriod+")"); SetIndexEmptyValue(4, EMPTY_VALUE); //---- return(0); } // Custor indicator deinitialization function //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int deinit() { // TODO: add your code here return(0); } // Custom indicator iteration function //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { string symbolName; int i, shift, checksum, counted_bars=IndicatorCounted(); double slowCCI=0.0; if (Bars0) counted_bars++; int limit=Bars-counted_bars; if (counted_bars<1 || checksum!=(histLength+fastPeriod+slowPeriod+Period()) || symbolName!=Symbol()) { // Параметры изменены, проводим реинициализацию for(i=Bars-1; i<=Bars-histLength; i++) { FastBuffer[i]=EMPTY_VALUE; // Быстрый CCI SlowBuffer[i]=EMPTY_VALUE; // Медленный CCI HistBuffer[i]=EMPTY_VALUE; // Гистограмма медленного CCI UpTrBuffer[i]=EMPTY_VALUE; // Направление тренда DnTrBuffer[i]=EMPTY_VALUE; // Направление тренда } checksum=histLength+fastPeriod+slowPeriod+Period(); symbolName=Symbol(); limit=histLength; } for(shift=limit; shift>=0; shift--) { FastBuffer[shift]=iCCI(NULL,0,fastPeriod,PRICE_TYPICAL,shift); SlowBuffer[shift]=iCCI(NULL,0,slowPeriod,PRICE_TYPICAL,shift); HistBuffer[shift]=SlowBuffer[shift]; UpTrBuffer[shift]=EMPTY_VALUE; DnTrBuffer[shift]=EMPTY_VALUE; // Заполнение массива точек и определение тренда int a, up=0, dn=0; for(a=0;a<8;a++) { slowCCI=iCCI(NULL,0,slowPeriod,PRICE_TYPICAL,shift+a); if (slowCCI>0) up++; if (slowCCI<=0) dn++; } if (up>=6) UpTrBuffer[shift]=SlowBuffer[shift]; if (dn>=6) DnTrBuffer[shift]=SlowBuffer[shift]; } return(0); } //+------------------------------------------------------------------+