F3a_AO
Miscellaneous
Implements a curve of type %1It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
F3a_AO
//+------------------------------------------------------------------+
//|                                                       F3a_AO.mq4 |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2004, MetaQuotes Software Corp."
#property  link      "http://www.metaquotes.net/"
#property  link      "Alert by GOEN"

//+------------+-----------------------------------------------------+
//  Bookkeeper: Ïîäïðàâèë íåìíîãî ïî ñâîåìó
//  Íåîáõîäèìî íàëè÷èå NavelEMA.mq4
//  Presence NavelEMA.mq4 is necessary 
//  Íåîáõîäèìî íàëè÷èå TrendForce_3.mq4
//  Presence TrendForce_3.mq4 is necessary 
//+------------------------------------------------------------------+
#property  indicator_chart_window
#property  indicator_buffers 4
#property  indicator_color1  Green
#property  indicator_color2  Red
#property  indicator_color3  Green
#property  indicator_color4  Red
extern int  MaxBars=500;
extern int  MA_Filtr=3;
extern int  MA_Fast=13;
extern int  MA_Slow=144;
extern bool WithAlert=false;
extern bool WithComment=true;
double up_buffer[];
double dn_buffer[];
double up1_buffer[];
double dn1_buffer[];
double ind_buffer[];
datetime lastalert=0, lastcomment=0;
//+------------------------------------------------------------------+
int deinit()
  {
   Comment("");
  }
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(5);
   SetIndexStyle(0,DRAW_ARROW);//
   SetIndexStyle(1,DRAW_ARROW);//
   SetIndexArrow(0,233); 
   SetIndexArrow(1,234); 
   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   SetIndexStyle(2,DRAW_ARROW,EMPTY,1);//
   SetIndexStyle(3,DRAW_ARROW,EMPTY,1);//
   SetIndexArrow(2,233); 
   SetIndexArrow(3,234); 
   SetIndexEmptyValue(2,0.0);
   SetIndexEmptyValue(3,0.0);
   SetIndexDrawBegin(0,MA_Slow+2);
   SetIndexDrawBegin(1,MA_Slow+2);
   SetIndexDrawBegin(2,MA_Slow+2);
   SetIndexDrawBegin(3,MA_Slow+2);
   if(!SetIndexBuffer(0,up_buffer) &&
      !SetIndexBuffer(1,dn_buffer) &&
      !SetIndexBuffer(2,up1_buffer) &&
      !SetIndexBuffer(3,dn1_buffer) &&
      !SetIndexBuffer(4,ind_buffer))
      Print("cannot set indicator buffers!");
   return(0);
  }
//+------------------------------------------------------------------+
//| Awesome Oscillator                                               |
//+------------------------------------------------------------------+
int start()
  {
   int    limit;
   int    counted_bars=IndicatorCounted();
   double prev, current;
   double upforce, downforce;
   static datetime lastalert;
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   if(limit>MaxBars) limit=MaxBars;
   for(int i=0; i<limit; i++)
      ind_buffer[i]=iCustom(NULL,0,"NavelEMA",MA_Fast,0,0,i)-
                    iCustom(NULL,0,"NavelEMA",MA_Slow,0,0,i);
   for(i=limit; i>=0; i--)
     {
      current=iCustom(NULL,0,"NavelEMA",MA_Filtr,0,0,i);
      prev=iCustom(NULL,0,"NavelEMA",MA_Filtr,0,0,i+1);
      upforce=iCustom(NULL,0,"TrendForce_3",MaxBars,false,0,i);
      downforce=iCustom(NULL,0,"TrendForce_3",MaxBars,false,1,i);
      if(ind_buffer[i]>ind_buffer[i+1] && current>=prev &&
         ind_buffer[i+1]<=ind_buffer[i+2])
      {
         if(upforce>25)
         {
            up_buffer[i]=0;
            up1_buffer[i]=Low[i]-Point*10;
         }
         else
         {
            up1_buffer[i]=0;
            up_buffer[i]=Low[i]-Point*10;
         }
      }
      else { up_buffer[i]=0.0; up1_buffer[i]=0.0; }
      if(ind_buffer[i]<ind_buffer[i+1] && current<=prev &&
         ind_buffer[i+1]>=ind_buffer[i+2])
         if(downforce<-25)
         {
            dn_buffer[i]=0;
            dn1_buffer[i]=High[i]+Point*10;
         }
         else
         {
            dn1_buffer[i]=0;
            dn_buffer[i]=High[i]+Point*10;
         }
      else { dn_buffer[i]=0.0; dn1_buffer[i]=0.0; }
     }
   if(WithAlert==true && lastalert!=Time[0])
   { 
      if (up_buffer[0]>Point || up1_buffer[0]>Point)
      {  
         Alert("Buy " +Symbol()+"_"+Period()+" "+
               " "+DoubleToStr(MarketInfo(Symbol(),MODE_ASK),Digits)+
               " "+TimeToStr(TimeCurrent(),TIME_MINUTES));
         lastalert=Time[0];
      }
      if (dn_buffer[0]>Point || dn1_buffer[0]>Point)
      {  
         Alert("Sell " +Symbol()+"_"+Period()+
               " "+DoubleToStr(MarketInfo(Symbol(),MODE_BID),Digits)+
               " "+TimeToStr(TimeCurrent(),TIME_MINUTES));
         lastalert=Time[0];
      }
   }
   if(WithComment==true && lastcomment!=Time[0])
   { 
      if (up_buffer[0]>Point || up1_buffer[0]>Point)
      {  
         lastcomment=Time[0];
         Comment("Buy ",Symbol(),"_",Period()," ",
               " "+DoubleToStr(Close[0],Digits));
      }
      if (dn_buffer[0]>Point || dn1_buffer[0]>Point)
      {  
         lastcomment=Time[0];
         Comment("Sell ",Symbol(),"_",Period(),
               " "+DoubleToStr(Close[0],Digits));
      }
   }
   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 ---