- June 8, 2013
- Posted by: Forex Wiki Team
- Category: FX Ind
Name: |
|
||
Author: | gery18 (2011.12.28 08:33) | ||
Downloaded: | 3066 | ||
Download: |
|
||
Description:The indicator counts the Up bars (Close-Open) and Down bars (Open-Close). Calculation:n = Up bars (Close>Open, first bar=1, last bar=n) m = Down bars (Close<Open)
Oscillator indicator, my opinion - use it for filtering of entry, when UpDownBars is above 0 go only short and when UpDownBars is below 0 go only long. Image: |
|||
rplust:
rockyhoangdn:
rplust:
"rockyhoangdn".... the chart with your code does not draw a new bar automatically... has to be refreshed manually... It also repaints a number of bars. find: ArrayResize(UpDown,limit); and replace with ArrayResize(UpDown,Bars); thanks, but this chart works fine... limit or Bars.. both work... I was referring to the other chart " Grossperiod 60" it does not auto refresh and also repaints. I'm not a coder but I guess it is possible to code it so it does not repaint history bars. It will auto refresh with "Bars", but if use "Grossperiod 60" its allway repaint. 30.12.2011 05:58 rockyhoangdn
rockyhoangdn:
rplust:
"rockyhoangdn".... the chart with your code does not draw a new bar automatically... has to be refreshed manually... It also repaints a number of bars. find: ArrayResize(UpDown,limit); and replace with ArrayResize(UpDown,Bars); thanks, but this chart works fine... limit or Bars.. both work... I was referring to the other chart " Grossperiod 60" it does not auto refresh and also repaints. I'm not a coder but I guess it is possible to code it so it does not repaint history bars. 30.12.2011 02:59 rplust
rplust:
"rockyhoangdn".... the chart with your code does not draw a new bar automatically... has to be refreshed manually... It also repaints a number of bars. find: ArrayResize(UpDown,limit); and replace with ArrayResize(UpDown,Bars); 29.12.2011 15:27 rockyhoangdn
"rockyhoangdn".... the chart with your code does not draw a new bar automatically... has to be refreshed manually... It also repaints a number of bars.
29.12.2011 09:04 rplust
//+------------------------------------------------------------------+ //|                                                  UpDownBars.mq4 | //|                      Copyright © 2011, MetaQuotes Software Corp. | //|                                        http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, MetaQuotes Software Corp." #property link      "http://www.metaquotes.net" #property indicator_separate_window #property indicator_buffers 4              // Number of buffers #property indicator_color1 Aqua #property indicator_color2 Red #property indicator_color3 Blue #property indicator_color4 Blue #property indicator_width1 4 #property indicator_width2 4 #property indicator_width3 1 #property indicator_width4 1 extern int period = 20; double UpDown[]; double SignalUpDown[]; double Up[]; double Down[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function                        | //+------------------------------------------------------------------+ int init()   {     SetIndexBuffer(0,Up);     SetIndexLabel(0,"Up");     SetIndexStyle (0,DRAW_HISTOGRAM);     SetIndexBuffer(1,Down);     SetIndexLabel(1,"Down");     SetIndexStyle (1,DRAW_HISTOGRAM);     SetIndexBuffer(2,UpDown);     SetIndexLabel(2,"UpDown");     SetIndexStyle (2,DRAW_NONE);     SetIndexBuffer(3,SignalUpDown);     SetIndexLabel(3,"SignalUpDown");     SetIndexStyle (3,DRAW_LINE);   return(0);   } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function                      | //+------------------------------------------------------------------+ int deinit()   { //---- //----   return(0);   } //+------------------------------------------------------------------+ //| Custom indicator iteration function                              | //+------------------------------------------------------------------+ int start() {   if(Bars<=period) return(0);   int i;   int    counted_bars=IndicatorCounted();   double bar, ups, downs, upsDivide, downsDivide;   int upsCount, downsCount;   int limit=Bars-counted_bars;       ArrayResize(UpDown,limit);   ArraySetAsSeries(UpDown,true); //---- macd counted in the 1-st buffer   for(i=0; i<limit; i++)   {       ups = 0;       downs = 0;       bar = 0;       upsCount = 0;       downsCount = 0;       upsDivide=0;       downsDivide=0;       for(int j=period;j>=0;j--)       {         bar=(Close[i+j]-Open[i+j])*100000;         if(bar>0)         {             ups+=(MathSqrt(bar)*((period+1-j)));             upsCount++;         }         if(bar<0)         {             downs+=(MathSqrt(-bar)*((period+1-j)));             downsCount++;         }       }       if(upsCount!=0)         upsDivide = ups/upsCount;       if(downsCount!=0)         downsDivide = downs/downsCount;         UpDown[i]=NormalizeDouble(((upsDivide)-(downsDivide)),3);       if (NormalizeDouble(((upsDivide)-(downsDivide)),3) > 0) Up[i]=NormalizeDouble(((upsDivide)-(downsDivide)),3); else Up[i]=0;       if (NormalizeDouble(((upsDivide)-(downsDivide)),3) < 0) Down[i]=NormalizeDouble(((upsDivide)-(downsDivide)),3);else Down[i]=0;   }   for(int ii=0; ii<limit; ii++)       {       SignalUpDown[ii]=iMAOnArray(UpDown,Bars,5,0,MODE_LWMA,ii);       }   ObjectsRedraw();   return(0); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //|                                                !!UpDownBars.mq4 | //|                      Copyright © 2011, MetaQuotes Software Corp. | //|                                        http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, MetaQuotes Software Corp." #property link      "http://www.metaquotes.net" #property indicator_separate_window #property indicator_buffers 4 #property indicator_color1  Aqua #property indicator_color2  Red #property indicator_color3  DeepPink #property indicator_color4  Blue #property indicator_width1 4 #property indicator_width2 4 #property indicator_width3 1 #property indicator_width4 1 //---- input parameters extern int GrossPeriod=60; extern int Barss=500; //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; double ExtMapBuffer4[]; datetime daytimes[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function                        | //+------------------------------------------------------------------+ int init()   { //---- indicators   SetIndexStyle(0,DRAW_HISTOGRAM);   SetIndexArrow(0,241);   SetIndexBuffer(0,ExtMapBuffer1);   SetIndexEmptyValue(0,0.0);   SetIndexLabel(0,"upline");   SetIndexStyle(1,DRAW_HISTOGRAM);   SetIndexArrow(1,242);   SetIndexBuffer(1,ExtMapBuffer2);   SetIndexEmptyValue(1,0.0);   SetIndexLabel(1,"downline");   SetIndexStyle(2,DRAW_NONE);   SetIndexArrow(2,159);   SetIndexBuffer(2,ExtMapBuffer3);   SetIndexEmptyValue(2,0.0);   SetIndexLabel(2,"upstopline");   SetIndexStyle(3,DRAW_LINE);   SetIndexArrow(3,159);   SetIndexBuffer(3,ExtMapBuffer4);   SetIndexEmptyValue(3,0.0);   SetIndexLabel(3,"signalline");   IndicatorShortName("!!UpDownBars-"+GrossPeriod); //---- //----   if (Period()>GrossPeriod) {GrossPeriod=Period();}   ArrayCopySeries(daytimes,MODE_TIME,Symbol(),GrossPeriod);   return(0);   } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function                      | //+------------------------------------------------------------------+ int deinit()   { //---- //----   return(0);   } //+------------------------------------------------------------------+ //| Custom indicator iteration function                              | //+------------------------------------------------------------------+ int start()   {   int    counted_bars=IndicatorCounted();   int    limit,bigshift;   double value1,value2,value3,value4;   if (counted_bars<0) return(-1);   if (counted_bars>0) counted_bars--;   if (Barss>0) limit=Barss-counted_bars; else limit=Bars-counted_bars; //----   for (int i=0; i<limit; i++)   {   if(Time[i]>=daytimes[0]) bigshift=0;   else     {       bigshift = ArrayBsearch(daytimes,Time[i-1],WHOLE_ARRAY,0,MODE_DESCEND);       if(Period()<=GrossPeriod) bigshift++;     }       for (int cnt=bigshift; cnt<(1+bigshift); cnt++)       {         value1=iCustom(NULL,GrossPeriod,"UpDownBars",0,cnt);         value2=iCustom(NULL,GrossPeriod,"UpDownBars",1,cnt);         value3=iCustom(NULL,GrossPeriod,"UpDownBars",2,cnt);         value4=iCustom(NULL,GrossPeriod,"UpDownBars",3,cnt);       }   ExtMapBuffer1[i]=value1;   ExtMapBuffer2[i]=value2;   ExtMapBuffer3[i]=value3;   ExtMapBuffer4[i]=value4;   ObjectsRedraw();   } //----   return(0);   } //+------------------------------------------------------------------+ |