Download MetaTrader 5

Explanation of a Ae

To add comments, please log in or register
texoro
139
texoro  
    #property indicator_chart_window
    #property indicator_buffers 2
    #property indicator_color1 DarkGreen
    #property indicator_width1 3
    #property indicator_color2 Green
    #property indicator_width2 3

    extern string note1 = "Stochastic settings";
    extern string note2 = "default = Stoch(5,3,3)";
    extern int       KPeriod1     =  5;
    extern int       DPeriod1     =  3;
    extern int       Slowing1     =  3;
    extern string note3 = "0=sma, 1=ema, 2=smma, 3=lwma";
    extern int       MAMethod1    =   0;
    extern string note4 = "0=high/low, 1=close/close";
    extern int       PriceField1  =   1;

    extern string note5 = "--------------------------------------------";
    extern string note6 = "Arrow Type";
    extern string note7 = "0=Thick, 1=Thin, 2=Hollow, 3=Round";
    extern string note8 = "4=Fractal, 5=Diagonal Thin";
    extern string note9 = "6=Diagonal Thick, 7=Diagonal Hollow";
    extern string note10 = "8=Thumb, 9=Finger";
    extern int ArrowType=3;
    extern string note11 = "--------------------------------------------";
    extern string note12 = "turn on Alert = true; turn off = false";
    extern bool AlertOn = true;


    double CrossUp[];
    double CrossDown[];

    string AlertPrefix;
    string GetTimeFrameStr() {
       switch(Period())
       {
          case 1 : string TimeFrameStr="M1"; break;
          case 5 : TimeFrameStr="M5"; break;
          case 15 : TimeFrameStr="M15"; break;
          case 30 : TimeFrameStr="M30"; break;
          case 60 : TimeFrameStr="H1"; break;
          case 240 : TimeFrameStr="H4"; break;
          case 1440 : TimeFrameStr="D1"; break;
          case 10080 : TimeFrameStr="W1"; break;
          case 43200 : TimeFrameStr="MN1"; break;
          default : TimeFrameStr=Period();
       }
       return (TimeFrameStr);
       }

    //+------------------------------------------------------------------+
    //| Custom indicator initialization function                         |
    //+------------------------------------------------------------------+
    int init()
      {
    //---- indicators
       if (ArrowType == 0) {
          SetIndexStyle(0,DRAW_ARROW);
          SetIndexArrow(0, 233);
          SetIndexStyle(1,DRAW_ARROW);
          SetIndexArrow(1, 234);
       }
       else if (ArrowType == 1) {
          SetIndexStyle(0,DRAW_ARROW);
          SetIndexArrow(0, 225);
          SetIndexStyle(1,DRAW_ARROW);
          SetIndexArrow(1, 226);
       }
       else if (ArrowType == 2) {
          SetIndexStyle(0,DRAW_ARROW);
          SetIndexArrow(0, 241);
          SetIndexStyle(1,DRAW_ARROW);
          SetIndexArrow(1, 242);
       }
       else if (ArrowType == 3) {
          SetIndexStyle(0,DRAW_ARROW);
          SetIndexArrow(0, 221);
          SetIndexStyle(1,DRAW_ARROW);
          SetIndexArrow(1, 222);
       }
       else if (ArrowType == 4) {
          SetIndexStyle(0,DRAW_ARROW);
          SetIndexArrow(0, 217);
          SetIndexStyle(1,DRAW_ARROW);
          SetIndexArrow(1, 218);
       }
       else if (ArrowType == 5) {
          SetIndexStyle(0,DRAW_ARROW);
          SetIndexArrow(0, 228);
          SetIndexStyle(1,DRAW_ARROW);
          SetIndexArrow(1, 230);
       }
       else if (ArrowType == 6) {
          SetIndexStyle(0,DRAW_ARROW);
          SetIndexArrow(0, 236);
          SetIndexStyle(1,DRAW_ARROW);
          SetIndexArrow(1, 238);
       }
       else if (ArrowType == 7) {
          SetIndexStyle(0,DRAW_ARROW);
          SetIndexArrow(0, 246);
          SetIndexStyle(1,DRAW_ARROW);
          SetIndexArrow(1, 248);
       }
       else if (ArrowType == 8) {
          SetIndexStyle(0,DRAW_ARROW);
          SetIndexArrow(0, 67);
          SetIndexStyle(1,DRAW_ARROW);
          SetIndexArrow(1, 68);
       }
       else if (ArrowType == 9) {
          SetIndexStyle(0,DRAW_ARROW);
          SetIndexArrow(0, 71);
          SetIndexStyle(1,DRAW_ARROW);
          SetIndexArrow(1, 72);
       }

       SetIndexBuffer(0, CrossUp);
       SetIndexBuffer(1, CrossDown);
       AlertPrefix=Symbol()+" ("+GetTimeFrameStr()+"):  ";
    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    //| Custom indicator deinitialization function                       |
    //+------------------------------------------------------------------+
    int deinit()
      {
    //----

    //----
       return(0);
      }
    //+------------------------------------------------------------------+
    bool NewBar()
    {
       static datetime lastbar;
       datetime curbar = Time[0];
       if(lastbar!=curbar)
       {
          lastbar=curbar;
          return (true);
         
       }
       else
       {
          return(false);
       }
    }   
    //+------------------------------------------------------------------+
    //| Custom indicator iteration function                              |
    //+------------------------------------------------------------------+
    int start() {
       int limit, i, counter;
       double stochastic1now, stochastic2now, stochastic1previous, stochastic2previous, stochastic1after, stochastic2after;
       double Range, AvgRange;
       int counted_bars=IndicatorCounted();
    //---- check for possible errors
       if(counted_bars<0) return(-1);
    //---- last counted bar will be recounted
       if(counted_bars>0) counted_bars--;

       limit=Bars-counted_bars;
       
       for(i = 0; i <= limit; i++) {
       
          counter=i;
          Range=0;
          AvgRange=0;
         
          stochastic1now = iStochastic(NULL,0,KPeriod1,DPeriod1,Slowing1,MAMethod1,PriceField1,0,i);
          stochastic1previous = iStochastic(NULL,0,KPeriod1,DPeriod1,Slowing1,MAMethod1,PriceField1,0,i+1);
          stochastic1after = iStochastic(NULL,0,KPeriod1,DPeriod1,Slowing1,MAMethod1,PriceField1,0,i-1);
          stochastic2now = iStochastic(NULL,0,KPeriod1,DPeriod1,Slowing1,MAMethod1,PriceField1,1,i);
          stochastic2previous = iStochastic(NULL,0,KPeriod1,DPeriod1,Slowing1,MAMethod1,PriceField1,1,i+1);
          stochastic2after = iStochastic(NULL,0,KPeriod1,DPeriod1,Slowing1,MAMethod1,PriceField1,1,i-1);
               
          if ((stochastic1now > stochastic2now) && (stochastic1previous < stochastic2previous) && (stochastic1after > stochastic2after))
                {
                       CrossUp[i] = Low[i] - Range*1.5;
                       if (AlertOn && NewBar()) {
                          Alert(AlertPrefix+"Segnale di call:",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()));
                          //Alert(AlertPrefix+"Stoch ("+KPeriod1+","+DPeriod1+","+Slowing1+") %K crosses UP %D\nBUY signal @ Ask = ",Ask,"; Bid = ",Bid,"\nDate & Time = ",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()));
                         
                                               }   
                        
          }
             
          if ((stochastic1now < stochastic2now) && (stochastic1previous > stochastic2previous) && (stochastic1after < stochastic2after)) {
                     CrossDown[i] = High[i] + Range*1.5;
                       if (AlertOn && NewBar()){
                           Alert(AlertPrefix+"Segnale di Put:",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()));
                          //Alert(AlertPrefix+"Stoch ("+KPeriod1+","+DPeriod1+","+Slowing1+") %K crosses DOWN %D\nSELL signal @ Ask = ",Ask,"; Bid = ",Bid,"\nDate & Time = ",TimeToStr(CurTime(),TIME_DATE)," ",TimeHour(CurTime()),":",TimeMinute(CurTime()));
                       }
                      
          }

       }
       
       return(0);
    }
Of this program I would like to know:
1) What is the function that brings up the arrows on the chart?
2) What does this line: CrossUp [i] = Low [i] - Range * 1.5 / Crossdown [i] = High [i] + Range * 1.5; what is the use?
3) I spiegatr function "bool NewBar ()"?
4) "Time [0]" is the last bar ?
whroeder1
17122
whroeder1  
texcs: Of this program I would like to know:
1) What is the function that brings up the arrows on the chart?
2) What does this line: CrossUp [i] = Low [i] - Range * 1.5 / Crossdown [i] = High [i] + Range * 1.5; what is the use?
3) I spiegatr function "bool NewBar ()"?
4) "Time [0]" is the last bar ?
  1. None, the terminal draws the arrows.
  2. Tells the terminal if and where to draw the arrows
  3. English only. NewBar returns true at the first tick of a new bar. If(alert && NewBar) results in only one alert at the start of a bar not an alert per tick.
  4. Index=0 is the last bar. Each bar has Open[], High[], Low[], Close[], Time[], and (tick) Volume[]
Verbose coding 
Simplified 
if (ArrowType == 0) {
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0, 233);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1, 234);
}
else if (ArrowType == 1) {
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0, 225);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1, 226);
}
else if (ArrowType == 2) {
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0, 241);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1, 242);
}
else if (ArrowType == 3) {
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0, 221);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1, 222);
}
else if (ArrowType == 4) {
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0, 217);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1, 218);
}
else if (ArrowType == 5) {
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0, 228);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1, 230);
}
else if (ArrowType == 6) {
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0, 236);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1, 238);
}
else if (ArrowType == 7) {
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0, 246);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1, 248);
}
else if (ArrowType == 8) {
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0, 67);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1, 68);
}
else if (ArrowType == 9) {
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0, 71);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1, 72);
}
int Arrow0[] = { 233, 225, 241, 221, 217, 228, 236, 246, 67, 71 }
int Arrow1[] = { 234, 226, 242, 222, 218, 230, 238, 248, 68, 72 }
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0, Arrow0[ArrowType]);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1, Arrow1[ArrowType]);

texoro
139
texoro  
Explain to me better "
  1. Tells the terminal if and where to draw the arrows
whroeder1
17122
whroeder1  
texcs: Explain to me better Tells the terminal if and where to draw the arrows
If you leave a buffer element empty (EMPTY_VALUE) it doesn't draw the line or arrow
If you put a value in the buffer, it draws the line or arrow at the price.
texoro
139
texoro  
And explain to me how they are drawn green arrows?
To add comments, please log in or register