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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
ddd06
360
ddd06  
Interesting:

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

попробуй так

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

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

 

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

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

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

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


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


PS

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

ddd06
360
ddd06  

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

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

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

Nikolay Demko
13001
Nikolay Demko  

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

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

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

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


Валерий
1411
Валерий  
Urain:

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


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

HistorySelect(0,TimeCurrent())


Nikolay Demko
13001
Nikolay Demko  
Valmars:

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


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

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

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

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

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

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

Валерий
1411
Валерий  
Urain:

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

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

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

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

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

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


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

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

Slava
Модератор
7475
Slava  
ddd06:

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

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

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

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

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

Документация по MQL5: Общие функции / Print
Документация по MQL5: Общие функции / Print
  • www.mql5.com
Общие функции / Print - Документация по MQL5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий