#property indicator_chart_window //--- input parameters input int Depth=3; //количество дней //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { MqlDateTime stm; ObjectsDeleteAll(0,"dc*",0,-1); if(_Period==PERIOD_D1) { TimeToStruct(TimeCurrent(),stm); int i=rates_total-Depth+1; while(i<=rates_total) { datetime ltm=StructToTime(stm); int shift=rates_total-iBarShift(NULL,0,ltm,true)-1; ObjectCreate(0,"dc"+i,OBJ_TEXT,0,ltm,high[shift]+(high[shift]-low[shift])/30); ObjectSetString(0,"dc"+i,OBJPROP_TEXT,DoubleToString((close[shift]-close[shift-1])*100.0/close[shift-1],2)+" %"); ObjectSetDouble(0,"dc"+i,OBJPROP_ANGLE,90.0); ObjectSetInteger(0,"dc"+i,OBJPROP_ANCHOR,ANCHOR_LEFT); stm.day--; i++; } } return(rates_total); } //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectsDeleteAll(0,"dc*",0,-1); } //+------------------------------------------------------------------+в
как-то так ;)
Код в стиле старого терминала - выстрелил, а там хоть не расцветай.
Нет ни одной настройки. Нет ни одной проверки на ошибки. Нет даже намека на проверку в какую строну был дневной прирост: в "+" или в "-", постоянное создание объектов вместо модификации существующих ...
Но тем не менее спасибо - в качестве наглядного примера бездумности программирования в стиле старого терминала.
while(i<=rates_total) { datetime ltm=StructToTime(stm); int shift=rates_total-iBarShift(NULL,0,ltm,true)-1; double dc=(close[shift]-close[shift-1])*100.0/close[shift-1]; ObjectCreate(0,"dc"+i,OBJ_TEXT,0,ltm,high[shift]+(high[shift]-low[shift])/30); ObjectSetString(0,"dc"+i,OBJPROP_TEXT,DoubleToString(dc,2)+" %"); if(dc>0) ObjectSetInteger(0,"dc"+i,OBJPROP_COLOR,clrBlue); ObjectSetDouble(0,"dc"+i,OBJPROP_ANGLE,90.0); ObjectSetInteger(0,"dc"+i,OBJPROP_ANCHOR,ANCHOR_LEFT); stm.day--; i++; }
Код в стиле старого терминала - выстрелил, а там хоть не расцветай.
Нет ни одной настройки. Нет ни одной проверки на ошибки. Нет даже намека на проверку в какую строну был дневной прирост: в "+" или в "-" , постоянное создание объектов вместо модификации существующих ...
Но тем не менее спасибо - в качестве наглядного примера бездумности программирования в стиле старого терминала.
да, ошибки, сейчас только подумал что нужно проверять если числа попадают на начало месяца, ну еще строка. о каких ошибках я мог еще не вспомнить за 2 минуты написания кода?
настройка ровно одна - количество дней. для этой задачи больше не требуется. в какую сторону был дневной прирост указывает знак "-" .... для большей наглядности +1 строка в код и надписи цветные.
да, ошибки, сейчас только подумал что нужно проверять если числа попадают на начало месяца, ну еще строка. о каких ошибках я мог еще не вспомнить за 2 минуты написания кода?
Вспоминать не нужно, нужно знать. Например постоянное создание объекта вместо его модификации - это очень дорого.
Пожалуйста пишите в ветку "Вопросы от начинающих ...". Заодно там подскажут, что предложение начинается в Заглавной буквицы.
Дорого обходится использование массивов там где это не требуется. Кусок кода, который у вас написан под комментарием //-- current bar после цикла, и параметры InpAnchor и InpCorner тоже не дешевые, потому что ни на что не влияют. Дорого ровно на 2мб памяти (для такого обьёма кода это наверное даже непростительно дорого), и увеличение времени исполнения более чем в 2 раза.
Дорого обходится использование массивов там где это не требуется. Кусок кода, который у вас написан под комментарием //-- current bar после цикла, и параметры InpAnchor и InpCorner тоже не дешевые, потому что ни на что не влияют. Дорого ровно на 2мб памяти (для такого обьёма кода это наверное даже непростительно дорого), и увеличение времени исполнения более чем в 2 раза.
Вы вправе иметь собственное мнение и писать код как Вам вздумается.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Daily Change Text:
Индикатор показывает на дневном таймфрейме 'Daily Change'
Автор: Vladimir Karputov