PriceTrend1x2

Author: Kalenzo
PriceTrend1x2
9 Views
0 Downloads
0 Favorites
PriceTrend1x2
//+------------------------------------------------------------------+
//|                                                PriceTrender2.mq4 |
//|                                                          Kalenzo |
//|                                      bartlomiej.gorski@gmail.com |
//+------------------------------------------------------------------+
//mod.fxtsd   increase

#property copyright "Kalenzo"
#property link      "bartlomiej.gorski@gmail.com"
#property indicator_buffers 3
#property indicator_color1 Red
#property indicator_color2 Yellow
#property indicator_color3 Green

#property indicator_width1     2
#property indicator_width2     2

extern bool Comments=false;

extern int TimeFrame2  = 60,
           Ma2Length = 5,
           Ma2Type   = 0,
           Ma2Price  = 0;
extern int TimeFrame1  = 30,
           Ma1Length = 7,
           Ma1Type   = 0,
           Ma1Price  = 0;
extern int TimeFrame   = 0,
           MaLength  = 9,
           MaType    = 0,
           MaPrice   = 0;
           
           

double price[],trend[],trend2[];
double alertBar;
double prev;
double last;
string info;
string infop;
string infoprev;
string infomini;
string ENTRY_price;
string entry_trend2;
string WAIT_price;
string wait_price;
string MINI;
string mini;
string sname;
extern bool minisounds=true;
 
#property indicator_separate_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- 
SetIndexBuffer(0,trend2);
SetIndexBuffer(1,trend);
SetIndexBuffer(2,price);

SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);

   TimeFrame =MathMax(TimeFrame, Period());
   TimeFrame1=MathMax(TimeFrame1,Period());
   TimeFrame2=MathMax(TimeFrame2,Period());



   string name  = " MA ("+MaLength+") ["+TimeFrame+"] ";
   string name1 = " MA1 ("+Ma1Length+") ["+TimeFrame1+"] ";
   string name2 = " MA2 ("+Ma2Length+") ["+TimeFrame2+"] ;";
          sname =name+name1+name2;
   IndicatorShortName("PT:");


   SetIndexLabel(2,name);
   SetIndexLabel(1,name1);
   SetIndexLabel(0,name2);

    
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    limit, bigshift, bigshift1, bigshift2; 
   int    counted_bars=IndicatorCounted(); 
