//+------------------------------------------------------------------+
//| Hamyar Zones.mq4 |
//| Copyright ? 2010,Farshad Saremifar |
//| www.4xline.com |
//+------------------------------------------------------------------+
#property copyright \"Copyright ? 2010,Farshad Saremifar\"
#property link \"www.4xline.com\"
#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 Green
#property indicator_style1 STYLE_DASH
#property indicator_width1 1
#property indicator_color2 Red
#property indicator_width2 4
#property indicator_color3 DodgerBlue
#property indicator_width3 4
#property indicator_color4 Red
#property indicator_style4 2
#property indicator_color5 DodgerBlue
#property indicator_style5 2
#property indicator_color6 Red
#property indicator_style6 2
#property indicator_color7 DodgerBlue
#property indicator_style7 2
//---- input parameters
extern string Copyright=\"Copyright ? 2010,Farshad Saremifar,www.4xline.com\";
extern int NumberOfDays=5;
extern int ATR_Period=25;
extern int StartHour=9;
extern int Quarter=0;
extern bool DayLightSaving=true;
extern int GMT_Shift=210;
int GMT_SHIFT=210;
int StartMinute=0;
int LondonTZ = 0;
int Tehran = 210;
int TokyoTZ = 540;
int NewYorkTZ = -300;
double BuyZone[], Pivot[], SellZone[];
double Buytp1[], Buytp2[], Selltp1[], Selltp2[];
double PDayHigh, PDayLow;
datetime PivotDayStartTime;
int Tehranshift;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorDigits(Digits);
SetIndexBuffer( 0, Pivot);
SetIndexBuffer( 1, SellZone);
SetIndexBuffer( 2, BuyZone);
SetIndexBuffer(3, Selltp1);
SetIndexBuffer( 4, Buytp1);
SetIndexBuffer(5, Selltp2);
SetIndexBuffer( 6, Buytp2);
SetIndexStyle(0, DRAW_LINE);
SetIndexStyle(1, DRAW_LINE);
SetIndexStyle(2, DRAW_LINE);
SetIndexStyle(3, DRAW_LINE);
SetIndexStyle(4, DRAW_LINE);
SetIndexStyle(5, DRAW_LINE);
SetIndexStyle(6, DRAW_LINE);
SetIndexEmptyValue( 0, EMPTY_VALUE );
SetIndexEmptyValue( 1, EMPTY_VALUE );
SetIndexEmptyValue( 2, EMPTY_VALUE );
SetIndexEmptyValue( 3, EMPTY_VALUE );
SetIndexEmptyValue( 4, EMPTY_VALUE );
SetIndexEmptyValue( 5, EMPTY_VALUE );
SetIndexEmptyValue( 6, EMPTY_VALUE );
SetIndexLabel( 0, \"Pivot\" );
SetIndexLabel( 1, \"SellZone\" );
SetIndexLabel( 2, \"BuyZone\" );
SetIndexLabel( 3, \"Selltp1\" );
SetIndexLabel( 4, \"Buytp1\" );
SetIndexLabel( 5, \"Selltp2\" );
SetIndexLabel( 6, \"Buytp2\" );
switch (Quarter)
{
case 1: StartMinute=0;break;
case 2: StartMinute=15;break;
case 3: StartMinute=30;break;
case 4: StartMinute=45;break;
default: StartMinute=0;break;
}
PivotDayStartTime = 0;
//----
int dst;
if(DayLightSaving==false) {dst=1;GMT_SHIFT=GMT_Shift;}
if(DayLightSaving==true) {dst=2;GMT_SHIFT=GMT_Shift+60;}
datetime brokerTime = CurTime();
datetime GMT = TimeLocal()- GMT_SHIFT * 60;
datetime london = GMT + (LondonTZ + (dst*60 - 1*60)) * 60;
datetime tokyo = GMT + (TokyoTZ) * 60;
datetime newyork = GMT + (NewYorkTZ + (dst*60 - 1*60)) * 60;
datetime tehran=GMT + (Tehran + (dst*60 - 1*60)) * 60;
Tehranshift=tehran-brokerTime;
GlobalVariableSet(\"Tehranshift\"+WindowHandle(Symbol(),Period())+Symbol()+Period(),Tehranshift);
GlobalVariableSet(\"GMT_SHIFT\"+WindowHandle(Symbol(),Period())+Symbol()+Period(),GMT_SHIFT);
GlobalVariableSet(\"DayLightSaving\"+WindowHandle(Symbol(),Period())+Symbol()+Period(),DayLightSaving);
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
GlobalVariablesDeleteAll();
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
GlobalVariableSet(\"StartHour\"+WindowHandle(Symbol(),Period())+Symbol()+Period(),StartHour);
GlobalVariableSet(\"StartMinute\"+WindowHandle(Symbol(),Period())+Symbol()+Period(),StartMinute);
GlobalVariableSet(\"ATR_Period\"+WindowHandle(Symbol(),Period())+Symbol()+Period(),ATR_Period);
GlobalVariableSet(\"NumberOfDays\"+WindowHandle(Symbol(),Period())+Symbol()+Period(),NumberOfDays);
GlobalVariableSet(\"Quarter\"+WindowHandle(Symbol(),Period())+Symbol()+Period(),Quarter);
GlobalVariableSet(\"Tehranshift\"+WindowHandle(Symbol(),Period())+Symbol()+Period(),Tehranshift);
GlobalVariableSet(\"GMT_SHIFT\"+WindowHandle(Symbol(),Period())+Symbol()+Period(),GMT_SHIFT);
GlobalVariableSet(\"DayLightSaving\"+WindowHandle(Symbol(),Period())+Symbol()+Period(),DayLightSaving);
int i, j,Count;
double Range;
i =((NumberOfDays*1440)/Period())+((1440)/Period());
//----
while(i >=0)
{
if( PivotDay( Time[i+1]+Tehranshift-StartHour*60*60-StartMinute*60)!=PivotDay( Time[i]+Tehranshift-StartHour*60*60-StartMinute*60))
{
double pip15,pip30,pip60;
Pivot[i]=iCustom(NULL,0,\"Hamyar Calculate\",\"\",\"\",ATR_Period,0,i);
pip15=iCustom(NULL,0,\"Hamyar Calculate\",\"\",\"\",ATR_Period,2,i);
pip30=iCustom(NULL,0,\"Hamyar Calculate\",\"\",\"\",ATR_Period,3,i);
pip60=iCustom(NULL,0,\"Hamyar Calculate\",\"\",\"\",ATR_Period,4,i);
BuyZone[i] =Pivot[i]+ pip15;
SellZone[i] = Pivot[i] - pip15;
Selltp1[i] = Pivot[i] - (pip30+pip15);
Buytp1[i] = Pivot[i] + (pip30+pip15);
Selltp2[i] = SellZone[i] - (pip15+pip60);
Buytp2[i] = BuyZone[i] + (pip15+pip60);
SellZone[i+1] =EMPTY_VALUE;
BuyZone[i+1] =EMPTY_VALUE;
Pivot[i+1] =EMPTY_VALUE;
Selltp1[i+1] = EMPTY_VALUE;
Buytp1[i+1] = EMPTY_VALUE;
Selltp2[i+1] =EMPTY_VALUE;
Buytp2[i+1] = EMPTY_VALUE;
SellZone[i+2] =EMPTY_VALUE;
BuyZone[i+2] =EMPTY_VALUE;
Pivot[i+2] =EMPTY_VALUE;
Selltp1[i+2] =EMPTY_VALUE;
Buytp1[i+2] = EMPTY_VALUE;
Selltp2[i+2] =EMPTY_VALUE;
Buytp2[i+2] = EMPTY_VALUE;
PivotDayStartTime=Time[i];
}
else
{
BuyZone[i] = BuyZone[i+1];
SellZone[i] = SellZone[i+1];
Selltp1[i] = Selltp1[i+1];
Buytp1[i] = Buytp1[i+1];
Selltp2[i] = Selltp2[i+1];
Buytp2[i] = Buytp2[i+1];
Pivot[i] = Pivot[i+1];
}
i--;
if (i==0)GlobalVariableSet(\"PivotDayStartTime\"+WindowHandle(Symbol(),Period())+Symbol()+Period(),PivotDayStartTime);
}
//----
return(0);
}
//+------------------------------------------------------------------+
//--------------------
int PivotDay( datetime BarTime )
{
int PDay = TimeDayOfWeek( BarTime);
if( PDay == 0 ) PDay = 5;
if( PDay == 6 ) PDay = 5;
return( PDay );
} |