Transaq
СБО "Transaq" => Подсистема ATF => Topic started by: nxz on 01.07.2011, 07:56:21
-
Обновил Интру до версии 282, заметил новый пункт меню "Окружение ATF". Что это за окно и как им пользоваться.
-
Посмотрите здесь: http://www.transaq.ru/docs/atf/functions следующие функции: onEnvEvent, setEnvVariable, getEnvVariable, postEnvEvent. Это собственно все связано с этим окном.
Руководство как пользоваться я пишу в данный момент. Пока если в двух словах, то идея в том, что теперь в ATF есть "совсем глобальные" переменные, которые называются окружением. Вы можете устанавливать их из любого скрипта и читать из любого скрипта, а так же генерировать какие-то события, которые будут восприняты всеми работающими скриптами.
Это позволяет решать на простом уровне вопрос обмена данными между разными скриптами. Например, вы хотите, чтобы если RTSI пересечет свою скользящую среднюю вниз, выключить всех роботов, которые работают. Тогда вы можете на пересечение линии вызвать в одном скрипте postEnvEvent("shutdownall"), и в каждом скрипте сработает функция onEnvEvent(var env), где env будет содержать строку "shutdownall" - по ней вы можете определить что вам стоит прекратить выполнять торговые операции.
Ну или например вы хотите во всех скриптахзнать текущее значение индекса ММВБ. Тогда на график индекса ММВБ вы можете положить такой индикатор:
function calc()
{
setEnvVariable("micex", close)
}
А в других скриптах вы сможете получать актуальное значение индекса ММВБ функцией getEnvVariable("micex").
-
Обновил документацию - теперь добавлено описание Окружения ATF и функций для отслеживания пересечений.
-
Дабы не плодить темы, напишу сюда.
Обратил внимание на один занятный момент, связанный с окружением ATF. А именно:
У меня были какие то самописные индикаторы/роботы, в работе которых используется передача параметров/переменных через окружение ATF. Довольно активно.
Затем эти индикаторы/роботы были удалены с графиков, да и графики были закрыты.
Но! Открываю окно Окружение ATF и вижу там занчения соответствующих парамеротров, живущих своей собственной жизнью. Естественно Транзак неоднократно перезагружался. А они бессмертные прямо какие то. Пока не удалишь их руками, живее всех живых.
Уважаемые разработчики, это нормальное поведение? Так и задумывалось?
TRANSAQ (боевой), 5.05.305.07 rev.51 ATF 1.18
-
Дабы не плодить темы, напишу сюда.
Обратил внимание на один занятный момент, связанный с окружением ATF. А именно:
У меня были какие то самописные индикаторы/роботы, в работе которых используется передача параметров/переменных через окружение ATF. Довольно активно.
Затем эти индикаторы/роботы были удалены с графиков, да и графики были закрыты.
Но! Открываю окно Окружение ATF и вижу там занчения соответствующих парамеротров, живущих своей собственной жизнью. Естественно Транзак неоднократно перезагружался. А они бессмертные прямо какие то. Пока не удалишь их руками, живее всех живых.
Уважаемые разработчики, это нормальное поведение? Так и задумывалось?
TRANSAQ (боевой), 5.05.305.07 rev.51 ATF 1.18
Я тоже недавно столкнулся с таким явлением.
Удивился.
Удалял руками поштучно.
Их там было много. Пожалел о том, что нельзя было удалить сразу все. Пришлось к каждой переменной применить индивидуальный подход :)
-
Да, это так и задумано - переменные окружения живут своей долгой и отдельной жизнью, никуда не удаляясь без отдельной просьбы пользователя.
То что их нельзя удобно всех сразу удалить - это конечно недочет. Сделаем.
-
То что их нельзя удобно всех сразу удалить - это конечно недочет. Сделаем.
Тогда уж и еще сюда напишу о тех "мелочах", которые немного мешают наслаждаться всеми прелестями ATF Транзака:
1. Когда "бросаем" на график робота, первым делом появляется маленькое окошко, в котором можно изменять значения переменных типа extern. Хотелось бы, чтобы размеры этого окошка можно было изменять, ну или хотя бы пусть уж оно с самого начала будет покрупнее.
2. Когда тестировщик выводит окно с результатами, очень хочется скопировать результаты и вставить куда-нибудь в "Блокнот" или Word, но скопировать невозможно.
3. Когда из скрипта меняем цвет одной из полосок гистограммы, все остальные полоски сразу же изменяют свой цвет на черный.
Все вышеперечисленное, конечно, не смертельно и можно потерпеть, но это все-таки печалька :)
-
Да, это так и задумано
Ок. Спасибо за ответ. Буду иметь ввиду. :)
-
Олег, по третьему пункту не очень понятно. Можете описать подробнее что происходит?
-
Олег, по третьему пункту не очень понятно. Можете описать подробнее что происходит?
На самом деле, я думал, что это уже давно и хорошо известный глюк.
Я припоминаю (хотя очень смутно), что где-то когда-то около года тому назад на форуме уже читал чью-то жалобу по этой проблеме. Но мне-то самому это тогда совсем не интересно было (по известным причинам), потому и пропустил мимо ушей.
А недавно столкнулся с этим явлением и сразу подумал, ага, это же та самая проблема и ее до сих пор не устранили.
Короче говоря, проблема состоит в следующем.
Вот, допустим у нас в коде имеется вот такой оператор:
setHistColor(RGB(128, 0, 0));
Разумеется параметры функции RGB могут быть любыми.
А к этому моменту наша гистограммка имеет приятный ненавязчивый серенький цвет.
Но вот строчка с этим оператором пройдена и бац...
Та свечка, к которой применена эта команда (в данном примере, это текущая, но при команде для свечек со смещением результат тот же самый), становится именно того цвета, который указан функцией RGB. А вот все остальные свечки этой гистограммы сразу же изменяют свой цвет на черный. А на черном фоне другие линии уже не так отчетливо просматриваются, как на сером.
Я и говорю, это не смертельно, но все-таки печалька :)
-
Подтвердился диагноз-то? :)
Или я чего не так делаю?
-
Это не баг, это скорее неочевидное на первый взгляд поведение, которое на самом деле вполне логично.
Гистограммы рисуются в двух режимах - либо это одноцветная/красно-зеленая гистограмма, где цвета определяются настройками отображения, либо же определение цвета каждого отдельного бара задаёт пользователь. В последнем случае цвет по умолчанию - черный (логичное нулевое значение RGB(0,0,0)). То есть как только setHistColor, графики начинают при отрисовке брать значения цветов просто из другого места и политика в отношении цвета меняется.
-
Это не баг, это скорее неочевидное на первый взгляд поведение, которое на самом деле вполне логично.
Гистограммы рисуются в двух режимах - либо это одноцветная/красно-зеленая гистограмма, где цвета определяются настройками отображения, либо же определение цвета каждого отдельного бара задаёт пользователь. В последнем случае цвет по умолчанию - черный (логичное нулевое значение RGB(0,0,0)). То есть как только setHistColor, графики начинают при отрисовке брать значения цветов просто из другого места и политика в отношении цвета меняется.
Ну а как же тогда быть-то?
Вот допустим, мне надо, чтобы вся гистограмма была серенькая (на таком фоне хорошо все другие линии просматриваются), а некоторые бары были нужного мне цвета.
И вот я раскрашиваю один бар в нужный мне цвет, а тут бац... все остальные бары сменили вполне устраивающий меня серенький цвет на совершенно неудобный черный (на таком фоне другие линии просматривать неудобно).
Ну и как мне вернуть всем несанкционированно перекрасившимся барам их исходную окраску? Единственное, что приходит на ум это пройтись по ним в цикле.
И так надо поступать при смене цвета каждого бара?
Печалька :)
О, я придумал!
Сделайте цветом гистограммы по умолчанию (в следующих версиях) серенький цвет (silver hist), и тогда это всех устроит. А черный это весьма и весьма неудобно.
Да к тому же, еще и пугающе как-то. Было все такое приятное серенькое, вдруг бац... полный траур, как будто конец света уже наступил :)
-
О, я придумал!
Сделайте цветом гистограммы по умолчанию (в следующих версиях) серенький цвет (silver hist), и тогда это всех устроит.
А если в начале скрипта задать:
#line 0 hist silver
то не будет ли он (silver) цветом по умолчанию?
-
А если в начале скрипта задать:
#line 0 hist silver
то не будет ли он (silver) цветом по умолчанию?
Да я ж так и делал.
Оно таким и было до того момента, как мой скрипт одну полосочку изменил.
И оно сразу бац... и усё черное :)
Кроме той самой полосочки, которую изменил :)
-
Единственное, что приходит на ум это пройтись по ним в цикле.
Ну на самом-то деле достаточно в начале каждого calc() просто выставить setHistColor().
-
Сейчас попробовал ваш вариант в Интре вот на таком простеньком скрипте:
#line 0 hist silver
#line 1 solid blue
#line 2 solid red
function calc()
{
setHistColor(RGB(200, 200, 200));
line[0]=close;
line[1]=MovAvg(ind_ema, 4, line[0]);
line[2]=MovAvg(ind_ema, 2, line[0]);
if (line[2] > line[1])
{
setHistColor(RGB(255, 0, 0));
}
}
Ну да, действительно работает.
Как говорится, базару нет :)
Этот танец с бубном, действительно, помогает :)
Это если смотреть с житейской точки зрения.
Ну а если взглянуть на это с точки зрения хорошего стиля программирования?
Не слишком ли ресурсозатратно? Ведь в часы пик функция calc() вызывается огромное число раз.
Гораздо проще было бы установить цветом по умолчанию серебряночку и сразу усе довольны.
Гистограммы же почти всегда рисуются именно таким цветом.
Все остальные линии на таком фоне смотрятся очень отчетливо.
Да и пользователю хлопот будет меньше.
В смысле, с бубном плясать не будет необходимости.
-
Ну делать именно серебряный не правильно, потому что пользователь может любой цвет использовать в качестве умолчательного. Насчет использования цвета по умолчанию, тут на самом деле хорошая идея. Я посмотрю в код, если это окажется не сложно доделать, то доделаю.
-
Ну делать именно серебряный не правильно, потому что пользователь может любой цвет использовать в качестве умолчательного. Насчет использования цвета по умолчанию, тут на самом деле хорошая идея. Я посмотрю в код, если это окажется не сложно доделать, то доделаю.
Хорошо.
-
Сейчас как раз пляшу с вашим бубном в боевых условиях.
Ну как бы хорошо было, если бы гистограммка всегда оставалась серенькой, если мы не меняем конкретную полосочку.
Ну зачем она черной-то становится?!
Зачем надо с бубном плясать на ровном месте?!
Ведь и без того немало танцев с бубном приходится исполнять в каждом скрипте.
Один танец, другой танец, не мудрено же в них запутаться.
Печаль :(
На этот пост можно не отвечать, это просто "крик души". Вырвалось.