IBS_RSI_CCI_v3

Author: Urain
Indicators Used
Moving average indicatorCommodity channel indexRelative strength index
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
IBS_RSI_CCI_v3
/*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
Òðè ìåòîäèêè ðàñ÷¸òà IBS,RSI,CCI âñå ðàâíîïðàâíû â óïðàëÿåìîñòè, ó âñåõ åñòü ïåðåâîðîò ðàñ÷¸òà, 
êîýôôèöèåíò îòíîñèòåëüíîñòè è àïëèåäïðàéñ ( äëÿ IBS ýòî íå çíà÷àùèé ïàðàìåòð, íî ñòîèò äëÿ ñèììåòðèè ïàðàìåòðîâ).
Îòðèñîâêà ëèíèé èä¸ò êàê ñðåäíÿÿ îò òð¸õ IBS,RSI,CCI .
Âíóòðè êàê ïðÿìîãî òàê è ïåðåâ¸ðíóòîãî ìîæíî â ñâîþ î÷åðåäü ïåðåâåðíóòü îäèíó èç ìåòîäèê,
òå îíè íå çàâèñèìû êàê ïî ïåðåâîðîòó òàê è ïî îòíîñèòåëüíîñòè.
Òàê æå ÷åðåç Shift ëèíèè ìîæíî äâèãàòü (Shift íå ìîæåò áûòü îòðèöàòåëüíîé).
"âàðèàíò_1" óïðàâëÿåò âàðèàíòàìè ðàñ÷¸òà 1 èëè 2. Ïî óìîë÷àíèþ ñòîèò 2 --> "âàðèàíò_1 = false".
"positive" óïðàâëÿåò çåðêàëüíîñòüþ îòîáðàæåíèÿ. Ïî óìîë÷àíèþ ñòîèò íîðìàëüíîå îòîáðàæåíèå --> "positive = true".
 
Ìåòîäû ñêîëüçÿùèõ:
 
  MODE_SMA 0 Ïðîñòîå ñêîëüçÿùåå ñðåäíåå 
  MODE_EMA 1 Ýêñïîíåíöèàëüíîå ñêîëüçÿùåå ñðåäíåå 
  MODE_SMMA 2 Ñãëàæåííîå ñêîëüçÿùåå ñðåäíåå 
  MODE_LWMA 3 Ëèíåéíî-âçâåøåííîå ñêîëüçÿùåå ñðåäíåå 
 
app_price:
 
  PRICE_CLOSE    0 Öåíà çàêðûòèÿ 
  PRICE_OPEN     1 Öåíà îòêðûòèÿ 
  PRICE_HIGH     2 Ìàêñèìàëüíàÿ öåíà 
  PRICE_LOW      3 Ìèíèìàëüíàÿ öåíà 
  PRICE_MEDIAN   4 Ñðåäíÿÿ öåíà, (high+low)/2 
  PRICE_TYPICAL  5 Òèïè÷íàÿ öåíà, (high+low+close)/3 
  PRICE_WEIGHTED 6 Âçâåøåííàÿ öåíà çàêðûòèÿ, (high+low+close+close)/4   
 
ìîäèôèêàöèÿ èíäèêàòîðà WKBIBS, ïî ïðîñüáå Martingeila 
/*///+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
//+------------------------------------------------------------------+
//|                                               IBS_RSI_CCI_v3.mq4 |
//|                                                            Urain |
//+------------------------------------------------------------------+
#property copyright "Urain"
#property link      ""
 
#property indicator_separate_window
//#property indicator_minimum 0
//#property indicator_maximum 100
#property indicator_buffers 3
#property indicator_color1 Yellow  // áóôåð 0 - ñèãíàëüíàÿ ëèíèÿ
#property indicator_color2 Red     // áóôåð 1 - íà ïðîäàæó âåðõíÿÿ ëèíèÿ
#property indicator_color3 Blue    // áóôåð 2 - íà ïîêóïêó íèæíÿÿ ëèíèÿ
#property indicator_level1 0.0
//---- input parameters---------------------------------------
extern int           per_IBS  =   5;
extern int            ãëóøêà  =   0;
extern double       koef_ibs  = 7.0;
extern bool              ibs  =true;
 
extern int           per_RSI  =  14;
extern int     app_price_RSI  =   0;  //app_price
extern double       koef_rsi  = 9.0;
extern bool              rsi  =true;
 
