CCI_Woodies

Author: Woodies
Indicators Used
Commodity channel index
0 Views
0 Downloads
0 Favorites
CCI_Woodies
//+------------------------------------------------------------------+ 
//|                                                  CCI_Woodies.mq5 | 
//|                                        Copyright © 2013, Woodies | 
//|                                                                  | 
//+------------------------------------------------------------------+ 
//---- àâòîðñòâî èíäèêàòîðà
#property copyright "Woodies"
//---- àâòîðñòâî èíäèêàòîðà
#property link      ""
//---- íîìåð âåðñèè èíäèêàòîðà
#property version   "1.00"
//---- îòðèñîâêà èíäèêàòîðà â îòäåëüíîì îêíå
#property indicator_separate_window
//---- êîëè÷åñòâî èíäèêàòîðíûõ áóôåðîâ 2
#property indicator_buffers 2 
//---- èñïîëüçîâàíî âñåãî îäíî ãðàôè÷åñêîå ïîñòðîåíèå
#property indicator_plots   1
//+----------------------------------------------+
//|  îáúÿâëåíèå êîíñòàíò                         |
//+----------------------------------------------+
#define RESET 0 // Êîíñòàíòà äëÿ âîçâðàòà òåðìèíàëó êîìàíäû íà ïåðåñ÷¸ò èíäèêàòîðà
//+----------------------------------------------+
//|  Ïàðàìåòðû îòðèñîâêè èíäèêàòîðà              |
//+----------------------------------------------+
//---- îòðèñîâêà èíäèêàòîðà 1 â âèäå îáëàêà
#property indicator_type1   DRAW_FILLING
//---- â êà÷åñòâå öâåòîâ îáëàêà
#property indicator_color1  clrLime,clrPlum
//---- îòîáðàæåíèå ìåòêè èíäèêàòîðà
#property indicator_label1  "CCI_Woodies"
//+----------------------------------------------+
//| Âõîäíûå ïàðàìåòðû èíäèêàòîðà                 |
//+----------------------------------------------+
input uint FastPeriod=6;                              // Ïåðèîä áûñòðîãî CCI èíäèêàòîðà
input ENUM_APPLIED_PRICE FastPrice=PRICE_MEDIAN;      // Öåíîâàÿ êîíñòàíòà áûñòðîãî CCI èíäèêàòîðà
input uint SlowPeriod=14;                             // Ïåðèîä ìåäëåííîãî CCI èíäèêàòîðà
input ENUM_APPLIED_PRICE SlowPrice=PRICE_MEDIAN;      // Öåíîâàÿ êîíñòàíòà ìåäëåííîãî CCI èíäèêàòîðà
input int Shift=0;                                    // ñäâèã èíäèêàòîðà ïî ãîðèçîíòàëè â áàðàõ 
//+----------------------------------------------+
//---- îáúÿâëåíèå äèíàìè÷åñêèõ ìàññèâîâ, êîòîðûå áóäóò â 
// äàëüíåéøåì èñïîëüçîâàíû â êà÷åñòâå èíäèêàòîðíûõ áóôåðîâ
double FastBuffer[];
double SlowBuffer[];
//---- Îáúÿâëåíèå öåëûõ ïåðåìåííûõ íà÷àëà îòñ÷¸òà äàííûõ
int min_rates_total;
//---- Îáúÿâëåíèå öåëûõ ïåðåìåííûõ äëÿ õðàíåíèÿ õåíäëîâ èíäèêàòîðîâ
int Fast_Handle,Slow_Handle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+  
int OnInit()
  {
//---- Èíèöèàëèçàöèÿ ïåðåìåííûõ íà÷àëà îòñ÷¸òà äàííûõ
   min_rates_total=int(MathMax(FastPeriod,SlowPeriod));
   
//--- ïîëó÷åíèå õåíäëà èíäèêàòîðà Fast iCCI
   Fast_Handle=iCCI(Symbol(),PERIOD_CURRENT,FastPeriod,FastPrice);
   if(Fast_Handle==INVALID_HANDLE)
     {
      Print(" Íå óäàëîñü ïîëó÷èòü õåíäë èíäèêàòîðà Fast iCCI");
      return(INIT_FAILED);
     }
     
//--- ïîëó÷åíèå õåíäëà èíäèêàòîðà Slow iCCI
   Slow_Handle=iCCI(Symbol(),PERIOD_CURRENT,SlowPeriod,SlowPrice);
   if(Slow_Handle==INVALID_HANDLE)
     {
      Print(" Íå óäàëîñü ïîëó÷èòü õåíäë èíäèêàòîðà Slow iCCI");
      return(INIT_FAILED);
     }
    
//---- ïðåâðàùåíèå äèíàìè÷åñêîãî ìàññèâà â èíäèêàòîðíûé áóôåð
   SetIndexBuffer(0,FastBuffer,INDICATOR_DATA);
//---- ïðåâðàùåíèå äèíàìè÷åñêîãî ìàññèâà â èíäèêàòîðíûé áóôåð
   SetIndexBuffer(1,SlowBuffer,INDICATOR_DATA);
//---- îñóùåñòâëåíèå ñäâèãà èíäèêàòîðà 1 ïî ãîðèçîíòàëè íà Shift
   PlotIndexSetInteger(0,PLOT_SHIFT,Shift);
//---- îñóùåñòâëåíèå ñäâèãà íà÷àëà îòñ÷¸òà îòðèñîâêè èíäèêàòîðà 1 íà min_rates_total
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,min_rates_total);

//---- èíèöèàëèçàöèè ïåðåìåííîé äëÿ êîðîòêîãî èìåíè èíäèêàòîðà
   string shortname;
   StringConcatenate(shortname,"Instantaneous Trendline(",FastPeriod,", ",SlowPeriod,", ",Shift,")");
//--- ñîçäàíèå èìåíè äëÿ îòîáðàæåíèÿ â îòäåëüíîì ïîäîêíå è âî âñïëûâàþùåé ïîäñêàçêå
   IndicatorSetString(INDICATOR_SHORTNAME,shortname);
//--- îïðåäåëåíèå òî÷íîñòè îòîáðàæåíèÿ çíà÷åíèé èíäèêàòîðà
   IndicatorSetInteger(INDICATOR_DIGITS,2);
//---- êîëè÷åñòâî  ãîðèçîíòàëüíûõ óðîâíåé èíäèêàòîðà 3   
   IndicatorSetInteger(INDICATOR_LEVELS,3);
//---- çíà÷åíèÿ ãîðèçîíòàëüíûõ óðîâíåé èíäèêàòîðà   
   IndicatorSetDouble(INDICATOR_LEVELVALUE,0,+100);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,1,0);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,2,-100);
//---- â êà÷åñòâå öâåòîâ ëèíèé ãîðèçîíòàëüíûõ óðîâíåé èñïîëüçîâàíû öâåòà  
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,clrBlue);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,1,clrGray);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,2,clrMagenta);
//---- â ëèíèè ãîðèçîíòàëüíîãî óðîâíÿ èñïîëüçîâàí êîðîòêèé øòðèõ-ïóíêòèð  
   IndicatorSetInteger(INDICATOR_LEVELSTYLE,0,STYLE_DASHDOTDOT);
   IndicatorSetInteger(INDICATOR_LEVELSTYLE,1,STYLE_DASH);
   IndicatorSetInteger(INDICATOR_LEVELSTYLE,2,STYLE_DASHDOTDOT);
//--- çàâåðøåíèå èíèöèàëèçàöèè
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[]
                )
  {
//---- ïðîâåðêà êîëè÷åñòâà áàðîâ íà äîñòàòî÷íîñòü äëÿ ðàñ÷¸òà
   if(rates_total<min_rates_total
   || BarsCalculated(Fast_Handle)<rates_total
   || BarsCalculated(Slow_Handle)<rates_total) return(RESET);

//---- îáúÿâëåíèÿ ëîêàëüíûõ ïåðåìåííûõ 
   int to_copy;
   
//---- ðàñ÷¸òû íåîáõîäèìîãî êîëè÷åñòâà êîïèðóåìûõ äàííûõ
   if(prev_calculated>rates_total || prev_calculated<=0)// ïðîâåðêà íà ïåðâûé ñòàðò ðàñ÷¸òà èíäèêàòîðà
     {
      to_copy=rates_total; // ñòàðòîâûé íîìåð äëÿ ðàñ÷¸òà âñåõ áàðîâ
     }
   else to_copy=rates_total-prev_calculated+1; // ñòàðòîâûé íîìåð äëÿ ðàñ÷¸òà íîâûõ áàðîâ

//---- êîïèðóåì âíîâü ïîÿâèâøèåñÿ äàííûå â ìàññèâû
   if(CopyBuffer(Fast_Handle,0,0,to_copy,FastBuffer)<=0) return(RESET);
   if(CopyBuffer(Slow_Handle,0,0,to_copy,SlowBuffer)<=0) return(RESET);
//----    
   return(rates_total);
  }
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---