Помогите доделать индикатор!

[Удален]  

Всем привет.

Помогите доделать индикатор.

Индикатор у меня полностью готов, я им пользуюсь, но есть проблема одна.

Он выресовывает вертикальные линии именно в тот момент, когда наступает нужный час.

Можете помочь сделать так, чтобы эти линии уже были нарисованы, когда наступает новый день, т.е. в будущем.

Ну или хотябы чтобы за 1-2 часа появлялась линия в будущем

Спасибо.

вот индикатор -

#property indicator_chart_window
//----
extern string EUO = "A";
extern int HourA = 8;
extern color ColorA = Turquoise;
extern int StyleA = 2;
extern string ASC = "B";
extern int HourB = 10;
extern color ColorB = C'65,65,65';
extern int StyleB = 2;
extern string AMO = "C";
extern int HourC = 12;
extern color ColorC = Orange;
extern int StyleC = 2;
extern string EUC = "D";
extern int HourD = 14;
extern color ColorD = C'65,65,65';
extern int StyleD = 2;
extern string AMC = "E";
extern int HourE = 16;
extern color ColorE = C'65,65,65';
extern int StyleE = 2;
extern int CountBars = 500;
extern int NumberOfDays= 1;

int Shift;
bool InitDraw;
datetime TimeSave;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
TimeSave=0;
InitDraw=false;
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
DeleteVertical(NumberOfDays);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
// проверка на наличие отрисовки начального запуска и в начале каждого часа
if ((TimeMinute(Time[0])!=0)&&(InitDraw==true)) return;
int counted_bars=IndicatorCounted();
int NumBars=500;
//----
if (Bars<CountBars) { NumBars=Bars-1; } else { NumBars=CountBars; }

DeleteVertical(NumberOfDays);

Shift=0;
datetime CurrentDay=0;
datetime StartDay=0;
int HourDay;
int IxDay=NumberOfDays;
while (IxDay>0){
Shift=Shift+1;
StartDay=Time[Shift]-MathMod(Time[Shift],60*60*24);
if ((StartDay!=CurrentDay)&&(TimeDayOfWeek(StartDay)!=6)) {
IxDay=IxDay-1; // исключаем субботу (у некоторых ДЦ)
CurrentDay=StartDay;
}
}
//if (InitDraw==false) StartDay=0;
IxDay=0;
for(Shift=Bars-1;Shift>=0;Shift--) {
CurrentDay=Time[Shift]-MathMod(Time[Shift],60*60*24);
if ((CurrentDay>=StartDay)&&(TimeMinute(Time[Shift])==0)) {
// Print("Current : ",TimeToStr(CurrentDay,TIME_DATE|TIME_MINUTES),"Start : ",TimeToStr(StartDay,TIME_DATE|TIME_MINUTES));
// OpenTime=StrToTime(TimeDay(Time[shift])+" "+A+":"+OpenTimeMin);
// CloseTime=StrToTime(TimeDay(Time[shift])+" "+B+":"+CloseTimeMin);
if (TimeHour(Time[Shift])== HourA) DrawVertical("A"+IxDay,StyleA,ColorA,Shift);
if (TimeHour(Time[Shift])== HourB) DrawVertical("B"+IxDay,StyleB,ColorB,Shift);
if (TimeHour(Time[Shift])== HourC) DrawVertical("C"+IxDay,StyleC,ColorC,Shift);
if (TimeHour(Time[Shift])== HourD) DrawVertical("D"+IxDay,StyleD,ColorD,Shift);
if (TimeHour(Time[Shift])== HourE) {DrawVertical("E"+IxDay,StyleE,ColorE,Shift);IxDay=IxDay+1;}
}// if
}//for
InitDraw=true;
return(0);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void DrawVertical(string iPrefix,int iStyle,color iColor,int iTimeShift)
{
if(ObjectFind(iPrefix)!=0){
ObjectCreate(iPrefix, OBJ_VLINE, 0, Time[iTimeShift], 0);
ObjectSet(iPrefix, OBJPROP_STYLE,iStyle);
ObjectSet(iPrefix, OBJPROP_COLOR,iColor);
}
return;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void DeleteVertical(int iCycle)
{
for (int Index=0;Index<iCycle;Index++){
ObjectDelete("A"+Index);
ObjectDelete("B"+Index);
ObjectDelete("C"+Index);
ObjectDelete("D"+Index);
ObjectDelete("E"+Index);
}
return;
}

 
ну у Вас IxDay = 0, копайте в этом направлении
[Удален]  
Vladon писал(а) >>
ну у Вас IxDay = 0, копайте в этом направлении

Можешь пожалуйста помочь?

а то я еле сделал этот индикатор, переделал один индикатор..

[Удален]  
Кто-нибудь!!! пожалуйста!
 
sdaff >>:
Кто-нибудь!!! пожалуйста!

Хватила ума переделать, хватит и доделать.

 
...
Файлы:
sdaff.mq4  5 kb
[Удален]  

Sanyooooook

Я пытался, но никак..

Integer

Вам, Большое спасибо! Всё работает!))