//---- 
   if (counted_bars<0) return(-1); 
   if (counted_bars>0) counted_bars--; 
   limit=Bars-counted_bars +TimeFrame2/Period();
    
   for (int i=limit; i>=0; i--) 
   { 
      
      bigshift    = iBarShift(Symbol(),TimeFrame, Time[i]); 
      bigshift1   = iBarShift(Symbol(),TimeFrame1,Time[i]); 
      bigshift2   = iBarShift(Symbol(),TimeFrame2,Time[i]); 
      
//     price[i] = getPrice(bigshift);
       price[i] = iMA(Symbol(),TimeFrame, MaLength, 0,MaType, MaPrice, bigshift);
       trend[i] = iMA(Symbol(),TimeFrame1,Ma1Length,0,Ma1Type,Ma1Price,bigshift1);
       trend2[i]= iMA(Symbol(),TimeFrame2,Ma2Length,0,Ma2Type,Ma2Price,bigshift2);
   
   {ENTRY_price= "";entry_trend2= "";WAIT_price= "";wait_price= "";MINI= "";mini= "";info = "";infop = "";}

   //Trend UP/DOWN
     if ((price[i]> trend[i])&& (trend2[i]> trend[i])) {entry_trend2= "MAIN/UP";info = entry_trend2;}
     if ((price[i]< trend[i])&& (trend2[i]< trend[i])) {ENTRY_price=  "MAIN/DN";info = ENTRY_price;}

    if ((price[i]>= trend[i]|| trend2[i]> trend[i]) && info == "") {WAIT_price= "WAIT";info = WAIT_price;}
    if ((price[i]< trend[i] || trend2[i]< trend[i]) && info == "") {WAIT_price= "WAIT";info = WAIT_price;}

     if (price[i]> trend2[i]) {MINI= "MINI/UP";infop=MINI;}
     if (price[i]< trend2[i]) {mini= "MINI/DN";infop=mini;}

// Alerts on 
      if(infoprev == "") infoprev = info;
      if(infomini == "") infomini = infop;

     if(info != infoprev && info == "MAIN/UP" && Bars>alertBar) {Alert("Price Trend MAIN changing to UpTrend on ",Symbol()," Period ",Period());alertBar = Bars;infoprev = info;}      
     if(info != infoprev && info == "MAIN/DN" && Bars>alertBar) {Alert("Price Trend MAIN changing to DownTrend on ",Symbol()," Period ",Period());alertBar = Bars;infoprev = info;}
     if(minisounds == true && infomini != infop && infop == "MINI/UP" && Bars>alertBar) {Alert("Price Trend Mini changing to UpTrend on ",Symbol()," Period ",Period());alertBar = Bars;infomini = infop;}      
     if(minisounds == true && infomini != infop && infop == "MINI/DN" && Bars>alertBar) {Alert("Price Trend Mini changing to DownTrend on ",Symbol()," Period ",Period());alertBar = Bars;infomini = infop;}

// Alerts done

   ObjectCreate("ESIG2", OBJ_LABEL, WindowFind("PT:"), 0, 0);//TREND UP
        ObjectSetText("ESIG2",StringSubstr(entry_trend2,0),10, "Arial Bold", Lime);
        ObjectSet("ESIG2", OBJPROP_CORNER, 0);
        ObjectSet("ESIG2", OBJPROP_XDISTANCE, 250);
        ObjectSet("ESIG2", OBJPROP_YDISTANCE, 15);
   ObjectCreate("ESIG3", OBJ_LABEL, WindowFind("PT:"), 0, 0);//TREND DOWN
        ObjectSetText("ESIG3",StringSubstr(ENTRY_price,0),10, "Arial Bold", Red);
        ObjectSet("ESIG3", OBJPROP_CORNER, 0);
        ObjectSet("ESIG3", OBJPROP_XDISTANCE, 250);
        ObjectSet("ESIG3", OBJPROP_YDISTANCE, 15);
        
     
   ObjectCreate("ESIG4", OBJ_LABEL, WindowFind("PT:"), 0, 0);//WAIT
        ObjectSetText("ESIG4",StringSubstr(WAIT_price,0),10, "Arial Bold", Yellow);
        ObjectSet("ESIG4", OBJPROP_CORNER, 0);
        ObjectSet("ESIG4", OBJPROP_XDISTANCE, 263);
        ObjectSet("ESIG4", OBJPROP_YDISTANCE, 15);
   ObjectCreate("ESIG5", OBJ_LABEL, WindowFind("PT:"), 0, 0);//WAIT
        ObjectSetText("ESIG5",StringSubstr(wait_price,0),10, "Arial Bold", Yellow);
        ObjectSet("ESIG5", OBJPROP_CORNER, 0);
        ObjectSet("ESIG5", OBJPROP_XDISTANCE, 263);
        ObjectSet("ESIG5", OBJPROP_YDISTANCE, 15);     
     
      
   ObjectCreate("ESIG6", OBJ_LABEL, WindowFind("PT:"), 0, 0);//Mini UP
        ObjectSetText("ESIG6",StringSubstr(MINI,0),10, "Arial Bold", Lime);
        ObjectSet("ESIG6", OBJPROP_CORNER, 0);
        ObjectSet("ESIG6", OBJPROP_XDISTANCE, 253);
        ObjectSet("ESIG6", OBJPROP_YDISTANCE, 35);
   ObjectCreate("ESIG7", OBJ_LABEL, WindowFind("PT:"), 0, 0);//Mini DOWN
        ObjectSetText("ESIG7",StringSubstr(mini,0),10, "Arial Bold", Red);
        ObjectSet("ESIG7", OBJPROP_CORNER, 0);
        ObjectSet("ESIG7", OBJPROP_XDISTANCE, 253);
        ObjectSet("ESIG7", OBJPROP_YDISTANCE, 35);         
   } 
//----
 
   return(0);
  }
//+------------------------------------------------------------------+
/*
double getPrice(int shift)
{
   switch(Price)
   {
      case 0 : return ( iClose(Symbol(),TimeFrame,shift) );
      case 1 : return (iOpen(Symbol(),TimeFrame,shift));
      case 2 : return (iHigh(Symbol(),TimeFrame,shift));
      case 3 : return (iLow(Symbol(),TimeFrame,shift));
      case 4 : return ((iLow(Symbol(),TimeFrame,shift)+iHigh(Symbol(),TimeFrame,shift))/2);
      case 5 : return ((iClose(Symbol(),TimeFrame,shift)+iLow(Symbol(),TimeFrame,shift)+iHigh(Symbol(),TimeFrame,shift))/3);
      case 6 : return ((iOpen(Symbol(),TimeFrame,shift)+iClose(Symbol(),TimeFrame,shift)+iLow(Symbol(),TimeFrame,shift)+iHigh(Symbol(),TimeFrame,shift))/4);
   }
  
}

*/

Comments