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

 
Interesting:

Это работает, проверено на трех ДЦ (перебор всех инструментов которые торгуются в ДЦ) 

попробуй так

  for(int li=0; li<SymbolsTotal(true); li++)
  {
  PrintFormat(SymbolName(li,true));
  } 
на счет OnTick, это просто пример.
 
ddd06:

Так про то и речь, что с true не работает!

 

  for(int li=0; li<SymbolsTotal(false); li++)
  {
  PrintFormat("%s",SymbolName(li,false));
  }
Вот так будет правильно. так как для вывода информации вы используете функцию
PrintFormat(....) не путать с Print(.......)
 
sergey1294:
Вот так будет правильно. так как для вывода информации вы используете функцию
Спасибо, я просто в них не разбирался, но вопрос остается открытым:)
 
ddd06:
Спасибо, я просто в них не разбирался, но вопрос остается открытым:)

На реальных котировках (реал, демка и наверно конкурсник) это код работает нормально проверял на 3 терминалах (вызывался при инициализации)

  for(int li=0; li<SymbolsTotal(true); li++)
  {
  //PrintFormat(SymbolName(li,true));
  //Так конечно правильней, но первый вариант тоже проходит за милую душу...
  PrintFormat("%s",SymbolName(li,true));
  } 

У меня показывает 15 пар что стоят в обзоре рынка.


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


PS

Короче в тестере нужно иметь свой список символов по которым торгует эксперт (если мультивалютник) и сверять его со списком тех которые представлены в ДЦ.

 

Это конечно круто, но всетаки мне кажется это недоработка.

Спасибо, что разобрались.

Интересно, что с первым постом, до сих пор не кто не ответил, типо могли бы написать - Исправим в следующем билде. 

 

Не возвращаеться количество ордеров и сделок в истории:

TerminalInfoInteger(TERMINAL_BUILD) 279
void OnStart()
  {
    Print("+---------------------------------------------------------+");    
    Print("PositionsTotal() ",PositionsTotal());
    Print("HistoryDealsTotal() ",HistoryDealsTotal());
    Print("OrdersTotal() ",OrdersTotal());
    Print("HistoryOrdersTotal() ",HistoryOrdersTotal());    
  }

распринтовка

История ордеров

 
Urain:

Не возвращаеться количество ордеров и сделок в истории:


Надо сначала загрузить историю с помощью функции:

HistorySelect(0,TimeCurrent())
 
Valmars:

Надо сначала загрузить историю с помощью функции:


Да спасибо, всё работает, пойду курить мануал дальше :о)

Просто не мог подумать что для пользователя и для советников идёт разделение потоков,

мне представлялось что раз история отображаеться значит должна читаться советником,

но так действительно будет правильней терминал создаёт для советников собственное пространство,

где выбор информации идёт видимо в своём формате и намного быстрей,

аналог этого многие реализовывали в mql-4 в виде буфера куда периодически загружали историю.

 
Urain:

Да спасибо, всё работает, пойду курить мануал дальше :о)

Просто не мог подумать что для пользователя и для советников идёт разделение потоков,

мне представлялось что раз история отображаеться значит должна читаться советником,

но так действительно будет правильней терминал создаёт для советников собственное пространство,

где выбор информации идёт видимо в своём формате и намного быстрей,

аналог этого многие реализовывали в mql-4 в виде буфера куда периодически загружали историю.


К сожалению, пространство для скриптов, советников и для терминала общее. Вы сможете убедиться в этом, если вызовете из терминала историю, ну, например за последние сутки (день), а потом из скрипта, советника запустите приведённую выше функцию. И увидите, что история в терминале также поменялась на 'Всю историю'. Считаю, что это недостаток терминала. Представьте, что у Вас работают несколько скриптов, экспертов и каждый запрашивает свою историю. История в терминале будет скакать (визуально), а Вам это надо ? Вам ведь надо, чтобы вкладка 'История' отображала текущее состояние независимо от работы экспертов.

Кроме того, история  в терминале часто обновляется с задержкой, т.е. сделка совершена, позиция закрыта, а на вкладке 'История' она не появляется. Один раз специально ждал, когда же история обновится. Проходили минуты.... Так и не дождался... Появляется только после выполнения контекстной команды на запрос  истории из вкладки 'История' или скрипта, запрашивающего историю.

 
ddd06:

Это конечно круто, но всетаки мне кажется это недоработка.

Спасибо, что разобрались.

Интересно, что с первым постом, до сих пор не кто не ответил, типо могли бы написать - Исправим в следующем билде. 

Недоработка в том, что Вы используете PrintFormat без явного использования форматной строки.

Что мы должны исправлять в следующем билде? 

Документация по MQL5: Общие функции / Print
Документация по MQL5: Общие функции / Print
  • www.mql5.com
Общие функции / Print - Документация по MQL5
Причина обращения: