JoeChalhoub_HeikenAshiSwingSignal

Author: Copyright � 2009, JoeChalhoub_HeikenAshiSwingSignal
JoeChalhoub_HeikenAshiSwingSignal
Price Data Components
Series array that contains close prices for each bar
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
JoeChalhoub_HeikenAshiSwingSignal
//+------------------------------------------------------------------+
//|                            JoeChalhoub_HeikenAshiSwingSignal.mq4 |
//|                                                  www.Rpchost.com |
//|                                            webmaster@rpchost.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, JoeChalhoub_HeikenAshiSwingSignal"
#property link      "webmaster@rpchost.com"
//----
#property indicator_chart_window
#property indicator_buffers 10
#property indicator_color1 LimeGreen
#property indicator_color2 FireBrick
#property indicator_color3 Green
#property indicator_color4 Red

   
#include <WinUser32.mqh>
#import "wininet.dll"

extern string    Symbol1       = "";
extern string    Symbol2       = "";


extern int TimeFrame=0;

extern int HzShift   =0;
extern int mtfHzShift=0;
extern int VrtShift  =0;
extern int maxbars   =2000;

int ticket;

extern string TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF";


double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];

double HeikenLowH1, HeikenHighH1,HeikenOpenH1,HeikenCloseH1;
double HeikenLowM5, HeikenHighM5,HeikenOpenM5,HeikenCloseM5;

double HeikenCloseH4_1,HeikenCloseH4_0;
double HeikenOpenH4_1,HeikenOpenH4_0;


double HeikenLowH1shift, HeikenHighH1shift,HeikenOpenH1shift,HeikenCloseH1shift;
double HeikenLowH4shift, HeikenHighH4shift;
double HeikenLowM5shift, HeikenHighM5shift,HeikenOpenM5shift,HeikenCloseM5shift;

double HeikenCloseH4_1shift,HeikenCloseH4_0shift;
double HeikenOpenH4_1shift,HeikenOpenH4_0shift;

string CurrShift;

//---- input parameters
extern string    separator1 = "*** OSMA Settings ***";
extern int       fastEMA = 12;
extern int       slowEMA = 26;
extern int       signal = 9;
extern string    separator2 = "*** Indicator Settings ***";
extern bool      drawDivergenceLines = true;
extern bool      displayAlert = true;
//---- buffers


extern int period=10;
extern int price=0; // 0 or other = (H+L)/2

extern bool Mode_Fast= False;
extern bool Signals= False;
extern int MA1period=9, MA2period=45;
extern string TypeHelp="SMA- 0, EMA - 1, SMMA - 2, LWMA- 3";
extern string TypeHelp2="John Hyden settings TypeMA1=0, TypeMA2=3";
extern int TypeMA1=0;
extern int TypeMA2=3;


static int cc,cc1;
static string strH4Trend;
  


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+


//---- buffers
double upOsMA[500];
double downOsMA[500];
double bullishDivergence[500];
double bearishDivergence[500];
   
double bullishDiverg[500];
double bearishDiverg[500];

static bool isBuy = false;
static bool isSell = false;

bool isBuySet, isSellSet;

double OsMA[500];

double upMA[500];
double downMA[500];
double bullishDivergenceMA[500];
double bearishDivergenceMA[500];

double point;

double bullishDivergenceMADeviation[500];
double bearishDivergenceMADeviation[500];


double MA[500];



double SLShort,SLLong, strTargetLong,strTargetShort,C0,C1,C2;
string Target,ask,SL,bid , strSell,strBuy;


extern bool    Debug = false;

#define  CHART_CMD_UPDATE_DATA            33324



//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+


int InternetAttemptConnect (int x);
  int InternetOpenA(string sAgent, int lAccessType, 
                    string sProxyName = "", string sProxyBypass = "", 
                    int lFlags = 0);
  int InternetOpenUrlA(int hInternetSession, string sUrl, 
                       string sHeaders = "", int lHeadersLength = 0,
                       int lFlags = 0, int lContext = 0);
  int InternetReadFile(int hFile, int& sBuffer[], int lNumBytesToRead, 
                       int& lNumberOfBytesRead[]);
  int InternetCloseHandle(int hInet);
#import

extern bool lines    = true;        // ïîêàçûâàòü âåðòèêàëüíûå ëèíèè â ìîìåíòû âûõîäà íîâîñòåé
extern bool texts    = true;        // ïîêàçûâàòü òåêñòîâûå íàäïèñè ñ îïèñàíèÿìè íîâîñòåé
extern bool comments = true;        // ïîêàçûâàòü ñïèñîê áëèæàéøèõ áóäóùèõ è ïðîøåäøèõ íîâîñòåé
extern int total_in_list = 10;      // êîëè÷åñòâî íîâîñòåé â ñïèñêå

extern bool high     = true;        // ïîêàçûâàòü âàæíûå íîâîñòè
extern bool medium   = true;        // ïîêàçûâàòü íîâîñòè ñðåäíåé âàæíîñòè
extern bool low      = true;        // ïîêàçûâàòü íîâîñòè ìàëîé âàæíîñòè

extern int update = 15;             // îáíîâëÿòü ñïèñîê íîâîñòåé êàæäûå 15 ìèíóò

extern bool auto = true;            // àâòî-âûáîð íîâîñòåé, ïîäõîäÿùèõ äëÿ âàëþòíîé ïàðû ãðàôèêà
extern bool eur = true;             // ïîêàçûâàòü íîâîñòè äëÿ îïðåäåëåííûõ âàëþò
extern bool usd = true;
extern bool jpy = true;
extern bool gbp = true;
extern bool chf = true;
extern bool cad = true;
extern bool aud = true;
extern bool nzd = true;

extern color high_color    = Maroon;         // öâåò âàæíûõ íîâîñòåé
extern color medium_color  = Sienna;         // öâåò îáû÷íûõ íîâîñòåé
extern color low_color     = DarkSlateGray;  // öâåò íåçíà÷èòåëüíûõ íîâîñòåé

extern bool russian = true;         // èñïîëüçîâàòü ôàéë ïåðåâîäà äëÿ ðóññèôèêàöèè íîâîñòåé

extern int server_timezone = 2;     // ÷àñîâîé ïîÿñ ñåðâåðà (Alpary - GMT+2)
extern int show_timezone   = 4;     // ïîêàçûâàòü âðåìÿ äëÿ ÷àñîâîãî ïîÿñà (Ìîñêâà - GMT+4)

extern bool alerts = true;          // ïðåäóïðåæäàòü î âûõîäå íîâîñòåé çâóêîâûìè ñèãíàëàìè
extern int  alert_before = 5;       // ïðåäóïðåæäàòü çà 5 ìèíóò äî âûõîäà íîâîñòåé
extern int  alert_every  = 30;      // çâóêîâûå ñèãíàëû êàæäûå 30 ñåêóíä

datetime NextTime;

datetime TTime[1000];

// -----------------------------------------------------------------------------------------------------------------------------
int TotalNews = 0;
string News[1000][10];
datetime LastUpdate = 0;
int NextNewsLine = 0;
int LastAlert = 0;
string Translate[1000][2];
int TotalTranslate = 0;

static string str;

string Filter1 = "";
string Filter2 = "";
   
static datetime time;

static bool resume = false;

double LPeak, LTrough;

// -----------------------------------------------------------------------------------------------------------------------------

int init()
  {
   
//---- indicators
  // SetIndexStyle(0, DRAW_HISTOGRAM, STYLE_SOLID, 2);
  // SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 2);
   SetIndexStyle(2, DRAW_ARROW);
   SetIndexStyle(3, DRAW_ARROW);
   SetIndexStyle(4, DRAW_NONE);
   SetIndexStyle(5, DRAW_ARROW);
   SetIndexStyle(6, DRAW_ARROW);
   SetIndexStyle(7, DRAW_NONE);
 //  SetIndexStyle(8, DRAW_ARROW);
 //  SetIndexStyle(9, DRAW_ARROW);
   
      
//----   SetIndexStyle(3, DRAW_LINE, EMPTY, 2, Violet);
   
   //SetIndexBuffer(0, upMA);
   //SetIndexBuffer(1, downMA);
   SetIndexBuffer(2, bullishDivergenceMA);
   SetIndexBuffer(3, bearishDivergenceMA);
   SetIndexBuffer(4, MA);
   SetIndexBuffer(5, bullishDivergence);
   SetIndexBuffer(6, bearishDivergence);
  //SetIndexBuffer(7, OsMA);
 //  SetIndexBuffer(8, SELLMA);
  // SetIndexBuffer(9, BUYMA);
   
  
   
//----   
   SetIndexArrow(0, 233);
   SetIndexArrow(1, 234);
   
   SetIndexArrow(5, 233);
   SetIndexArrow(6, 234);
   
    SetIndexArrow(8, 233);
   SetIndexArrow(9, 234);
   
   SetIndexArrow(10, 233);
   SetIndexArrow(11, 234);
   
   SetIndexArrow(15, 233);
   SetIndexArrow(16, 234);
   
   ObjectCreate("Symbol1",OBJ_LABEL,0,0,0,0,0);
   ObjectCreate("Symbol2",OBJ_LABEL,0,0,0,0,0);
   
   
//----

//---- indicators





   return(0);
  }
  
  


//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
      for(int i = ObjectsTotal() - 1; i >= 0; i--)
      {
        string label = ObjectName(i);
        if(StringSubstr(label, 0, 14) != "DivergenceLine")
            continue;
        ObjectDelete(label);   
      }
     
    
         
   return(0);
   
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+



int start()
  {
   
   
    string Symbol_1 = " † ";
    string Symbol_2 = "JOE CHALHOUB - Rpchost.com";
      
     
     ObjectSetText("Symbol1",Symbol_1,"7","Arial Black",Lime);
     ObjectSet("Symbol1",OBJPROP_XDISTANCE,3);     
     ObjectSet("Symbol1",OBJPROP_YDISTANCE,30);
     ObjectSet("Symbol1",OBJPROP_COLOR,Blue);
     ObjectSet("Symbol1",OBJPROP_CORNER,"111");
     
      ObjectSetText("Symbol2",Symbol_2,"7","Arial Black",Lime);
     ObjectSet("Symbol2",OBJPROP_XDISTANCE,3);     
     ObjectSet("Symbol2",OBJPROP_YDISTANCE,50);
     ObjectSet("Symbol2",OBJPROP_COLOR,Red);
     ObjectSet("Symbol2",OBJPROP_CORNER,"111");
     
     
  if(Symbol() == "GBPUSD" || Symbol() == "EURUSD")
       point = 0.0001;
   if(Symbol() == "USDJPY")
       point = 0.01;
   
  
   int countedBars = IndicatorCounted();
   if(countedBars < 0)
       countedBars = 0;
       
    
   countedBars = IndicatorCounted();
   CalculateIndicator(countedBars);
   
  
//----
   
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+



  
//+------------------------------------------------------------------+
//| M5 Indicator                                                                  |
//+------------------------------------------------------------------+
  
  
  void CalculateIndicator(int countedBars)
  {
  
   for(int i = 2000; i >= 0; i--)
   {
     setSignals(i);
   }     
     
  }



void setSignals(int shift)
{
   
//SSSS

if (shift < 2000)
{


   setHeiken();
      
   int iH0 = iBarShift(Symbol(),PERIOD_H1,iTime(Symbol(),PERIOD_M5,shift),false);
   int iH1 = iBarShift(Symbol(),PERIOD_H1,iTime(Symbol(),PERIOD_M5,shift),false)+1;
   int iH4 = iBarShift(Symbol(),PERIOD_H4,iTime(Symbol(),PERIOD_M5,shift),false);
      
   HeikenCloseH1 = iCustom(NULL,PERIOD_H1,"Heiken Ashi",3,1);
   HeikenOpenH1 = iCustom(NULL,PERIOD_H1,"Heiken Ashi",2,1);

   HeikenCloseM5 = iCustom(NULL,PERIOD_H1,"Heiken Ashi",3,0);
   HeikenOpenM5 = iCustom(NULL,PERIOD_H1,"Heiken Ashi",2,0);
   
   HeikenCloseH4_0 = iCustom(NULL,PERIOD_H4,"Heiken Ashi",3,0);
   HeikenOpenH4_0 = iCustom(NULL,PERIOD_H4,"Heiken Ashi",2,0);
   

   HeikenCloseH1shift = iCustom(NULL,PERIOD_H1,"Heiken Ashi",3,iH1);
   HeikenOpenH1shift = iCustom(NULL,PERIOD_H1,"Heiken Ashi",2,iH1);

   HeikenCloseM5shift = iCustom(NULL,PERIOD_H1,"Heiken Ashi",3,iH0);
   HeikenOpenM5shift = iCustom(NULL,PERIOD_H1,"Heiken Ashi",2,iH0);
   
   HeikenCloseH4_0shift = iCustom(NULL,PERIOD_H4,"Heiken Ashi",3,iH4);
   HeikenOpenH4_0shift = iCustom(NULL,PERIOD_H4,"Heiken Ashi",2,iH4);
   
   HeikenCloseH4_1shift = iCustom(NULL,PERIOD_H4,"Heiken Ashi",3,iH4+1);
   HeikenOpenH4_1shift = iCustom(NULL,PERIOD_H4,"Heiken Ashi",2,iH4+1);
   
   
   if(HeikenCloseH1shift < HeikenOpenH1shift)
   {
      HeikenLowH1shift  = iCustom(NULL,PERIOD_H1,"Heiken Ashi",1,iH1);
      HeikenHighH1shift = iCustom(NULL,PERIOD_H1,"Heiken Ashi",0,iH1);
   }
   if(HeikenCloseH1shift > HeikenOpenH1shift)
   {
      HeikenLowH1shift  = iCustom(NULL,PERIOD_H1,"Heiken Ashi",0,iH1);
      HeikenHighH1shift = iCustom(NULL,PERIOD_H1,"Heiken Ashi",1,iH1);
   }
   
   
   if(HeikenCloseH4_1shift < HeikenOpenH4_1shift)
   {
      HeikenLowH4shift  = iCustom(NULL,PERIOD_H4,"Heiken Ashi",1,iH4+1);
      HeikenHighH4shift = iCustom(NULL,PERIOD_H4,"Heiken Ashi",0,iH4+1);
   }
    if(HeikenCloseH4_1shift > HeikenOpenH4_1shift)
   {
      HeikenLowH4shift  = iCustom(NULL,PERIOD_H4,"Heiken Ashi",0,iH4+1);
      HeikenHighH4shift = iCustom(NULL,PERIOD_H4,"Heiken Ashi",1,iH4+1);
   }

  
   
   
       
         
         
if(isBuy == true && shift > 1)
{
    DrawPriceTrendLine(Time[shift], Time[shift], Low[shift],High[shift], Green, STYLE_SOLID);  
}
if((isBuy == true) && shift <= 1)
{
    DrawPriceTrendLine(Time[1], Time[1], Low[1],High[1], Green, STYLE_SOLID); 
    DrawPriceTrendLine(Time[0], Time[0], Low[0],High[0], Green, STYLE_SOLID); 
}
  
 

  if(isSell == true && shift > 1 )
  {
      DrawPriceTrendLine(Time[shift], Time[shift], High[shift], High[shift], Red, STYLE_SOLID);  
  }
  if((isSell == true) && shift <= 1 )
  {
      DrawPriceTrendLine(Time[1], Time[1], High[1], High[1], Red, STYLE_SOLID);  
      DrawPriceTrendLine(Time[0], Time[0], High[0], High[0], Red, STYLE_SOLID);  
  }
}


   //CLOSE BUY  
 
   if(iClose(Symbol(),PERIOD_M5,shift+1) < HeikenLowH4shift)
   {
        isBuy = false;  
   }

   //CLOSE SELL  

   if(iClose(Symbol(),PERIOD_M5,shift+1) > HeikenHighH4shift)
   {
        isSell = false;  
   }
   
   H4Trend(shift);


   //BUY
   if( strH4Trend == "up" && iClose(Symbol(),PERIOD_M5,shift+1) < HeikenOpenH1shift && HeikenCloseH1shift > HeikenOpenH1shift)
   {
              isBuy = true;
              isSell = false;
              DrawPriceTrendLine(Time[shift+1], Time[shift+1], Low[shift+1],High[shift+1], Green, STYLE_SOLID);
    }      

   
   //SELL 
   if(isBuy == false && strH4Trend == "down" && iClose(Symbol(),PERIOD_M5,shift+1) > HeikenOpenH1shift && HeikenCloseH1shift < HeikenOpenH1shift)
   {
              isBuy = false;
              isSell = true;
              DrawPriceTrendLine(Time[shift+1], Time[shift+1], High[shift+1], High[shift+1], Red, STYLE_DASHDOTDOT);   
    }  

}




void DrawPriceTrendLine(datetime x1, datetime x2, double y1, 
                        double y2, color lineColor, double style)
  {
   string label = "DivergenceLine2.1# " + DoubleToStr(x1, 0);
   //ObjectDelete(label);
   ObjectCreate(label, OBJ_ARROW, 0, x2, y1, x1, y2, 0, 0);
   
   ObjectSet(label,OBJPROP_COLOR,lineColor);
      
   ObjectSet(label,OBJPROP_SCALE,500);
      
   ObjectSet(label,OBJPROP_RAY, true);
   ObjectSet(label,OBJPROP_WIDTH,2);


   if(lineColor == Red)
      ObjectSet(label,OBJPROP_ARROWCODE,234);
   if(lineColor == Green)
      ObjectSet(label,OBJPROP_ARROWCODE,233);

  }


void H4Trend(int shift)
{

   int iH0 = iBarShift(Symbol(),PERIOD_H4,iTime(Symbol(),PERIOD_M5,shift),false);


   HeikenCloseH4_1 = iCustom(NULL,PERIOD_H4,"Heiken Ashi",3,iH0+1);
   HeikenOpenH4_1 = iCustom(NULL,PERIOD_H4,"Heiken Ashi",2,iH0+1);
     
   HeikenCloseH4_0 = iCustom(NULL,PERIOD_H4,"Heiken Ashi",3,iH0);
   HeikenOpenH4_0 = iCustom(NULL,PERIOD_H4,"Heiken Ashi",2,iH0);
  
   
   if(iClose(Symbol(),PERIOD_M5,shift+1) < HeikenLowH4shift)
   {
      strH4Trend = "down";
   }
   else if(iClose(Symbol(),PERIOD_M5,shift+1) > HeikenHighH4shift)
   {
      strH4Trend = "up";
   }
  
}


void setHeiken()
{
   
       
   datetime TimeArray[];
   ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame); 
 
   int   i, limit,y=0,counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   
         limit= Bars-counted_bars;
         limit= MathMax(limit,TimeFrame/Period());
         limit=MathMin(limit,maxbars);
   
   for(i=0,y=0;i<limit;i++)
   {
   if (Time[i]<TimeArray[y]) y++;

/***********************************************************   
   Add your main indicator loop below.  You can add the full
      indicator code or you can just reference an existing
      indicator with its iValue or iCustom.
   Rule 1:  Add extern inputs above for all neccesary values   
   Rule 2:  Use 'TimeFrame' for the indicator time frame
   Rule 3:  Use 'y' for your indicator's shift value
 **********************************************************/ 
 
   ExtMapBuffer1[i]=iCustom(NULL,TimeFrame,"Heiken Ashi",0,y)+VrtShift*Point;
   ExtMapBuffer2[i]=iCustom(NULL,TimeFrame,"Heiken Ashi",1,y)+VrtShift*Point;
   ExtMapBuffer3[i]=iCustom(NULL,TimeFrame,"Heiken Ashi",2,y)+VrtShift*Point;
   ExtMapBuffer4[i]=iCustom(NULL,TimeFrame,"Heiken Ashi",3,y)+VrtShift*Point;
   }
  
}


Comments