Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
29.04.2025, 04:39:35
Начало Помощь Поиск Войти Регистрация
Новости: ООО «Скрин маркет системз», правообладатель программы «Система брокерского обслуживания «TRANSAQ» официально заявляет, что не ведет никакой деятельности в мессенджерах или социальных сетях. 
Подробности на нашем сайте  WWW.TRANSAQ.RU.

Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: При переходе с 1.8 на 1.15 похоже перестал работать file.close() « предыдущая тема следующая тема »
Страниц: 1 [2] 3 Печать
Автор Тема: При переходе с 1.8 на 1.15 похоже перестал работать file.close()  (Прочитано 18620 раз)
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #15 : 01.08.2012, 12:41:26 »

С неделю назад у Финама появилась304.01. Это то самое глобальное обновление? else if и file.close там исправлено? тройной запуск инита например нет.  правда теперь не 3 а 2 раза инит срабатывает при запуске скрипта
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #16 : 01.08.2012, 14:25:44 »

Да, ошибки закрыты. Многократный вызов инита буде еще править.
Записан
nxz
Full Member
***
Сообщений: 241


Просмотр профиля Email
« Ответ #17 : 02.08.2012, 18:43:47 »

Да, ошибки закрыты. Многократный вызов инита буде еще править.

Зато слетели все конфигурации >:(
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #18 : 03.08.2012, 12:32:41 »

В каком смысле слетели? В чем это выражается?
Записан
nxz
Full Member
***
Сообщений: 241


Просмотр профиля Email
« Ответ #19 : 03.08.2012, 12:38:23 »

До обновления в окнах графика были индикаторы, скрипт с роботом и прочие.
После обновления, графики есть, а индикаторы, линии и робот пропали.
При этом конфигурацию я не сохранял и не менял, дата у файлов недельной давности.
Пытаюсь загрузить конфигурацию, указываю какой файл выбрать и ничего не происходит.
Записан
nxz
Full Member
***
Сообщений: 241


Просмотр профиля Email
« Ответ #20 : 03.08.2012, 20:00:16 »

и пропали все скрипты
Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #21 : 13.02.2013, 23:51:48 »

Уважаемые разработчики, перешел пару дней на последнюю финамовскую версию с ATF 1.18, т.е. на 5.05.305.0.7

При запуске скрипта - по прежнему скрипт при запуске выполняет инит 2 раза ( для справки у меня 3 графика с автозапускаемыми скриптами).
Т.е. этот мегастарый глюк Вы пока победить не смогли...
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #22 : 14.02.2013, 10:16:38 »

ddd323, да, пока не победили. Но сейчас появились идеи как можно победить, так что в ATF 1.20 уже скорее всего победим.

Пока кстати можно бороться с багом штатными средствами - например, используя функцию onStopIndicator выполнять какую-то чистку/освобождение ресурсов. Перед тем как индикатор пересчитается, она будет позвана в любом случае.
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #23 : 14.02.2013, 10:47:09 »

ddd323, а вообще в чем именно возникает проблема с этой функцией init? Её многократный вызов связан с тем, что по приходу каждой порции истории скрипт пересчитывается заново, и на самом деле это не init много раз вызывается, а сам скрипт может рассчитываться несколько раз сначала.

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

Вы можете описать конкретнее к каким именно негативным последствиям в вашем коде приводит такое поведение? Возможно это можно решить как-то по-другому?
Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #24 : 14.02.2013, 23:18:11 »

Да нет никаких проблем. Были бы - давно уже бы громко ругался  ;)
Только лишние строчки во вспомогательных логах, да необходимость периодически обдумывать после очередных дописок в инит, что будет, если этот код выполнится несколько раз с обрывами исполнения предыдущего раза в произвольном месте.
Но ваша фраза "на самом деле это не init много раз вызывается, а сам скрипт может рассчитываться несколько раз сначала" настораживает... Означает ли она, что во время очередного запуска скрипта может выполнится не только инит, но еще и calc() или onHistoryCalculated() , а потом еще раз скрипт запустится и опять дойдет до исполнения calc()/onHistoryCalculated()   ???
Просто если речь только об ините, то Вы правы, поиметь большие проблемы наверное невозможно, т.к. возможность исполнять/снимать заявки из инита заблаговременно убрана ;) Но если до calc()/onHistoryCalculated()   может доходить - то я писать код с такой "устойчивостью" писать пока не умею.

Т.е. реальных проблем пока нет, и, наверное, (если речь только об ините!!!), раз у вас это не баг, а особенность работы в рамках текущей архитектуры - можно ограничится описанием этой особенности в документации и больше не париться. Ибо конечно всё, что по ошибочному восприятию инита как функции "запускающейся при запуске скрипта" хочется засунуть в инит, можно засунуть, например, в onHistoryCalculated() или выделить в калке/onNewCandle спецзону "первый после запуска скрипта запуск калке/onNewCandle" и поместить туда. Но если, опять же onHistoryCalculated()  может несколько раз подряд вызваться - это уже мегапроблема. (Вдруг я туда какие-либо счетчики с накоплением поставил. Зачем - не знаю - это я фантазирую. Или более реальное - кто-то, использующий сложные системы условных и активных заявок, понимая,  что может произойти разрыв с сервером скажем на 1 минуту, очевидно, захочет после запуска скрипта после восстановления соединения понять текущую ситуацию, загрузить таблицу заявок и сделок, понять, что исполнилось, по каким ценам, что нет, что нужно срочно снимать и пр.)
« Последнее редактирование: 14.02.2013, 23:19:53 от ddd323 » Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #25 : 15.02.2013, 10:04:30 »

Да, именно так. При приходе новой порции истории, скрипт выполняется целиком: вначале init(), затем calc() на каждую свечку и в конце onHistoryCalculated(). Если история при загрузке приходит в несколько порций, то это будет выполнено несколько раз.
Записан
aq2003
Jr. Member
**
Сообщений: 64


Просмотр профиля Email
« Ответ #26 : 15.02.2013, 13:25:55 »

Провел сегодня эксперимент на часовом графике Газпрома. Действительно, график грузится порциями. В начале каждой выполняется init(), в конце каждой выполняется onHistoryalculated(). Получилось 10 порций, то есть график пересчитывался от начала до конца 10 раз.

Открыто 13 графиков. На каждом индикатор на основе Зигзага и кое-что по мелочи - MACD, ATR, Volume и т.п. Сессия стартует 13 минут, в течение которых АРМ висит и ни ручкой, ни ножкой. Немного неудобно, особенно если торговоля уже началась.

Не понятно, почему так получается. Порции данных ведь формирует ваш же сервер. Почему они не договорятся с АРМом, когда история по-настоящему закончилась?
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #27 : 15.02.2013, 15:27:19 »

Да, сейчас посмотрели, в принципе это можно переделать. Сделаем.
Записан
ddd323
Sr. Member
****
Сообщений: 257


Просмотр профиля Email
« Ответ #28 : 17.02.2013, 14:46:46 »

После того как сделаете - onHistoryCalculated перестанет вызываться несколько раз при запуске скрипта?
Просто на практике точно может возникать необходимость делать в onHistoryCalculated торговые операции (по результатам анализа текущей ситуации после разрыва соединения), и, если эта особенность многократного вызова сохранится - придется геммороится с сохранением в файл флага, позволяющего определить, что это не первый запуск onHistoryCalculated до первого вызова onNewCandle (чего не очень хочется).
Записан
Heller
Разработчики
Hero Member
*****
Сообщений: 1277


Просмотр профиля Email
« Ответ #29 : 18.02.2013, 09:06:39 »

Да, когда сделаем, всё будет вызываться только один раз.

Кстати, флаг можно сохранять не в файл - использование переменных окружения удобнее на мой взгляд.
Записан
Страниц: 1 [2] 3 Печать 
Transaq  |  СБО "Transaq"  |  Подсистема ATF  |  Topic: При переходе с 1.8 на 1.15 похоже перестал работать file.close() « предыдущая тема следующая тема »
Перейти в:  


Войти

Powered by MySQL Powered by PHP Powered by SMF 2.0.10 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!