Ошибки, баги, вопросы - страница 1878

 
Комбинатор:

Не знаю как так получилось, но получилось вот так:

Ты должен кому-то написать. Просто обязан, иначе никак )))
 
Andrey Khatimlianskii:
Ты должен кому-то написать. Просто обязан, иначе никак )))
Этого мало. После подобного нужно женится, не иначе.)))
 
В нынешних реалиях это нормально?
void OnStart()
{
  MqlTick Tick;
  
  Tick = (MqlTick)Tick; // cannot cast 'MqlTick' to 'MqlTick'
}
 

категорически приветствую!

помогите решить проблемку.

есть вот такой код, т.е. открываем новый чарт по обзору рынка и рисуем на нем объект.

пока в обзоре мало тикеров,проблем нет.

затем,чем больше окон открывается,тем медленее открывается следующее окно.

когда время открытия чарта достигает 3000мс!! = 3с, ChartOpen возвращает 0, хотя в итоге чарт окрывается,но !! у нас же есть условие - рисовать объект на новом чарте, если ChartOpen вернул 0,то мы не можем получить ID чарта,чтобы именно на нем нарисовать объект, хоть чарт и открылся в итоге,но мы не знаем его ID.

Попытался решить проблему васянским способом,тупо врубив Sleep 4с, но все равно, при колве чартов около 60,даже это не спасает. И это я еще выпилил аттач шаблона с индюками,как в начале планировал.

Если закомментить Sleep,то трэш,угар и содомия,начнутся гораздо раньше.

2017.04.29 12:50:12.563 открытие множества чартов с созданием объектов (EURUSD,H1)      Чарт 131379294082473728 открывался = 2480.0
2017.04.29 12:50:12.563 открытие множества чартов с созданием объектов (EURUSD,H1)      Раз тут открылся чарт #Wheat_N7 должен нарисовать объект 
2017.04.29 12:50:12.673 открытие множества чартов с созданием объектов (EURUSD,H1)      На символе номер = 57 #Wheat_N7 создано объектов = 1
2017.04.29 12:50:12.673 открытие множества чартов с созданием объектов (EURUSD,H1)      На символе номер = 57 #Wheat_N7 на самом деле создано объектов = 1
2017.04.29 12:50:19.753 открытие множества чартов с созданием объектов (EURUSD,H1)      Не удалось открыть чарт № = 58 тикер = #AUS200 за время = 3003.0
2017.04.29 12:50:26.623 открытие множества чартов с созданием объектов (EURUSD,H1)      Чарт 131379294223977200 открывался = 2794.0
2017.04.29 12:50:26.623 открытие множества чартов с созданием объектов (EURUSD,H1)      Раз тут открылся чарт #Belgium20 должен нарисовать объект 

Памяти отжирает терминал порядка 700мб, еще 1300 свободно,т.е. дело не в ресурсах. Колво баров на чарте выставлено 5000.

Не удалось открыть чарт № = 58 тикер = #AUS200

Однако чарт открылся, но его ID неизвестен.

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict
#property script_show_inputs
input string nametemplate="zz.tpl";
input int    limit=1000;
int symopen,objquant;
double close[];
datetime time[];
string namesym;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   ArrayInitialize(time,0);
   ArrayInitialize(close,0);
   long chart_id=ChartFirst(),chart_id_prev;
   for(int c2=0; c2<SymbolsTotal(true)-1; c2++)
     {
      int Q=0;
      objquant=0;
      chart_id_prev=chart_id;
      ArrayFree(close);
      ArrayFree(time);
      ArrayResize(close,limit);
      ArrayResize(time,limit);
      int время=CopyTime(namesym,0,1,limit,time);
      int цена=CopyClose(namesym,0,1,limit,close);
      namesym=SymbolName(c2,true);
      ulong start=GetMicrosecondCount();
      chart_id=ChartOpen(namesym,0);
      ulong finish=GetMicrosecondCount();
      Sleep(4000);
      if( chart_id==0 )
        {
         Print("Не удалось открыть чарт № = ",c2," тикер = ",namesym," за время = ",
               NormalizeDouble((finish-start)/1000,3));
         continue;
        }
      Print("Чарт ",chart_id," открывался = ",NormalizeDouble((finish-start)/1000,3));
      symopen=1;
      //      ChartApplyTemplate(chart_id,nametemplate);
      Print("Раз тут открылся чарт ",namesym," должен нарисовать объект ");
      //Sleep(100);
      ResetLastError();
      bool objcreated=ObjectCreate(chart_id,"name"+namesym+string(c2),OBJ_RECTANGLE,0,time[5],close[5],time[15],close[15]);
      if(objcreated==true) objquant++;
      else Print("Ошибка создания объекта = ",GetLastError());
      Print("На символе номер = ",c2," ",namesym," создано объектов = ",objquant);
      int total=ObjectsTotal(chart_id,0,-1);
      Print("На символе номер = ",c2," ",namesym," на самом деле создано объектов = ",total);
     }
   return;
  }

//+------------------------------------------------------------------+
 
kaus_bonus:

помогите решить проблемку.

Написать GetNewChartID().
 
fxsaber:
Написать GetNewChartID().


для этого же и есть ChartOpen, должен возвращать ID нового чарта,но не делает этого

можете помочь,развив свою мысль?

 
kaus_bonus:


для этого же и есть ChartOpen, должен возвращать ID нового чарта,но не делает этого

можете помочь,развив свою мысль?

ChartOpen асинхронная функция - запрос на открытие графика отправляется, и продолжается выполнение программы.

У вас должен быть список известных ChartID. Как только появился новый - получаете его ID и вносите в список. Это ID и будет тем, который открылся только что - на этот график и кидаете объекты. При удалении чарта, список также перестраиваете.

Я как-то выкладывал класс для работы с обзором рынка и графиками. Это самая лёгкая - первая версия из того, что уже дальше понаделал, но принцип должен быть понятен.
 
Artyom Trishkin:
ChartOpen асинхронная функция - запрос на открытие графика отправляется, и продолжается выполнение программы.


спасибо.

к сожалению, об выделенном в справке я не нашел ни слова, иначе может и не потратил бы пол вечера на поиск проблемы - новый чарт есть,а объекта на нем нет. и простая задача -  открыть чарт,нарисовать объект, превращается в ненужную попаболь.

попробую вашу

longGetOpenedChartID(void)
Возвращает идентификатор только что открытого графика
longChartID()
если не выйдет каменный цветок,да и хрен с ним. иначе мне проще оставить таймер,ибо не программист я.
 

Столкнулся сегодня с такой проблемой (проблема скорее всего не в МТ, но мешает работе с терминалом), впервые в своей жизни с таким сталкиваюсь.

Квадратная область экрана рабочего стола, примерно 0,1 от длины экрана и 0,3 от ширины экрана не откликается на команды мыши. Таким образом если окно любой программы находится в этой области экрана, то мышь в ней не работает и теряется фокус на приложении, в этой области нельзя пользовать меню и любыми другими элементами интерфейса программы, например не работает дерево в Навигаторе терминала.

Что за такое вообще? Такое ощущение, что в этой области экрана находится окно какого то приложения, но оно невидимое. Как быть? Кто нибудь сталкивался с подобным?

Win 10 64 битная. В диспетчере задач не обнаружил присутствия подозрительных программ.

 
Andrey Dik:



раз http://www.yaplakal.com/forum32/topic1379573.html

два https://www.google.ru/search?q=невидимое+окно+на+рабочем+столе

краткая выжимка - 

Это проблема конфликта последнего обновления виндуса и антивируса Авира и нортон.

Откати обновление и смени антивирус на комодо и будет тебе счастье. 
Глюк: невидимое окно - ЯПлакалъ
Глюк: невидимое окно - ЯПлакалъ
  • RustyKZ
  • www.yaplakal.com
Может, кто сталкивался с такой проблемой? В центре экрана (на скрине примерно отмечена прямоугольником) есть область, которая как прозрачное окно поверх всех окон. Курсор мыши в ней бегает, но попав туда, не кликает то, что в принципе, кликабельно. На приведенном примере - на "Активные темы" можно кликнуть, а на "Новые сообщения" - нет (если...