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

 

А нельзя ли все-таки сделать в Едиторе возможность печати выделенного фрагмента? Сейчас эта радиокнопка не активна.

Мелочь, конечно, но неприятно, особенно, когда листинги по 50 страниц.

 

Такое впечатление что сервер завис... со вчерашнего дня

 

Куда-то исчез генетический алгоритм... Build 360

 

Вопрос снят! Искал не там!

 

Можно ли полагаться на то, что HistorySelectByPosition() возвращает УПОРЯДОЧЕННЫЙ список сделок?

ulong CExpertAdvisor::GetDealByOrder(ulong order) // получение тикета сделки по тикету ордера
  {
   PositionSelect(m_smb);
   HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER));
   uint total=HistoryDealsTotal();
//   for(uint i=0; i<total; i++)
   for(uint i=total-1; i>=0; i--)
     {
      ulong deal=HistoryDealGetTicket(i);
      if(order==HistoryDealGetInteger(deal,DEAL_ORDER))
         return(deal);                            // запомнили тикет сделки 
     }
   return(0);
  } 

Тогда перебор ЗДЕСЬ был бы не нужен. Если нельзя, перебор можно начинать с конца ... (заметил, что сделки в тестере были упорядочены).

 

Уважаемые господа разработчики и программисты! Нужна помощь! Может я уже не первый, но все таки...

1. Каким образом можно организовать цикл, который бы прерывался (например) при нажатии на объект "кнопка". Я так понимаю, что принудительно вызвать функцию OnChartEvent из того же цикла не получиться? Если это так, то может есть какие-то способы обхода этого, а то я уже голову сломал.

При работе цикла системные переменные не обновляются, т.е. воспользоваться сменой периода графика (как минимум) не получается. Если цикл организовывать через проверку OnChartEvent, то необходимо постоянно, что-то делать с графиком, чтобы срабатывала эта функция - тоже не вариант.

2. Можно ли двигать график в окне графика программно, а не только ручками? ChartNavigate то ли не работает, то ли предназначен для чего то другого, либо я не разобрался как этот работает.

За ранее благодарю.

p.s. А можно было бы сделать, чтобы подсвечивались собственные функции и переменные в тексте программы?

 
KffAlex:

1. Каким образом можно организовать цикл, который бы прерывался (например) при нажатии на объект "кнопка". Я так понимаю, что принудительно вызвать функцию OnChartEvent из того же цикла не получиться? Если это так, то может есть какие-то способы обхода этого, а то я уже голову сломал.

Проверяйте состояние объекта кнопки.
 
KffAlex:

ChartNavigate то ли не работает, то ли предназначен для чего то другого, либо я не разобрался как этот работает.

Попробуйте ChartRedraw после вызова функции и убедитесь что автопрокрутка на чарте отключена...
Документация по MQL5: Основы языка / Функции / Вызов функции
Документация по MQL5: Основы языка / Функции / Вызов функции
  • www.mql5.com
Основы языка / Функции / Вызов функции - Документация по MQL5
 

Поставил MT5 на выделенный удалённый сервер. Периодически приходится следить за тем, чтобы терминал при кратковременном разрыве связи, вновь подключался к какому нибудь серверу. Нужно обязательно мышкой указать какой именно сервер нужно использовать, иначе вся торговля "замирает". Как сделать, чтобы автоматически переподключался терминал при не подключении в течении 5 минут, например.?

 
EvgeTrofi:

Поставил MT5 на выделенный удалённый сервер. Периодически приходится следить за тем, чтобы терминал при кратковременном разрыве связи, вновь подключался к какому нибудь серверу. Нужно обязательно мышкой указать какой именно сервер нужно использовать, иначе вся торговля "замирает". Как сделать, чтобы автоматически переподключался терминал при не подключении в течении 5 минут, например.?

Это должно происходить автоматически.

Терминал сам определяет потерю соединения и автоматически его восстанавливает (когда появляется эта возможность).

Если этого не происходит - пишите заявку в сервисдеск с полным описанием проблемы и не забудьте приложить логи. 

 

Столкнулся с проблемой переполнения стека вызова (так я думаю).

После вызова метода одного из объектов , см. пример ниже. Код упрощенный, только суть. Класс CClass1 - базовый, и в списке list1 разные объекты потомки этого класса, и init функции у них имеют разную реализацию. Так вот в одном классе где init функция перебирает подобный список (проще говоря, инициализация вложенного интерфейса, панели в панели) после возврата из init  в строке

   Print(t.name);

возникает ошибка

2010.12.02 00:21:00    test1 (EURUSD,H1)    Invalid pointer access in 'Container.mqh' (74,10)

for(CClass1* t = list1.GetLastNode(); t != NULL; t = list1.GetPrevNode() ) {
   t.init(); //после выхода отсюда t-мертвый указатель
   Print(t.name); 
}

Т.е. указатель t - мертвый.

При отладке такая ошибка отсутствует, после вызова метода указатель "живой", вложенные интерфейсы создаются и эксперт работает дальше.

Обойти ошибку удалось только так:

savePoint = t;
t.init();
t = savePoint;
указанием #property stacksize ничего не добился.
Причина обращения: