Einzelnen Beitrag anzeigen
  #7 (permalink)  
Alt 02.08.19
RetepM RetepM ist offline
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 240
RetepM befindet sich auf einem aufstrebenden Ast
Standard

Hi, den nachfolgenden Code habe ich aus dem Netz. Ein Indikator, Du kannst den Code aber ohne Probleme in einem EA umsetzen. Have fun!

//+------------------------------------------------------------------+
//| ranges.mq4 |
//+------------------------------------------------------------------+

#property indicator_chart_window

//+------------------------------------------------------------------+
extern bool DrawRange = true;
extern string RangeBegin = "00:05";
extern string RangeEnd = "07:30";
extern color RangeColor = clrGreen;
extern bool DrawTrading = true;
extern string TradingBegin = "08:00";
extern string TradingEnd = "16:59";
extern color TradingColor = clrDarkOrange;
extern bool DrawDaily = true;
extern string DailyBegin = "00:05";
extern string DailyEnd = "23:59";
extern color DailyColor = clrLightGray;
extern bool ShowRecBgrd = true;
extern int NumberOfDays = 1;

int dig;
double pnt, spr, tickval;
string ccy;

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
void init() {
ccy = Symbol();
pnt = MarketInfo(ccy,MODE_POINT);
dig = MarketInfo(ccy,MODE_DIGITS);
spr = MarketInfo(ccy,MODE_SPREAD);
tickval = MarketInfo(ccy,MODE_TICKVALUE);
if (dig == 3 || dig == 5) {
pnt *= 10;
spr /= 10;
tickval *= 10;
}
DeleteObjects();
for (int i=0; i<NumberOfDays; i++) {
CreateObjects("RB"+i, RangeColor);
CreateObjects("TB"+i, TradingColor);
CreateObjects("DB"+i, DailyColor);
}
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, ShowRecBgrd);
}

//+------------------------------------------------------------------+
void DeleteObjects() {
//+------------------------------------------------------------------+
for (int i=0; i<NumberOfDays; i++) {
ObjectDelete("RB"+i);
ObjectDelete("TB"+i);
ObjectDelete("DB"+i);
}
ObjectDelete("TBup");
ObjectDelete("TBdn");
ObjectDelete("RBup");
ObjectDelete("RBdn");
ObjectDelete("DBup");
ObjectDelete("DBdn");
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
void start() {
datetime dt= TimeCurrent();
for (int i=0; i<NumberOfDays; i++) {
if(DrawRange == true) DrawObjects(dt, "RB"+i, RangeBegin, RangeEnd);
if(DrawTrading == true) DrawObjects(dt, "TB"+i, TradingBegin, TradingEnd);
if(DrawDaily == true) DrawObjects(dt, "DB"+i, DailyBegin, DailyEnd);
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)];
ObjectSet(no, OBJPROP_TIME1 , t1);
ObjectSet(no, OBJPROP_PRICE1, p1);
ObjectSet(no, OBJPROP_TIME2 , t2);
ObjectSet(no, OBJPROP_PRICE2, p2);
ObjectSetText(no,DoubleToStr((p1-p2)/pnt,0));
}

//+------------------------------------------------------------------+
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));
}

//+------------------------------------------------------------------+