KG Momentum V.1.1a Current





#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_separate_window
#property indicator_levelstyle 0
#property indicator_buffers 2
#property indicator_color1 MediumBlue
#property indicator_color2 Red

double g_period_76 = 500.0;
extern double Filter_1 = 4.0;
extern int Price_Type = 0;
int g_ma_method_96 = MODE_LWMA;
extern bool Alert_ON = FALSE;
extern bool EmailON = FALSE;
string gs_108;
string gs_116;
string gs_124;
double g_ibuf_132[];
double g_ibuf_136[];
int gi_140 = 0;
int gi_144 = 0;

int init() {
   string ls_0;
   SetIndexStyle(0, DRAW_LINE);
   SetIndexBuffer(0, g_ibuf_132);
   SetIndexStyle(1, DRAW_LINE);
   SetIndexBuffer(1, g_ibuf_136);
   IndicatorShortName(ls_0);
   SetIndexLabel(0, ls_0);
   return (0);
}

int start() {
   int l_ind_counted_4 = IndicatorCounted();
   if (Bars <= g_period_76) return (0);
   if (l_ind_counted_4 < 1) for (int li_0 = 1; li_0 <= g_period_76; li_0++) g_ibuf_132[Bars - li_0] = 0.0;
   li_0 = Bars - g_period_76 - 1.0;
   if (l_ind_counted_4 >= g_period_76) li_0 = Bars - l_ind_counted_4 - 1;
   while (li_0 >= 0) {
      g_ibuf_132[li_0] = 100.0 * iMA(NULL, 0, g_period_76, 0, MODE_LWMA, Price_Type, li_0) / iMA(NULL, 0, g_period_76, 0, MODE_LWMA, Price_Type, li_0 + 1) - 100.0;
      li_0--;
   }
   int li_8 = Bars - l_ind_counted_4;
   for (int li_12 = 0; li_12 < li_8; li_12++) {
      g_ibuf_132[li_12] = iMAOnArray(g_ibuf_132, Bars, Filter_1, 0, g_ma_method_96, li_12);
      g_ibuf_136[li_12] = iMAOnArray(g_ibuf_132, Bars, Filter_1, 1, g_ma_method_96, li_12);
      if (g_ibuf_132[li_12] > g_ibuf_132[li_12 + 1]) gs_108 = "Up";
      if (g_ibuf_132[li_12] < g_ibuf_132[li_12 + 1]) gs_108 = "Down";
      if (g_ibuf_132[li_12] == g_ibuf_132[li_12 + 1]) gs_108 = "Flat";
      if (g_ibuf_136[li_12] > g_ibuf_136[li_12 + 1]) gs_116 = "Up";
      if (g_ibuf_136[li_12] < g_ibuf_136[li_12 + 1]) gs_116 = "Down";
      if (g_ibuf_136[li_12] == g_ibuf_136[li_12 + 1]) gs_116 = "Flat";
      if (g_ibuf_132[li_12] > g_ibuf_136[li_12]) gs_124 = "CROSSED UP";
      if (g_ibuf_132[li_12] < g_ibuf_136[li_12]) gs_124 = "CROSSED DOWN";
      if (g_ibuf_132[li_12] == g_ibuf_136[li_12]) gs_124 = "NEUTRAL";
      if (g_ibuf_132[li_12] < g_ibuf_136[li_12] && g_ibuf_132[li_12 + 1] > g_ibuf_136[li_12 + 1]) {
         if (li_12 == 0 && gi_144 == FALSE) {
            gi_144 = TRUE;
            gi_140 = FALSE;
            if (Alert_ON) {
               Alert("SELL signal at Ask=", Ask, 
                  "\n Bid=", Bid, 
                  "\n Date=", TimeToStr(TimeCurrent(), TIME_DATE), " ", TimeHour(TimeCurrent()), ":", TimeMinute(TimeCurrent()), 
               "\n Symbol=", Symbol(), " Period=", Period());
            }
            if (EmailON) {
               SendMail("SELL signal alert", "SELL signal at Ask=" + DoubleToStr(Ask, 4) + ", Bid=" + DoubleToStr(Bid, 4) + ", Date=" + TimeToStr(TimeCurrent(), TIME_DATE) + " " +
                  TimeHour(TimeCurrent()) + ":" + TimeMinute(TimeCurrent()) + " Symbol=" + Symbol() + " Period=" + Period());
            }
         }
      }
      if (g_ibuf_132[li_12] > g_ibuf_136[li_12] && g_ibuf_132[li_12 + 1] < g_ibuf_136[li_12 + 1]) {
         if (li_12 == 0 && gi_140 == FALSE) {
            gi_140 = TRUE;
            gi_144 = FALSE;
            if (Alert_ON) {
               Alert("BUY signal at Ask=", Ask, 
                  "\n Bid=", Bid, 
                  "\n Time=", TimeToStr(TimeCurrent(), TIME_DATE), " ", TimeHour(TimeCurrent()), ":", TimeMinute(TimeCurrent()), 
               "\n Symbol=", Symbol(), " Period=", Period());
            }
            if (EmailON) {
               SendMail("BUY signal alert", "BUY signal at Ask=" + DoubleToStr(Ask, 4) + ", Bid=" + DoubleToStr(Bid, 4) + ", Date=" + TimeToStr(TimeCurrent(), TIME_DATE) + " " +
                  TimeHour(TimeCurrent()) + ":" + TimeMinute(TimeCurrent()) + " Symbol=" + Symbol() + " Period=" + Period());
            }
         }
      }
   }
   IndicatorShortName("KG Mom V.1.1a   (" + gs_108 + " " + gs_116 + ")     " + gs_124 + "    ");
   return (0);
}



Sample





Analysis



Market Information Used:



Indicator Curves created:

Implements a curve of type DRAW_LINE


Indicators Used:

Moving average indicator


Custom Indicators Used:

Order Management characteristics:

Other Features:

It issuies visual alerts to the screen
It sends emails