Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всем привет.
Помогите доделать индикатор.
Индикатор у меня полностью готов, я им пользуюсь, но есть проблема одна.
Он выресовывает вертикальные линии именно в тот момент, когда наступает нужный час.
Можете помочь сделать так, чтобы эти линии уже были нарисованы, когда наступает новый день, т.е. в будущем.
Ну или хотябы чтобы за 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;
}