extern int           per_CCI  =  14;
extern int     app_price_CCI  =   0;  //app_price
extern double       koef_cci  = 1.0;
extern bool              cci  =true;
extern int            Shift  =   0;
extern int             porog  =  50;
//---- input parameters---------------------------------------
extern bool             âàðèàíò_1 =false;  
extern bool             positive  =true; 
extern int       RangePeriod_VKWB  = 25;
extern int       SmoothPeriod_VKWB = 3;
extern int       SmoothMode_VKWB   = 0;//Ìåòîäû ñêîëüçÿùèõ           
 
//---- buffers
double E0[], E1[], E2[], E3[], E4[], E5[], E6[];
int kibs=-1,kcci=-1,krsi=-1,posit=-1,xma1=1;
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(7); 
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,E0);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,E5);
   SetIndexDrawBegin(0,SmoothPeriod_VKWB);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,E6);
   SetIndexDrawBegin(1,SmoothPeriod_VKWB);   
   SetIndexBuffer(3,E1);   
   SetIndexBuffer(4,E2);
   SetIndexBuffer(5,E3);
   SetIndexBuffer(6,E4);  
   
   if(cci)kcci=1; if(rsi)krsi=1; if(ibs)kibs=1; 
   if(âàðèàíò_1)xma1=0; if(positive)posit=1;   
//----       
   return(0);
  }
//+------------------------------------------------------------------+
int deinit(){return(0);}
//+------------------------------------------------------------------+
int start()
  {
   int  cb=IndicatorCounted();
//----
   int i,limit,limit1,limit2,n_max,n_min;
   if(cb==0){limit=Bars-1; limit1=Bars-RangePeriod_VKWB; limit2=limit1-SmoothPeriod_VKWB;}
   if(cb>0) {limit=Bars-cb; limit1=Bars-cb; limit2=limit1;}  
   limit--;limit1--;limit2--;
   
   Delitel( E2, limit);
   for(i=limit;i>=0;i--)
      {E1[i]=posit*iMA_IBS_RSI_CCI( E2,
                                    per_IBS , per_RSI      , per_CCI      ,
                                    ãëóøêà  , app_price_RSI, app_price_CCI,
                                    koef_ibs, koef_rsi     , koef_cci     ,
                                    kibs    , krsi         , kcci         ,
                                    i+Shift);                   
      }
   for(i = limit;i>=0;i--)
      { E0[i]=E0[i+1];
        double raz10=E1[i]-E0[i];      
        if(MathAbs(raz10)>porog) 
          {if(raz10>0) E0[i]=E1[i]-porog*xma1;
           if(raz10<0) E0[i]=E1[i]+porog*xma1;
          }         
      } 
   for(i=limit1; i>=0;i--)
      {n_max=ArrayMaximum(E0,RangePeriod_VKWB,i);
       n_min=ArrayMinimum(E0,RangePeriod_VKWB,i);
       E3[i]=E0[n_max];
       E4[i]=E0[n_min];
      }
   for(i=limit2; i>=0;i--)
      {E5[i]=iMAOnArray(E3,0,SmoothPeriod_VKWB,0,SmoothMode_VKWB,i);
       E6[i]=iMAOnArray(E4,0,SmoothPeriod_VKWB,0,SmoothMode_VKWB,i);
      }             
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
void Delitel(double& ExtMapBuffer[],int limit)
{
 double delitel;
 for(int i=limit;i>=0;i--)
    {delitel=High[i]-Low[i];
     if (delitel>0)  ExtMapBuffer[i]=(Close[i]-Low[i])/delitel;
     else ExtMapBuffer[i]=0.0;
    }
return;
}
 
double iMA_IBS_RSI_CCI(double ExtMapBuffer[],
                      int per_IBS,int per_RSI,int per_CCI,
                      int ãëóøêà,int app_price_RSI,int app_price_CCI,
                      double koef_ibs,double koef_rsi,double koef_cci,
                      int kibs,int krsi,int kcci,
                      int i)
{
 double sum=0.0;
 sum+=kibs*(iMAOnArray(ExtMapBuffer,0,per_IBS,0,MODE_SMA,i)-0.5)*100.0*koef_ibs;
 sum+=kcci*iCCI(NULL,0,per_CCI,app_price_CCI,i)*koef_cci; 
 sum+=krsi*(iRSI(NULL,0,per_RSI,app_price_RSI,i)-50.0)*koef_rsi;
 sum*=1.0/3.0; 
return(sum);
}

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 ---