RK_MindHero mail

Author: Mindherostar Inc.
RK_MindHero mail
Indicators Used
Indicator of the average true range
Miscellaneous
Implements a curve of type %1It plays sound alertsIt sends emails
0 Views
0 Downloads
0 Favorites
RK_MindHero mail
//+------------------------------------------------------------------+
//|                                                     Mindhero.mq4 |
//|                                                www.mindrends.com |
//|                                                        superhero |
//+------------------------------------------------------------------+
#property copyright "Mindherostar Inc."
#property link      "www.mindrends.com"
//----
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
//---- input parameters
extern int  NumBars=500;

//added by rosdikasim@gmail.com
extern bool Play_Sound = true;
extern int  Maximum_Alert = 5;
extern string Sound_WAV = "expert.wav";
extern bool Send_Email = false;
extern bool Display_Comment = true;

//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];

double spread;
int noOfAlert;
bool emailAlreadySent = false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() {
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexArrow(0,233);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexArrow(1,234);
   
   noOfAlert = Maximum_Alert;
   
   return(0);
}

int deinit() {
   return(0);
}

int start() {
   int      counted_bars = IndicatorCounted();
   int      artp = 7;
   int      numOfBars = 0;
   int      Shift = 0;
   int      glava = 0;
   int      J = 0;
   int      Curr = 0;
   int      plotted = -1;   //1 = plotted long, 2 = plotted short, -1 = not plotted
   
   bool      river = True;
   
   double    Emaxtra=0;
   double    widcha=0;
   double    trueRange=0;
   double    Values[100];   
   double    averageTrueRange=0;   
   double    Weight=0;   
   double    dartp=7.0;
   double    cecf=0.7;
   double    Range1=0;
   double    val1=0;
   double    val2=0;            
   double    r1=0;
   double    s=2;

   spread = MarketInfo(Symbol(),MODE_SPREAD) * Point;

   if(Bars < NumBars) {
      numOfBars = Bars;
   }else{
      numOfBars = NumBars;
   }
   
   if(Close[numOfBars - 2] > Close[numOfBars - 1]) {
      river = True;
   }else{
      river = False;
   }
   
   Emaxtra = Close[numOfBars - 2];
   Shift = numOfBars - 3;
   
   while(Shift >= 0) {
      trueRange = spread + High[Shift] - Low[Shift];
      if(MathAbs(spread + High[Shift] - Close[Shift + 1]) > trueRange){
         trueRange = MathAbs(spread + High[Shift] - Close[Shift + 1]);
      }
      if(MathAbs(Low[Shift] - Close[Shift + 1]) > trueRange) {
         trueRange = MathAbs(Low[Shift] - Close[Shift + 1]);
      }
      
      if (Shift == numOfBars - 3) {
         for(J=0; Shift <= artp-1; J++) {
            Values[J] = trueRange;
         }
      }
      
      Values[glava] = trueRange;
      averageTrueRange = 0;
      Weight = artp;
      Curr = glava;
      
      for(J=0; J<=artp - 1; J++) { 
         averageTrueRange += Values[Curr] * Weight;
         Weight -= 1.0;
         Curr--;
         if (Curr == -1) { Curr = artp - 1; }
      }
      
      averageTrueRange = 2.0 * averageTrueRange /(dartp * (dartp + 1.0));
      glava++;      
      if (glava == artp) { glava = 0; }
      
      widcha = cecf * averageTrueRange;
      
      if (river && Low[Shift] < Emaxtra - widcha) {
         river = False;
         Emaxtra = spread + High[Shift];
      }
      
      if (!river && spread+ High[Shift] > Emaxtra + widcha) {
         river = True;
         Emaxtra = Low[Shift];
      }
      
      if (river && Low[Shift] > Emaxtra) {
         Emaxtra=Low[Shift];
      }
      
      if (!river && spread+ High[Shift] < Emaxtra) {
         Emaxtra=spread+ High[Shift];
      }
      
      Range1 = iATR(NULL,0,10,Shift);
      val1=0;
      val2=0;
      
      if (river) {
         if (plotted != 1) {
            r1 = Low[Shift] - Range1 * s/3.0; 
         } else if (plotted == 1) {
            r1 = -1.0;
         }
         
         if (r1 > 0) {
            val1 = r1;
            val2 = 0;
            if(Shift == 0) {
               if(Play_Sound && noOfAlert > 0) { 
                  PlaySound(Sound_WAV); 
                  noOfAlert -= 1;
               }
               if(Send_Email && !emailAlreadySent) { 
                  SendMail("RK MindHero: " + Symbol(), "Go long on " + Symbol() + " now!");
                  emailAlreadySent = true;
               }
               if(Display_Comment) { Comment("Mind Hero > Go Long!"); }
            }
         } else {
            val1 = 0;
            val2 = 0;
            if(Shift == 0) { 
               noOfAlert = Maximum_Alert; 
               emailAlreadySent = false;
            }
         }
         
         ExtMapBuffer1[Shift] = val1;
         plotted = 1;
      } else {
         if (plotted!=2) {
            r1 = spread + High[Shift] + Range1 * s/3.0;
         } else if (plotted == 2) {
            r1 = -1.0;
         }
         
         if (r1 > 0) {
            val1 = 0;
            val2 = r1;
            if(Shift == 0) {               
               if(Play_Sound && noOfAlert > 0) { 
                  PlaySound(Sound_WAV); 
                  noOfAlert -= 1;
               }
               if(Send_Email && !emailAlreadySent) { 
                  SendMail("RK MindHero: " + Symbol(), "Go short on " + Symbol() + " now!");
                  emailAlreadySent = true;
               }               
               if(Display_Comment) { Comment("Mind Hero > Go Short!"); }
            }
         } else {
            val1 = 0;
            val2 = 0;
            if(Shift == 0) { 
               noOfAlert = Maximum_Alert; 
               emailAlreadySent = false;
            }
         }
         
         ExtMapBuffer2[Shift]=val2;
         plotted = 2;
      }
      Shift--;
   }

   return(0);
}

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