#property copyright "*" #property link "*" #define IND "ind_DivPeakTroughOsMA_SW_v1" #property indicator_separate_window #property indicator_buffers 6 #property indicator_color1 LimeGreen #property indicator_color2 Maroon #property indicator_color3 Red #property indicator_color4 Green #property indicator_color5 C'None' #property indicator_color6 C'None' #property indicator_width1 2 #property indicator_width2 2 #property indicator_width3 2 #property indicator_width4 2 //---- input parameters extern int OsMAFastPeriod=12; extern int OsMASlowPeriod=26; extern int OsMASignalPeriod=9; extern int OsMAPrice=0; extern int ExtrLeftBars=2; // áàðîâ ñëåâà îò ýêñòðåìóìà extern int ExtrRightBars=1; // áàðîâ ñïðàâà îò ýêñòðåìóìà extern double PlusSens=0.0001; extern double MinusSens=-0.0001; bool DrawLinesSW=false; bool DrawLinesChW=false; color Col_Peak_1=Red; color Col_Peak_2=DeepPink; color Col_Trough_1=LimeGreen; color Col_Trough_2=YellowGreen; string ShortName0="ZX"; extern string ShortName="DPTOsMA"; //---- buffers double PlusUp[]; double PlusDn[]; double MinusDn[]; double MinusUp[]; double Dot1[]; double Dot2[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0,PlusUp); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexBuffer(1,PlusDn); SetIndexStyle(2,DRAW_HISTOGRAM); SetIndexBuffer(2,MinusDn); SetIndexStyle(3,DRAW_HISTOGRAM); SetIndexBuffer(3,MinusUp); SetIndexStyle(4,DRAW_LINE); SetIndexBuffer(4,Dot1); SetIndexStyle(5,DRAW_LINE); SetIndexBuffer(5,Dot2); SetIndexLabel(0,""); SetIndexLabel(1,""); SetIndexLabel(2,""); SetIndexLabel(3,""); SetIndexLabel(4,""); SetIndexLabel(5,""); IndicatorShortName(ShortName); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start(){ int limit=Bars-IndicatorCounted(); for(int i=limit-1;i>=0;i--){ PlusUp[i]=0; PlusDn[i]=0; MinusDn[i]=0; MinusUp[i]=0; double osc1=iCustom(NULL,0,IND,OsMAFastPeriod,OsMASlowPeriod,OsMASignalPeriod,OsMAPrice,ExtrLeftBars,ExtrRightBars,PlusSens,MinusSens,DrawLinesSW,DrawLinesChW,Col_Peak_1,Col_Peak_2,Col_Trough_1,Col_Trough_2,ShortName0,0,i); double osc2=iCustom(NULL,0,IND,OsMAFastPeriod,OsMASlowPeriod,OsMASignalPeriod,OsMAPrice,ExtrLeftBars,ExtrRightBars,PlusSens,MinusSens,DrawLinesSW,DrawLinesChW,Col_Peak_1,Col_Peak_2,Col_Trough_1,Col_Trough_2,ShortName0,0,i+1); Dot1[i]=iCustom(NULL,0,IND,OsMAFastPeriod,OsMASlowPeriod,OsMASignalPeriod,OsMAPrice,ExtrLeftBars,ExtrRightBars,PlusSens,MinusSens,DrawLinesSW,DrawLinesChW,Col_Peak_1,Col_Peak_2,Col_Trough_1,Col_Trough_2,ShortName0,1,i); Dot2[i]=iCustom(NULL,0,IND,OsMAFastPeriod,OsMASlowPeriod,OsMASignalPeriod,OsMAPrice,ExtrLeftBars,ExtrRightBars,PlusSens,MinusSens,DrawLinesSW,DrawLinesChW,Col_Peak_1,Col_Peak_2,Col_Trough_1,Col_Trough_2,ShortName0,2,i); int Case=0; if(osc1>0){ if(osc1>osc2){ Case=1; } if(osc1<osc2){ Case=2; } } if(osc1<0){ if(osc1<osc2){ Case=3; } if(osc1>osc2){ Case=4; } } if(Case==0){ if(PlusUp[i+1]!=0){ Case=1; } if(PlusDn[i+1]!=0){ Case=2; } if(MinusDn[i+1]!=0){ Case=3; } if(MinusUp[i+1]!=0){ Case=4; } } switch(Case){ case 1: PlusUp[i]=osc1; break; case 2: PlusDn[i]=osc1; break; case 3: MinusDn[i]=osc1; break; case 4: MinusUp[i]=osc1; break; } } return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Implements a curve of type DRAW_HISTOGRAM
Implements a curve of type DRAW_LINE
Indicators Used:
Custom Indicators Used:
IND
Order Management characteristics:
Other Features: