No history data - получить код возврата процесса

 

Уважаемые разработчики, возможно ли при автоматическом запуске терминала как процесса (CreateProcess) из другого, внешнего процесса в режимах тестера/оптимизатора получить через код возврата процесса терминала такую ситуацию, когда не подгружена нужная история валют, и терминал не смог из-за этого выполнить заданные тест/оптимизацию?

 
chv:

Уважаемые разработчики, возможно ли при автоматическом запуске терминала как процесса (CreateProcess) из другого, внешнего процесса в режимах тестера/оптимизатора получить через код возврата процесса терминала такую ситуацию, когда не подгружена нужная история валют, и терминал не смог из-за этого выполнить заданные тест/оптимизацию?


А зачем запускать терминал если нет истории?

я сначала проверяю историю по нужному инструменту и периоду и только в случае её наличия запускаю терминал, правда это я делаю в скрипте поэтому мне доступно время начала и конца исторических данных в hst. Но можно хотя бы проверять наличие файла с необходимой историей.

 
xeon:


А зачем запускать терминал если нет истории?

я сначала проверяю историю по нужному инструменту и периоду и только в случае её наличия запускаю терминал, правда это я делаю в скрипте поэтому мне доступно время начала и конца исторических данных в hst. Но можно хотя бы проверять наличие файла с необходимой историей.


Дело в том, что я не запускаю терминалы ручками, это делает автоматизированная система управления терминалами, она их запускает. Опять же, наличие в папке "history\downloads\" подпапок с именами валют (например, "history\downloads\GBPUSD\") и каких-либо файлов в папке с именем валюты не гарантирует наличия всей верной истории по этой валюте. Или не так?
В какой-то момент может оказаться (и оказывается), что определённым терминалам не хватает истории. Мне нужно добавить в систему управления код, могущий выявить данную ситуацию и выдать пользователю об этом сообщение. Я и спрашиваю, можно ли по коду возврата процесса терминала выявить данную ситуацию?

Кстати, полезно бы иметь в параметрах командной строки терминала опцию, позволяющую принудительно закачивать историю той пары, на которой идёт тестирование или оптимизация. DSL трафика не жалко, главное - положительный результат отработки терминала.

 
chv:

Дело в том, что я не запускаю терминалы ручками, это делает автоматизированная система управления терминалами, она их запускает.


и я про автоматиический запуск :-)

Я имел в виду что не нужно запускать терминал для того что бы проверить наличие истории, а проверять наличие, а еще лучше содержимое файла нужной истории самостоятельно (не уверен, но кажется где то проскакивала инфа как проверить содержимое hst файла). Можно сделать иначе - перед запуском оптимизации или теста , запустить терминал с нужным скриптом для проверки истории.

p.s. сам столкнулся с этой проблемой при написании программы управления тестированием.

> Кстати, полезно бы иметь в параметрах командной строки терминала опцию, позволяющую принудительно закачивать историю той пары, на которой >идёт тестирование или оптимизация. DSL трафика не жалко, главное - положительный результат отработки терминала.

Согласен, вообще хотелось бы для работы с историей иметь побольше встроенных инструментов, например поиск и автоматическое "латание" дыр.

 
xeon:


и я про автоматиический запуск :-)

Я имел в виду что не нужно запускать терминал для того что бы проверить наличие истории, а проверять наличие, а еще лучше содержимое файла нужной истории самостоятельно (не уверен, но кажется где то проскакивала инфа как проверить содержимое hst файла). Можно сделать иначе - перед запуском оптимизации или теста , запустить терминал с нужным скриптом для проверки истории.

p.s. сам столкнулся с этой проблемой при написании программы управления тестированием.

> Кстати, полезно бы иметь в параметрах командной строки терминала опцию, позволяющую принудительно закачивать историю той пары, на которой >идёт тестирование или оптимизация. DSL трафика не жалко, главное - положительный результат отработки терминала.

Согласен, вообще хотелось бы для работы с историей иметь побольше встроенных инструментов, например поиск и автоматическое "латание" дыр.


Как Вы конкретно определяете наличие нужного .hst файла? В папке history у меня с десяток подпапок с именами серверов (Alpari-Demo, AlpariUK-Demo, FGB-Demo и т.д.), на которые хотя бы раз было подключение с данного терминала. Как определить, в какую из них нужно идти? Это зависит от коннекта на текущий счёт, его нужно сопоставить с нужной подпапкой. Далее, как я понимаю, нужно "копать" внутреннюю структкру .hst файла? Нужно же оценить, попал в него требуемый диапазон дат или нет. И даже не так, файл-то hst сформируется терминалом автоматически (с 210-го билда убрали флажок пересчёта, это делается автоматом), но при условии, что закачана история, наличие требуемых для этого данных нужно проверять по идее в "history\downloads", так? Первичен не .hst, а закачанные "сырые" данные.

 
chv:


>Как Вы конкретно определяете наличие нужного .hst файла? В папке history у меня с десяток подпапок с именами серверов (Alpari-Demo, AlpariUK->Demo, >FGB-Demo и т.д.), на которые хотя бы раз было подключение с данного терминала. Как определить, в какую из них нужно идти? Это зависит от коннекта >на текущий счёт, его нужно сопоставить с нужной подпапкой.

В моем случае я беру информацию о наименовании нужной папки истории при помощи (если есть соединение) AccountServer() (если соединения нет) то из файла terminal.ini параметр LastScanServer=

> Далее, как я понимаю, нужно "копать" внутреннюю структкру .hst файла? Нужно же оценить, попал в него требуемый диапазон дат или нет.

именно так

> И даже не так, файл-то hst сформируется терминалом автоматически (с 210-го билда убрали флажок пересчёта, это делается автоматом), но при >условии, что закачана история, наличие требуемых для этого данных нужно проверять по идее в "history\downloads", так? Первичен не .hst, а закачанные >"сырые" данные.

Данные из "history\downloads" терминал увидит только после выполнения операций по закачке и пересчету в "Архиве котировок"

поэтому достаточно проверить соответствующий файл hst

 
Всё достаточно подробно, спасибо за информацию. Нашёл тему "Заголовок .hst файла". Согласно заголовку hst файла выходит, что заголовок не содержит информации о периоде дат хранимых котировок (StartDate, EndDate). А период тестирования или оптимизации может не входить как подмножество в период хранимых в hst котировок.
Вы просто проверяете факт наличия hst файла с нужным именем на диске, не вдаваясь в суть этого вопроса с датами, или пробуете читать его до конца с выяснением диапазона дат?
 
chv:
Всё достаточно подробно, спасибо за информацию. Нашёл тему "Заголовок .hst файла". Согласно заголовку hst файла выходит, что заголовок не содержит информации о периоде дат хранимых котировок (StartDate, EndDate). А период тестирования или оптимизации может не входить как подмножество в период хранимых в hst котировок.
Вы просто проверяете факт наличия hst файла с нужным именем на диске, не вдаваясь в суть этого вопроса с датами, или пробуете читать его до конца с выяснением диапазона дат?


я проверяю наличие истории в скрипте этой функцией

int SpeedTstHist(string Symb, int Per,int start, int stop){
  //================================
  int Bar=iBars(Symb,Per)-1;
  int TStrt = iTime(Symb,Per,Bar);
  int TStop = iTime(Symb,Per,0);
  if(Bar<1){return(0);}                                      //Если нет баров по выбранному символу и периоду 
  if(TStrt>start){return(0);}                                //Если время начала истории по выбранному символу и периоду больше установленного
  if(TStop<stop){return(0);}                                 //Если время конца истории по выбранному символу и периоду меньше установленного
  
  return(1);
}
 
xeon:


я проверяю наличие истории в скрипте этой функцией

int SpeedTstHist(string Symb, int Per,int start, int stop){
  //================================
  int Bar=iBars(Symb,Per)-1;
  int TStrt = iTime(Symb,Per,Bar);
  int TStop = iTime(Symb,Per,0);
  if(Bar<1){return(0);}                                      //Если нет баров по выбранному символу и периоду 
  if(TStrt>start){return(0);}                                //Если время начала истории по выбранному символу и периоду больше установленного
  if(TStop<stop){return(0);}                                 //Если время конца истории по выбранному символу и периоду меньше установленного
  
  return(1);
}
xeon, не обманывайте себя. :)
Эта функция проверяет наличие 2-х котировок со смещением Bar и 0, а не наличие истории! :))))))))))))))))
 
.AG писал (а):
xeon, не обманывайте себя. :)
Эта функция проверяет наличие 2-х котировок со смещением Bar и 0, а не наличие истории! :))))))))))))))))


Если вы прочитаете название функции и вдумаетесь то поймете что эта функция предназначена для "быстрой проверки" начального и конечного баров истории. Для более детальной проверки у меня запускается функция int TestHistory(int SetHole, string Symb,int Per) которая проверяет еще и наличие дыр больше установленного уровня. Так что смею вас уверить я себя не обманываю :-) Обманываетесь как раз вы в силу недостаточной информированности и компетентности :-)
 
Меня больше интересуетСНАЧАЛА верная или неверная проверка, а потом уже быстрая или медленная. Вас, как видно, наоборот.:)
Так что насчёт моей недостаточной информированности и компетентности это вы верно подметили, постоянно приходится запускать функцию

hz ChtoZaFigniaTakaya(boolka Takaya, boolka Razetakaya). :)

Причина обращения: