MarketHoursShade_v01

Indikátor, který zobrazuje range dle jednotlivých seancí. Zobrazuje evropskou, americkou a asijskou seanci. Ale pozor programátor tohoto indikátoru se pravděpodobně nacházel v jiném časovém pásmu než je ČR. Má nastaveno pro evropskou (London) seanci čas od 7:00-17:00, pro americkou od 13:00-23:00 a asijskou od 23:00 do 9:00. Nicméně časy si můžete v kódu snadno upravit.

 

//=============================================================================
//                                                MarketHoursShade_v01.mq4
//                                                     Originally by KimIV
//                                                     http://www.kimiv.ru
//
//                                                              23.11.2005
//
// 29 Nov 06: Modified by Derk Wehler to be readable.
//            Added/Changed a couple of input parameter defaults
//            No other changes.
//
//=============================================================================
#property copyright „Derk Wehler“
#property link      „none“

#property indicator_chart_window

//——-  ——————————-
extern int    NumberOfDays = 50;
extern string s1           = „European“;
extern color  Color_1      = C’60, 60, 60′;
extern string Begin_1      = „07:00“;
extern string End_1        = „17:00“;
extern string s2           = „“;
extern string s3           = „American“;
extern color  Color_2      = C’80, 80, 80′;
extern string Begin_2      = „13:00“;
extern string End_2        = „23:00“;
extern string s4           = „“;
extern string s5           = „Asian/Austrailian“;
extern color  Color_3      = C’100, 100, 100′;
extern string Begin_3      = „23:00“;
extern string End_3        = „09:00“;
extern bool   HighRange    = true;
//=============================================================================
// Custom indicator initialization function
//=============================================================================
void init()
{
DeleteObjects();
for (int i=0; i < NumberOfDays; i++)
{
CreateObjects(„PWT1″+i, Color_1);
CreateObjects(„PWT2″+i, Color_2);
CreateObjects(„PWT3″+i, Color_3);
}
Comment(„“);
}

//=============================================================================
// Custor indicator deinitialization function
//=============================================================================
void deinit()
{
DeleteObjects();
Comment(„“);
}

//=============================================================================
//
//=============================================================================
void CreateObjects(string no, color cl)
{
ObjectCreate(no, OBJ_RECTANGLE, 0, 0,0, 0,0);
ObjectSet(no, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(no, OBJPROP_COLOR, cl);
ObjectSet(no, OBJPROP_BACK, True);
}

//=============================================================================
//
//=============================================================================
void DeleteObjects()
{
for (int i=0; i < NumberOfDays; i++)
{
ObjectDelete(„PWT1″+i);
ObjectDelete(„PWT2″+i);
ObjectDelete(„PWT3″+i);
}
}

//=============================================================================
// Custom indicator iteration function
//=============================================================================
void start()
{
datetime dt = CurTime();

for (int i=0; i < NumberOfDays; i++)
{
DrawObjects(dt, „PWT1″+i, Begin_1, End_1);
DrawObjects(dt, „PWT2″+i, Begin_2, End_2);
DrawObjects(dt, „PWT3″+i, Begin_3, End_3);
dt = decDateTradeDay(dt);

while (TimeDayOfWeek(dt) > 5)
dt = decDateTradeDay(dt);
}
}

//=============================================================================
//
//=============================================================================
void DrawObjects(datetime dt, string no, string tb, string te)
{
datetime t1, t2;
double   p1, p2;
int      b1, b2;

t1 = StrToTime(TimeToStr(dt, TIME_DATE) + “ “ + tb);
t2 = StrToTime(TimeToStr(dt, TIME_DATE) + “ “ + te);
b1 = iBarShift(NULL, 0, t1);
b2 = iBarShift(NULL, 0, t2);
p1 = High[Highest(NULL, 0, MODE_HIGH, b1-b2, b2)];
p2 = Low [Lowest (NULL, 0, MODE_LOW , b1-b2, b2)];

if (!HighRange)
{
p1 = 0;
p2 = 2 * p2;
}

ObjectSet(no, OBJPROP_TIME1 , t1);
ObjectSet(no, OBJPROP_PRICE1, p1);
ObjectSet(no, OBJPROP_TIME2 , t2);
ObjectSet(no, OBJPROP_PRICE2, p2);
}

//=============================================================================
//
//=============================================================================
datetime decDateTradeDay (datetime dt)
{
int ty = TimeYear(dt);
int tm = TimeMonth(dt);
int td = TimeDay(dt);
int th = TimeHour(dt);
int ti = TimeMinute(dt);

td–;
if (td == 0)
{
tm–;
if (tm == 0)
{
ty–;
tm = 12;
}
if (tm == 1 || tm == 3 || tm == 5 || tm == 7 || tm == 8 || tm == 10 || tm == 12)
td = 31;

if (tm == 2)
if (MathMod(ty, 4) == 0)
td = 29;
else
td = 28;

if (tm == 4 || tm == 6 || tm == 9 || tm == 11)
td = 30;
}
return(StrToTime(ty + „.“ + tm + „.“ + td + “ “ + th + „:“ + ti));
}

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *